Arduino - Play Piezo



spela Piezo!
Syftet med detta projekt är att generera musik genom rörelse tack vare accelerometrar.

-1 3-axlig accelerometer
-1 arduino kort
-1 högtalare
-1 song kunna utmana skit ljudet på högtalaren

Koden är grundläggande: Låt rytmen implementeras och före varje tidssteg, handsken sinnen gravitation riktning och väljer en av de tre anteckningarna av låten.

Koden är nedan.

Du kan titta på video på Youtube.

Få nyheter och uppdateringar på min sida. För närvarande jag samlar in medel mot Cancer, donera gärna!

/*
December 28 2012 - Sebastien RUBRECHT
Försök att spela en cool musik med en skit talare, hoppas att den "svala" kompenserar "skit".
Musiken är "where is my mind" från The Pixies, vilket är verkligen lätt att spela.
*/

#define AUTO 0 / / automatisk läge: om 1, musiken spelas automatiskt.

Pins
CONST int analogInPinX = 0; Analog ingång pin som Accelerometerns första pin är kopplad till
CONST int analogInPinY = 1; Analog ingång pin som den Accelerometer andra pin är kopplad till
CONST int analogInPinZ = 2; Analog ingång pin som den Accelerometer tredje pin är kopplad till
CONST int tone1Pin = 9; tonar utsignal

CONST int highPin1 = 11; 5 V näring
CONST int highPin2 = 12; 5 V näring
CONST int lowPin1 = 5; grund för en av de 2 accelerometer gnd.
CONST int lowPin2 = 6; grund för en av de 2 accelerometer gnd.

CONST int ledOKPinGnd = 8; mark för OK Pin
CONST int ledOKPinH = 10; 5 V näring för OK Pin
CONST int ledNOKPinGnd = 2; mark för NOK Pin
CONST int ledNOKPinH = 4; 5 V näring för NOK Pin

konstanta värden
CONST float freq_rediese0 = 38.9;//frequency av en skarp Re i Hz, för octave 0
CONST float freq_mi0 = 41.2;//frequency en mi i Hz, för octave 0
CONST float freq_soldiese0 = 51.9;//frequency av en skarp Sol i Hz, för octave 0

konstant användardefinierade parametrar
CONST int octave = 4; //octave nummer. Var försiktig, under 2(low) och över 6 (akut), det blir mycket ful
CONST int temps = 380; //number millisekunder för 1 Musiknoteringen. 380 är riktiga rytmen, men börjar med 600 är lättare att lära

variabler
flyta freq_rediese = freq_rediese0 * pow (2, oktav); frekvensen av en skarp Re i Hz, för den balanserade Oktaven
flyta freq_mi = freq_mi0 * pow (2, oktav), //frequency för en Mi i Hz, för den balanserade Oktaven
flyta freq_soldiese = freq_soldiese0 * pow (2, oktav), //frequency av en skarp Sol i Hz, för den balanserade Oktaven

int noire; //time crotchet anteckningen
int croche; //temps av en åttondel noterar
float frekvens; //frequency spelade

int sensorValue1; värdet läsa från den Accelerometer första stift
int sensorValue2; värdet läsa från den Accelerometer andra stift
int sensorValue3; värdet läsa från den Accelerometer andra stift

void setup() {
pinMode (tone1Pin, produktionen);

pinMode (highPin1, produktionen);
pinMode (highPin2, produktionen);
pinMode (lowPin1, produktionen);
pinMode (lowPin2, produktionen);

pinMode (ledOKPinGnd, produktionen);
pinMode (ledOKPinH, produktionen);
pinMode (ledNOKPinGnd, produktionen);
pinMode (ledNOKPinH, produktionen);

digitalWrite (lowPin1, låg);
digitalWrite (lowPin2, låg);
digitalWrite (highPin1, hög);
digitalWrite (highPin2, hög);

digitalWrite (ledOKPinGnd, låg);
digitalWrite (ledNOKPinGnd, låg);
}

void loop() {
Noire = temps;
croche = temps/2;

"where is my mind" är 4 * (1 mi + 1sol #); 2 * (1Beträffande # + 1sol #); 2 * (1 mi + 1/2 mi + 1 / 2re #).
för (int j = 0; j < 4; j ++) //4 * (1 mi + 1sol #)
{
frekvens = acqNote(freq_mi); får riktning mot högre acceleration från sensorn och returnerar assofrequency. Den teoretiska bra är ett Mi.
Obs (frekvens, noire); / / spelar frekvensen tillbaka på föregående rad under 1 "noire" tid.
frekvens = acqNote(freq_soldiese);
Obs (frekvens, noire);
}
för (int j = 0; j < 2; j ++) //2 * (1Beträffande # + 1sol #);
{
frekvens = acqNote(freq_rediese);
Obs (frekvens, noire);
frekvens = acqNote(freq_soldiese);
Obs (frekvens, noire);
}
för (int j = 0; j < 2; j ++) / / 2 * (1 mi + 1/2 mi + 1 / 2re #)
{
frekvens = acqNote(freq_mi);
Obs (frekvens, noire);
frekvens = acqNote(freq_mi);
Obs (frekvens, croche);
frekvens = acqNote(freq_rediese);
Obs (frekvens, croche);
}
}

void note (flyta freq, int längd)
{
Funktionen "note" spelar en anteckning på frekvens "freq" (Hz) under "varaktighet" (ms)

konvertering av frekvensen i en semi-period
dubbla semiperiod_micros =1/(double(freq)) * 1000000 * 0,5;

lång duree=long(duration);
osignerade långa en = millis();
medan (millis() < (a + duree))
{
digitalWrite (tone1Pin, hög);
delayMicroseconds(int(semiperiod_micros));
digitalWrite (tone1Pin, låg);
delayMicroseconds(int(semiperiod_micros));
}
För att avskilja anteckningar (det låter bättre), små förseningar.
om (varaktighet > 300)
{delay(15);}
annat
{delay(7);}
}

flyta acqNote(float freq_ref) {

"acqNote" blir accelerationen i 3 riktningar från sensorn, väljs den högsta och returnerar den associerade frekvensen.
Om det matchar den teoretiska bra frekvensen "freq_ref", den växlar på gröna led, annars röda ledde.

float freq;

läser båda analoga indatavärdena:
sensorValue1 = analogRead(analogInPinX);
sensorValue2 = analogRead(analogInPinY);
sensorValue3 = analogRead(analogInPinZ);

Returnerar index för max 3 värden
om ((max(max(sensorValue1,sensorValue2),sensorValue3))==sensorValue1) {
Freq = freq_rediese;
}
annars om ((max(max(sensorValue1,sensorValue2),sensorValue3))==sensorValue2) {
Freq = freq_mi;
}
annat {
Freq = freq_soldiese;
}

växlar på gröna led om frekvensen är den teoretiska bra en, annars den röda.
om (freq == freq_ref) {
digitalWrite(ledOKPinH,HIGH);
digitalWrite(ledNOKPinH,LOW);
}
annat {
digitalWrite(ledOKPinH,LOW);
digitalWrite(ledNOKPinH,HIGH);
}
om (AUTO) {
återvända freq_ref;
}
annat {
returnera freq;
}

};

Relaterade Ämnen

Ta larm använder arduino + LDR + piezo Summer

Detta lilla projekt kommer att lära dig, hur man gör en enkel Grab larm med en LDR (light beroende motstånd). När du försöker flytta din hand över LDR, finns det en högt larm som går på och alarmet stängs av så fort du rör handen från LDR. LDR funger...

Arduino playing game inte kliva på det vita blocket"

Hej alla!I denna tutorial ska jag visa dig min snabb-made robot som kan spela spel på telefonen. Jag gjorde detta för skolan bara för demonstration, detta projekt behöver fortfarande uppgraderingar i program och hårdvara, det har några buggar, exempl...

Arduino spelar Piano plattor

Någonsin undrat om telefonen kan spela spel av sig själv. Ja, det är möjligt. Du kan bygga en krets för att spela Piano plattor på din smartphone.Videon visar demonstrationen av projektet.Steg 1: Komponenter som krävs Och kretsen kan byggas med enkla...

Arduino spelar Stick hjälte

Är du en gaming freak? Vill toppa high score-listan? Om ditt svar är ja är du på rätt plats.Kan allt detta uppnås med dig sitter sysslolös och telefonen gör alla pratar? Ja det kan göras och vi visar dig hur. Du kan se den video demonstrationen ovan....

Arduino, sensorer och MIDI-

Nu när du är igång med hjälp av Arduinos in- och utgångar, ger detta Instructable dig allt du behöver för att komma igång med sensorer för att utlösa MIDI-noter från Arduino. Detta inlägg är den sista delen i en serie workshops jag ledde på Kvinnors...

Arduino Tutorials (del 3-17 Tutorial Pack)

Detta är Arduino Tutorial Pack Del3.Den 1: a delen finns här:Del 2 här:Till skillnad från andra tutorials här brukar jag ge någon bakgrund i teorin hur det fungerar. Den är inriktad på resultatet hur uppnå det - att göra mätningar från massor av sens...

Security alarm Laser detektor eller sensor för arduino nybörjare

Hej, killar idag mig och du alla kommer att göra en laser detektor med en Arduino och piezo.Så hur fungerar det. När lasern är blockerad från chefen för modulen piezo kommerlarm upp.så låt oss börja. :):):):):):):):):):):):):):):):):):):):):)!!!!!!!!...

Laser harpa med 123D kretsar

Njut av elektronisk design? Njut av 3D-utskrifter? Njut av musik? Ok inga problem. Låt oss göra ett enkelt projekt, och njuta av dem alla.Vi gjorde detta som sätt att demo några saker du kan göra med våra appar, 123D kretsar och 123D Design: konstrue...

Emotionella vokabulär spela matta

[Jag känner många saker under dagen] Detta är en pedagogisk lek matta för barn från åldrarna mellan 2 och 7 att spela och utöka deras emotionella vokabulär av framkalla känslor av nyfikenhet, kul och kärlek till lärande samtidigt som de skapar tankar...

Låg kostnad vatten flöda Sensor och omgivande Display

vatten är en värdefull resurs. Miljontals människor har inte tillgång till rent dricksvatten, och upp till 4000 barn dö av vatten som är förorenat sjukdomar varje dag. Ändå, vi fortsätter att vara slöseri med våra resurser. Det övergripande målet med...

Tryck aktiveras kram-detektor (PAD)

vid försök att utforma våra Trycket aktiveras kram-detektor eller PAD, vi tillbringade mycket tid med tanke på vår teknik inom sfären av David Phillips artikel om ubiquitous computing (Phillips, David. "Ubiquitous Computing, rumslighet och konstrukti...

Arduino DRV 2667 haptiska Piezo föraren kontroll

Under ett projekt som jag jobbade på för min Masters på RCA - Innovation Design Engineering, letade jag efter ett sätt att kontrollera Piezo givare för att skapa avancerade haptisk återkoppling och effekter.Jag hittade ut TI har en mängd olika haptis...

Plug And Play remote relay (hallon och Arduino och läsa sensorer)

Målet var att skapa användarvänliga heltäckande kontroll över eluttag med relä, inklusive (och kanske främst) Web GUI och automation.Som alltid försöker jag använda befintliga lösningar och förlita sig så lite som möjligt på specifika plattformar.En...

Hur man använder en Piezo Summer att göra ljud med Arduino

Om du har en Arduino, kanske du har stött på ett projekt som krävs för styrelsen att göra ljud. En av de billigaste och enklaste sätten att åstadkomma detta är att använda en Piezo Summer.Piezo Buzzers är extremt enkla att tråd, och har mycket enkel...

Hjälp med min arduino projekt. (2, 7 segment med piezo summern och relä)

Hej, jag behöver lite hjälp med min arduino projekt.Jag har 2, 7 segment visar vilka nedräkning från 20 till noll sv sedan piezo Summer beebs ett tag.Min fråga är:Jag vill ha ett relä påslagen för 20 sekunder samtidigt med 7 segment nedräkningen.så o...

Hur man kör en Piezo med en Arduino

Hej alla! Jag kämpade med att göra en högljudd piezo Summer från 5volts. Jag kom på det. Det är super enkelt och lika högt som din brandvarnare. Om du har kämpat med detta problem... ge dig själv en paus... finns det noll bra information på internet....

Hur man använder en Buzzer (eller piezo speaker) - Arduino handledning

I denna tutorial får du lära dig att använda en Summerton eller piezo speaker med Arduino. Buzzers kan hittas i larmanordningar, datorer, timers och bekräftelse av användarindata som ett musklick eller knapptryckning.Du kommer också lära dig hur du a...

Piezo, PIR motion sensor alla anslutna till en arduino

har du folk ständigt stressa dig? Så försök att använda detta så du vet när de kommer.Steg 1: Få dina delar1. Arduino uno2. vissa anslutande ledningar3. skärbräda4. Piezo summern5. LED6. kod (för arduino, gå till göra some.com för kod.)Steg 2: bygga...

Arduino Tutorial Bundle.: Arduino experimenterande Kit:. (ARDX)

Intresserad av att göra snyggt projekt med en Arduino men inte säker på var du ska börja?Här är ett lätt att följa guide på hur man ansluta och använda en uppsjö av elektroniska komponenter.(skamlös plugg)Vill du göra allt?Komplett kit med komponente...