Arduino blåsinstrument (3 / 8 steg)
Steg 3: Kod för knappar
1. Kopiera och klistra in koden nedan i en ny skiss.
2. Sammanställ, ladda upp och öppna sedan den Serial Monitor.
3. Tryck på knapparna och skriv ner de värden som returneras.
4. Byt mina värderingar med din.
5. kommentera bort raden: #define DEBUG_ON
/*********************
Denna kod är baserad på:
Kod av Doug LaRue
från November 2008
släppt under
Creative Commons Erkännande-Ickekommersiell-Dela Lika 3.0
**********************/
#define ERROR_WINDOW 50
#define INTERVALLET 100
#define DEBUG_ON
int whichButton;
variabel att begränsa knappen får kontrolleras varje cykel
lång lastChecked = 0;
void setup() {
Serial.BEGIN(9600);
}
void loop() {
om (millis() - lastChecked > intervall) {
om (int buttNum = buttonPushed(0)) {
IF(whichButton!=buttNum) {
Serial.Print ("knappen");
Serial.println(buttNum);
växel (buttNum) {
fall 1:
Serial.println ("gör något för knappen 1");
bryta;
fall 2:
Serial.println ("gör något för knappen 2");
bryta;
fall 3:
Serial.println ("gör något för knapp 3");
bryta;
fall 4:
Serial.println ("gör något för knapp 4");
bryta;
fall 5:
Serial.println ("gör något för knappen 5");
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);
Val = analogRead(pinNum); Läs ingångsstiftet
#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.
5 knappar, ERROW_WINDOW är 50 * /
om (val > = 923 och val < = 1023)
Serial.println ("switch 0 tryckte/utlöst");
om (val > = 780 och val < = 880) {/ / 830
tillbaka 1.
}
annars om (val > = (630-ERROR_WINDOW) och val < = (630 + ERROR_WINDOW)) {/ / 630
returnera 2.
}
annars om (val > = (430-ERROR_WINDOW) och val < = (430 + ERROR_WINDOW)) {/ / 430
returnera 3.
}
annars om (val > = (230-ERROR_WINDOW) och val < = (ERROR_WINDOW 230 +)) {/ / 230
returnera 4.
}
annars om (val > = 0 och val < = (20 + ERROR_WINDOW)) {
returnera 5.
}
annat
Return 0;
}