Stap 3: Code voor knoppen
1. Kopieer en plak de code hieronder in een nieuwe schets.
2. compileren, uploaden en open vervolgens de seriële Monitor.
3. Druk de knoppen en noteer de waarden die worden geretourneerd.
4. Vervang mijn waarden met de jouwe.
5. commentaar van de lijn: #define DEBUG_ON
/*********************
Deze code is gebaseerd op:
Code door Doug LaRue
vanaf November 2008
uitgebracht onder
Creative Commons Attribution-Noncommercial-Share Alike 3.0
**********************/
#define ERROR_WINDOW 50
#define INTERVAL 100
#define DEBUG_ON
int whichButton;
variabele te beperken de knop krijgen gecontroleerd elke cyclus
lange lastChecked = 0;
VOID Setup {}
Serial.begin(9600);
}
void loop {}
Als (millis() - lastChecked > INTERVAL) {}
Als (int buttNum = buttonPushed(0)) {}
if(whichButton!=buttNum) {}
Serial.Print ("Button");
Serial.println(buttNum);
schakelaar (buttNum) {}
Case 1:
Serial.println ("Do iets voor knop 1");
breken;
Case 2:
Serial.println ("Do iets voor toets 2");
breken;
Case 3:
Serial.println ("Do iets voor knop 3");
breken;
Case 4:
Serial.println ("Do iets voor knop 4");
breken;
Case 5:
Serial.println ("Do iets voor knop 5");
breken;
}
whichButton = buttNum;
}
}
lastChecked = millis(); opnieuw instellen van de waarde van de lastChecked
}
}
int buttonPushed (int pinNum) {}
variabele de lees waarde op te slaan
int val = 0;
de 20 k interne pullup inschakelen
digitalWrite((14+pinNum), hoge);
Val = analogRead(pinNum); Lees de invoer pin
#ifdef DEBUG_ON
Serial.println(val);
#endif
/ * de bovenste positie niet gebruiken, want dat is hetzelfde als de all-open schakelaar waarde wanneer de interne 20K ohm pullup is ingeschakeld.
Voor 5 knoppen, de ERROW_WINDOW is 50 * /
Als (val > = 923 en val < = 1023)
Serial.println ("schakelaar 0 ingedrukt/geactiveerd");
Als (val > = 780 en val < = 880) {/ / 830
return 1;
}
anders als (val > = (630-ERROR_WINDOW) en val < = (630 + ERROR_WINDOW)) {/ / 630
terug 2;
}
anders als (val > = (430-ERROR_WINDOW) en val < = (430 + ERROR_WINDOW)) {/ / 430
terug 3;
}
anders als (val > = (230-ERROR_WINDOW) en val < = (230 + ERROR_WINDOW)) {/ / 230
terug 4;
}
anders als (val > = 0 en val < = (20 + ERROR_WINDOW)) {}
terug 5;
}
anders
keren 0;
}