Stap 6: Codering de Sensor
Lanetta de verloofde, Andrew, hielp ons weten wat de notities van de liedjes en toen de liederen vertellen ons welke notities testen waar uitgeschakeld. Hij was een grote hulp!
Kennen van de frequentie van de notities was moeilijk op het eerste. Het hielp zodra we ons realiseerden hoe de notities gezocht de piano op de volgende website: http://en.wikipedia.org/wiki/Piano_key_frequencies (met dank voor de hulp Andrew!) Arduino beschikt over een bibliotheek voor notities, maar we hadden al de frequenties voor de notities. Als u de bibliotheek gebruiken werkt de nummers niet als je mengen in de notities die u definieert met behulp van frequenties. Om te weten wat voor soort waarden de lichtsensor leest met verschillende licht bloot u kunt de seriële code die is opgegeven in de Arduino.
PIN Setup
int spreker = 9;
int sensorPin = A3; Licht Sensor aangesloten
int sensorValue; variabele de waarde afkomstig van de sensor opslaan
Website voor de toelichting: http://www.phy.mtu.edu/~suits/notefreqs.html
int een = 440;
int b = 493.883;
int c = 523.251;
int e = 329.628;
int mc = 261.626;
int d = 293.665;
int f = 349.228;
int eflat = 311.127;
int bflat = 466.164;
int g = 391.995;
int nosound = 0;
Naar links
Alle notities worden gebracht in een array
int totheleft [] = {d, f, f, d, f, f, nosound, eflat, f, f, eflat, f, f};
Hoe lang elke noot is 4 = kwartnoot, 3 = kwartaal met stip, 8 = achtste noot, 2 = helft notitie
int durationleft [] = {16,16,8,16,16,4,1,16,16,8,16,16,4};
Kies de juiste, aan het begin van liedje
int chooseright [] = {e, f, g, g, g, a, c, b, a, g, e, d, e, f, g, b, a, g, f, e};
int durationCTR [] = {4,4,3,16,16,8,8,8,8,4,4,4,4,3,8,9,16,8,8,2};
Het opzetten van de pinnen, A3 is een ingang (hoeveel licht) waar de spreker is een output (er is ruis komen)
VOID Setup
{
pinMode(speaker,OUTPUT);
pinMode (A3, INPUT);
}
void loop
{
sensorValue = analogRead(sensorPin); luiden naar de waarde van de sensor
Als (sensorValue > = 40 & & sensorValue < = 100) //Light gedetecteerd
{
voor (int thisNote = 0; thisNote < 100; thisNote ++) {//go door de array van notities
int noteDuration = 18000/durationleft [thisNote];
Toon (spreker, totheleft [thisNote], noteDuration); //play elke niet
vertraging (noteDuration * 0,30); //have een korte tijd tussen elke noot zodat het oor de notitie horen kan
noTone(9);
}
}
anders als (sensorValue > 101) {//lots van licht ontdekt
voor (int thisNote = 0; thisNote < 100; thisNote ++) {}
int noteDuration = 18000/durationCTR [thisNote];
Tone(speaker,chooseright[thisNote],noteDuration);
delay(noteDuration*0.30);
noTone(9);
}
}
anders //No licht ontdekt
{
noTone(9); niets doen
}
}