Arduino blåsinstrument (8 / 8 steg)
Steg 8: Koden
#include < Tone.h >
#define ERROR_WINDOW 50
#define INTERVALLET 100
#define DEBUG_ON
int micVal = 0;
int micPin = 1;
Tonar högtalare;
int whichButton;
variabel att begränsa knappen får kontrolleras varje cykel
lång lastChecked = 0;
void setup() {
Serial.BEGIN(9600);
Speaker.BEGIN(8);
}
void loop() {
micVal = analogRead(micPin);
micVal = begränsa (abs(micVal-512)-25,0,512);
Serial.println (micVal, DEC);
om (micVal > = 50) {
om (millis() - lastChecked > intervall) {
om (int buttNum = buttonPushed(0)) {
IF(whichButton!=buttNum) {
växel (buttNum) {
fall 1:
Speaker.Play(micVal/2);
bryta;
fall 2:
Speaker.Play(micVal);
bryta;
fall 3:
Speaker.Play(micVal+micVal/4);
bryta;
fall 4:
Speaker.Play(micVal+micVal/2);
bryta;
fall 5:
Speaker.stop();
bryta;
}
whichButton = buttNum;
}
}
lastChecked = millis(); återställa lastChecked värde
}
}
}
int buttonPushed (int pinNum) {
variabel för att lagra Läs värdet
int val = 0;
Aktivera den 20 k inre pullup
digitalWrite((14+pinNum), hög);
Läs ingångsstiftet
Val = analogRead(pinNum);
#ifdef DEBUG_ON
Serial.println(val);
#endif
/ * Använd inte upp eftersom det är samma som all-öppen switch-värdet när den inre 20K ohm pullup aktiveras.
om (val > = 923 och val < = 1023)
Serial.println ("Detta är den övre gränsen");
om (val > = (825-ERROR_WINDOW) och val < = (825 + ERROR_WINDOW)) {/ / 825
tillbaka 1.
} else om (val > = (630-ERROR_WINDOW) och val < = (630 + ERROR_WINDOW)) {/ / 630
returnera 2.
} else om (val > = (435-ERROR_WINDOW) och val < = (435 + ERROR_WINDOW)) {/ / 435
returnera 3.
} else om (val > = (230-ERROR_WINDOW) och val < = (ERROR_WINDOW 230 +)) {/ / 230
returnera 4.
} else om (val > = 0 och val < = (14 + ERROR_WINDOW)) {
returnera 5.
} annat
Return 0;
}