Stap 3: De Code
Dit is de code om te uploaden naar de Arduino te voeren dit circuit. De piëzo-zoemer houdt omhoog het grootste deel van de code. Deze versie speelt Mr. Roboto, maar u kunt het wijzigen van de code om het spelen van de nummers die u wilt, zorg er wel voor dat de frequenties in de eerste verklaring in overeenstemming zijn met de aantekeningen die u wilt afspelen te maken. Het Ino bestand wordt ook gekoppeld als u het gevoel lui. Als u nog geen de Arduino software, Klik hier.
Lichtsensor wekker
/ / Gemaakt door Corbin Newhard / / licentie: publiek domein
// TONES ==========================================
Beginnen met het definiëren van de relatie tussen
Opmerking, periode, & frequentie.
#define c 3830 / / 261 Hz
#define d 6428 / / 156 Hz
#define D 3219 / / 311 Hz
#define e 3038 / / 329 Hz
#define f 2864 / / 349 Hz
#define g 2550 / / 392 Hz
#define een 2272 / / 440 Hz
#define b 2028 / / 493 Hz
#define C 1912 / / 523 Hz
Een speciale opmerking, 'R', te vertegenwoordigen een rust definiëren
#define R 0
// SETUP ============================================
Spreker op een PWM-pin (digitale 9, 10 of 11) instellen
int speakerOut = 11;
int geleid = 13;
VOID Setup {}
pinMode (speakerOut, OUTPUT);
pinMode led (, uitvoer);
Serial.begin (9600);
}
MELODIE en TIMING ===
[Melody] is een array van nota's, vergezeld van beats [],
waarin elke nota's relatieve lengte (hogere # en langere opmerking)
int melodie [] = {f, f, f, f, f, D, f, f, D, f, D, f, f, d, d, O, f, f, d, d, R};
int verslaat [] = {8, 8, 8, 8, 16, 8, 16, 16, 8, 16, 24, 8, 8, 8, 8, 1, 8, 8, 8, 8, 1};
int MAX_COUNT = sizeof(melody) / 2; Melodie de lengte, voor een lus.
Set algehele tempo lange tempo = 15000;
Instellen van de lengte van de pauze tussen notities int pauze = 0;
Lus variabele toe Rest lengte int rest_count = 15;
Initialiseren van de kern variabelen int tone_ = 0; int verslaan = 0; lange duur = 0;
// PLAY TONE ==============================================
Pulse de spreker om af te spelen van een Toon voor een bepaalde duur
ongeldig playTone() {}
lange elapsed_time = 0;
Als (tone_ > 0) {}
Als dit niet een Rest beat, terwijl de Toon heeft
minder lang dan 'duur', pulse spreker hoge en lage gespeeld
terwijl (elapsed_time < duur) {}
digitalWrite(speakerOut,HIGH); delayMicroseconds(tone_ / 2); / / DOWN
digitalWrite (speakerOut, laag); delayMicroseconds(tone_ / 2);
Bijhouden van hoe lang we gepulseerde
elapsed_time += (tone_);
}
}
else {}
Rest beat; lus keer vertraging
for (int j = 0; j < rest_count; j ++) {}
Opmerking Zie op rest_count
delayMicroseconds(duration);
} } }
ongeldig lightShow() {}
digitalWrite (led, hoog);
delay(60);
digitalWrite (led, laag);
delay(60);
}
LAAT DE WILDE RUMPUS BEGINNEN ===
void loop {}
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
Als (sensorValue > = 20) {//ADJUST deze waarde voor verschillende licht waarden
Instellen van een teller te trekken uit de melodie [] en beats]
for (int i = 0; ik < MAX_COUNT; i ++) {}
tone_ = melodie [i];
Beat = slagen [i];
duur = beat * tempo; Timing instellen
playTone();
Een pauze tussen notities...
delayMicroseconds(pause);
lightShow();
}
}
}