Sjunger Lazy Susan (Crazy Adam) med handgjorda Sensor borste. (8 / 9 steg)
Steg 8: Arduino, högtalare och kod
Koden är följande:
int noteIndex = 999;
int sensorPin = 2; Välj input PIN-koden för potentiometer
int speakerPin = 9;
int sensorValueOld = PI;
int sensorValue = 0; variabel för att lagra värdet kommer från sensorn
int längd = 15. antalet anmärkningar
char noterar [] = "cDfcDFfDc"; ett utrymme representerar en vila
int slår [] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
int tempo = 300;
{Ogiltig playTone (int tonen, int längd)
för (länge jag = 0; jag < varaktighet * 1000L; i += tonen * 2) {
digitalWrite (speakerPin, hög);
delayMicroseconds(tone);
digitalWrite (speakerPin, låg);
delayMicroseconds(tone);
}
}
void playNote (char note, int varaktighet) {
char namn [] = {
"c", "C" hade ", hade", "e", "f", "F", "g", "G", "a", "A", "b", är "};
int toner [] = {
1915, 1804, 1700, 1607,
1519, 1432, 1351, 1275,
1204, 1136, 1073, 1014, 956};
spela tonen motsvarar tonens namn
för (int jag = 0; jag < 8; i ++) {
om (namn [i] == OBS) {
playTone (toner [i], varaktighet);
}
}
}
void setup() {
förklara ledPin som en utgång:
pinMode (speakerPin, produktionen);
pinMode (sensorPin, ingång);
digitalWrite(sensorPin,HIGH);
Serial.BEGIN(9600);
}
void loop() {
Läs värdet från sensorn:
sensorValue = digitalRead(sensorPin);
IF(sensorValueOld == sensorValue) {
gör ingenting!
} annat {/ / värde har ändrats! Lazy Susan har flyttat!
Serial.println(sensorValue);
Peka på nästa anteckning i sekvens
noteIndex ++;
om (noteIndex > =strlen(notes)) {noteIndex = 0;}
playNote (anteckningar [noteIndex], slår [noteIndex] * tempo);
Delay(tempo / 2);
}
sensorValueOld = sensorValue;
/*
om (sensorValue! = 0) {
för (int jag = 0; jag < längd; i ++) {
om (anteckningar [i] == "") {
fördröjning (beats [i] * random(PI,tempo)); resten
}
annat {
playNote (anteckningar [i], beats [i] * tempo);
}
paus mellan anteckningar
Delay(tempo / 2);
}
}
*/
}