Ultrasonic Piano (3 / 6 steg)

Steg 3: Programmering av Edison



Detta projekt använder en kombination av Arduino för övervakning av sensorer och Edison's Linux-miljö för att spela ljud.

Använda FTP för att skapa en mapp från roten kallas Piano - och ladda upp ett prov som du vill att varje sensor att spela - anteckningarna kan vara att spela en samtidigt - så välj anteckningar från samma instrument - eller inte - ditt samtal...

Dessa gratis piano prover användes för ljud:

www.Freesound.org/People/pinkyfinger/Packs/4409

All kod programmeras med hjälp av Arduino IDE

Koden kan hittas här: UltrasonicPiano på GitHub

Koden är följande:

#define HAND_MUST_MOVE_DISTANCE 200 //in oss ping tid i tar vi som något nära
#define MAXECHOTIME 1000 / / beräkna den maximala distansen i oss (ingen avrundning).
#define DEBOUNCEmS 500 / / millsec innan du kan spela en andra anmärkning på nyckeln
#define MIN_DISTANCE 2 / under denna tid i oss medel antingen ingenting eller för nära - nära

#define TRIGPIN 13 / / alla sonics ansluten till en PIN-kod

#define MAX_SENSOR_DELAY 500 / / maximalt oss det tar för sensorn att starta ping

#define SONAR_NUM 9 / / antal detektorer
#define SOUND_BANK_PIN 12 / / knappen Växla ljud banker

Stiften ekolodet är kopplad till
int sonar [SONAR_NUM] =
{
2, 3, 4, 5, 6, 7, 8, 9, 10
};

int resultatet [SONAR_NUM];
int previousHits [SONAR_NUM];
lång lasttime [SONAR_NUM];
int soundBank = låg; Två ljud bank val - gitarr och piano

9 prover (måste vara wav om du inte har installerat valfri mp3 bibliotek på edison)
Några gratis prover kan jag här: www.freesound.org/people/pinkyfinger/packs/4409
WAV-filer behöver placeras i mappar på edison (Använd FTP) som anges nedan.
Den avslutande & är viktigt
char * ljud [] =
{
"aplay /home/root/piano/00_piano-g.wav &",
"aplay /home/root/piano/01_piano-a.wav &",
"aplay /home/root/piano/03_piano-b.wav &",
"aplay /home/root/piano/05_piano-c.wav &",
"aplay /home/root/piano/06_piano-d.wav &",
"aplay /home/root/piano/08_piano-e.wav &",
"aplay /home/root/piano/09_piano-f.wav &",
"aplay /home/root/piano/10_piano-f.wav &",
"aplay /home/root/piano/11_piano-g.wav &"
};

9 alternativa prover
char * sounds2 [] =
{
"aplay /home/root/guitar/1.e.wav &",
"aplay /home/root/guitar/2.f.wav &",
"aplay /home/root/guitar/3.g.wav &",
"aplay /home/root/guitar/4.a.wav &",
"aplay /home/root/guitar/5.b.wav &",
"aplay /home/root/guitar/6.d.wav &",
"aplay /home/root/guitar/7.e2.wav &",
"aplay /home/root/guitar/8.f2.wav &",
"aplay /home/root/guitar/9.b.wav &"
};

void setup() {
Serial.BEGIN(115200);
Serial.println("Start");

för (int n = 0; n < SONAR_NUM; n ++)
{//Out tid börjar
int ECHOPIN = ekolod [n];
pinMode (ECHOPIN, INPUT_FAST);
}
pinMode (TRIGPIN, OUTPUT_FAST);
pinMode(12,INPUT_PULLUP);
}

void ping()
{
för (int n = 0; n < SONAR_NUM; n ++)
resultatet [n] = 0; 0 för inget resultat

digitalWrite (TRIGPIN, låg);
delayMicroseconds(2); Vänta tills pin att gå lågt. (prova 4 om har problem)
digitalWrite (TRIGPIN, hög); Skicka en ping.
delayMicroseconds(10); Vänta för sensorn att läsa den. Sensor specifikationer säga vänta 10uS.
digitalWrite(TRIGPIN,LOW); Ställa in avtryckaren pin tillbaka till låg.

lång timeoutTime;

vänta på ping att starta
#ifdef true
Enkelt sätt
delayMicroseconds(500); de flesta detektorer ta om 450uS till 500uS
SRF06 kan ta mycket mycket längre.
#else
använda detta för de långsammare sonar detektorerna
timeoutTime = micros() + MAXECHOTIME + MAX_SENSOR_DELAY;

för (int n = 0; n < SONAR_NUM; n ++)
{
int ECHOPIN = ekolod [n];
Tidigare ping klar inte, avbryta.
IF(digitalRead(ECHOPIN) == hög)
resultatet [n] = -1; "Inget svar"
}

för (int n = 0; n < SONAR_NUM; n ++)
{
om (result[n]==0)
{
int ECHOPIN = ekolod [n];
Vänta på ping att starta.
While(digitalRead(ECHOPIN) == låg)
om (micros() > timeoutTime)
{
resultatet [n] = -2; "Alltför länge till Start"
bryta;
}
}
}
#endif

långa startTime = micros();
timeoutTime = startTime + MAXECHOTIME; Ping började, timeout.

booleska bExit;
göra
{
bExit = sant;
för (int n = 0; n < SONAR_NUM; n ++)
{
om (result[n]==0)
{
int ECHOPIN = ekolod [n];
IF(digitalRead(ECHOPIN) == låg) / / ping slut echo
resultatet [n] = (int)((micros() - startTime) +. 05);
Dont bry calc avstånd - ping är tillräckligt för oss.

annars om (micros() > timeoutTime)
resultatet [n] = -3;
spela in fel om vi bortom set maxavståndet.
bExit = false;
}
}
} while(bExit == false);
}

void loop()
{
ping();

Allt gjort - display
för (int n = 0; n < SONAR_NUM; n ++)
{
flyta dist = resultat [n]; i tid

om (dist < = MIN_DISTANCE)
{//person är för nära eller har gått bort
previousHits [n] = dist; återställa
fortsätta;
}

int tidigare = previousHits [n];
om (abs (dist - tidigare) > HAND_MUST_MOVE_DISTANCE)
{//New nedtryckt!
previousHits [n] = dist;

länge nu = millis();
om ((nu - lasttime[n]) > DEBOUNCEmS) //debounce 333mS
{
char * ljud = soundBank == låg? ljud [n]: sounds2 [n];
Serial.println(Sound);
system(Sound);
}
lasttime [n] = nu;
}
}

om (digitalRead(12) == låg)
{//Switch till andra band - har settle tid.
soundBank =! soundBank;
Serial.Print(soundBank);
fördröjning (1000); //debounce
}

Delay(20);
}

Se Steg
Relaterade Ämnen

Ett Piano med banan som tangentbord som drivs av pcDuino

I den här guiden kommer vi detalj hur beröring nyckel USB sköld och pcDuino för att genomföra ett piano med banan som tangentbord.Steg 1: Steg 1: Hur att simulera på tangentbordet?(1) för att injicera tangenttryckningar, behöver vi mappa touch händel...

Antikt Piano hylla

Jag hade en gammal Steger & Sons piano från början av 1900 som var helt ur kommissionen. Jag tog de fyra främsta 4 X 4 inlägg ur det år sedan för att bygga en prototyp plattform säng, och jag var kvar med en hel del andra bitar liggandes. Om den del...

8 bit Mario Bros Piano

Detta instructable skapades enlighet projektet kravet på Makecourse vid University of South Florida (www.makecourse.com). Mitt namn är Maria Fontiveros och beslöt jag att göra ett piano från 12 olika mynt från 12 olika länder. Jag ville ha detta pian...

Afrikanska Kalimba (tumme Piano)

varje del av en kalimba, mbira, kaffir piano etc. är en separat idiofon, och rent orkestrala instrumentet som helhet hör hemma i baren slagverk familj (speciellt: lamellophones). Dessutom används tummen inte uteslutande, eftersom vissa instrument spe...

Nybörjarguide till att spela Piano

STEG 1 Varför spela Piano?STEG 2 titta på PianoSTEG 3 hem nycklar och A-GSTEG 4 vad är skalor?STEG 5 behandlingen musik: IntroduktionSTEG 6 rader och utrymmenSTEG 7 skrivet Piano musik och rytmSTEG 8 nycklar och tonarterSTEG 9 få det tillsammans med...

Elektriska kokos tumme Piano

om du är som mig och varje gång du spricka öppna en kokosnöt du hitta skal bara för cool för att kasta ut sedan detta instructable är för dig. Idén att göra en kokosnöt skal tumme piano kom till mig en eftermiddag medan jag försökte komma med några s...

Hur man bygger ett ackord på Piano

Steg 1: Bygga ett ackord på piano är mycket intressant. Massor av människor tror dess utmanande, men inte om du öva! Först behöver du naturligtvis en piano eller tangentbordet för att spela på.Steg 2: Nästa steg är att hitta en nyckel att bygga din a...

Femte Harmony - jag är kär i en Monster - Piano handledning

Hemsida - http://www.OnlinePianist.comiPad & iPhone app - http://bit.ly/1if4XA7Android app - http://bit.ly/1GtO2jLBegära en låt - http://www.facebook.com/OnlinePianistLär dig hur man spelar jag i kärlek med ett Monster av Femte Harmony Hotel Transsyl...

Arduino Cap-känsla luften Piano

jag har nyligen fått min leverans av 10 buzzers beställde jag ungefär en månad sedan, så när jag fick dem jag var ivrig att göra något roligt med dem, så jag tittade runt lite och sökte efter vad man ska göra med dem, och genom att spendera lite tid...

Arduino Ultrasonic Sensor

Detta är exempel att använda ultrasonic sensor (HC-SR04) i arduino.Steg 1: Del lista:Arduino UNO R3 styrelseHC-SR04 Ultrasonic SensorRöd LEDGrön LED560 ohm (grön, blå, brun, guld) motståndHalfBreadboardsladdarSteg 2: Ansluta komponenterna Steg 3: Skr...

7 steg för att lära sig spela Piano

Många människor som vill lära sig spela piano avskräcks av tanken på att spendera långa, tråkiga timmar att lära sig noter. Om du menar allvar om att lära sig spela piano, är det första du vill behov till gör sätta dessa negativa tankar bakom och bör...

Adele - allt jag ber - Piano handledning

Lär dig hur man spelar "Alla I fråga" på piano!Besök OnlinePianist - https://goo.gl/oGv9FbBegära en låt - http://bit.ly/1nSXjAuOnlinePianist iOS App - http://bit.ly/1nSXjAuOnlinePianist Android App - http://bit.ly/1nSXjAu...

Adele - Hej - Piano handledning + blad

Hemsida - http://www.OnlinePianist.comiPad & iPhone app - http://bit.ly/1if4XA7Android app - http://bit.ly/1if4XA7Begära en låt - http://bit.ly/1if4XA7Lära sig spela Hej av Adele på piano med enda animerade piano handledning online! För den fullständ...

Adele - kärlek i mörkret - Piano handledning

Lär dig hur man spelar "Love in the Dark" på piano!Besök OnlinePianist - https://goo.gl/oGv9FbBegära en låt - http://bit.ly/1nSXjAuOnlinePianist iOS App - http://bit.ly/1nSXjAuOnlinePianist Android App - http://bit.ly/1nSXjAu...

All of Me av John Legend Piano Intro

Jag lärde mig hur man spelar introt på piano för alla mig av John Legend.Steg 1: Läs de högra hand anteckningarnaFörst kommer du att börja med att lära sig de högra hand anteckningarna. Jag är inte ett piano expert så jag inte vet ackord, jag vet bar...

Ett lätt-att-göra, energisparande Piano luftfuktighet kontrollsystem (avfuktare)

i detta intructable, jag ska visa dig hur man bygger en enkel avfuktare för ditt ädla piano, till en bråkdel av kostnaden om du köper en liknande produkt. Och den använder mycket mindre energi än en rum avfuktare.Vi köpte ett nytt piano förra året fö...

Ariana Grande - farlig kvinna - Piano handledning

Lär dig hur man spelar "Farlig kvinna" på piano!Besök OnlinePianist - https://goo.gl/oGv9FbBegära en låt - http://bit.ly/1nSXjAuOnlinePianist iOS App - http://bit.ly/1nSXjAuOnlinePianist Android App - http://bit.ly/1nSXjAu...

Höstlöv - Piano handledning

Lär dig hur man spelar "Höstlöv" på piano!Besök OnlinePianist - https://goo.gl/oGv9FbBegära en låt - http://bit.ly/1nSXjAuOnlinePianist iOS App - http://bit.ly/1nSXjAuOnlinePianist Android App - http://bit.ly/1nSXjAu...

Bill Withers | Luta sig mot mig - Piano handledning

Lär dig hur man spelar "Lean On Me" av Bill Withers på piano!Besök OnlinePianist - https://goo.gl/oGv9Fb begäran en låt - http://bit.ly/1nSXjAuOnlinePianist iOS App - http://bit.ly/1nSXjAuOnlinePianist Android App - http://bit.ly/1nSXjAu...