Az előző részben itt tartottunk:
void setup() {
pinMode(0,INPUT_PULLUP);
Keyboard.begin(); // indítsuk el az USB kezelését
}
void loop() {
if (digitalRead(0)==0) {
Keyboard.println("Hello");
}
}
Ez egy gombnyomásra szépen kiírja, hogy Hello, kb. 50 alkalommal. Nem mintha ezt szerettük volna, de nézd csak meg a kódot! Ha a gomb meg van nyomva, megy ki a Hello. Amikor a gombot "röviden" megnyomod, az legalább 0.1 másodpercig tart. A program meg olyan gyorsan fut, hogy 0.1 másodperc alatt bőven vagy 50-szer észreveszi hogy meg van nyomva a gomb, és köszön, rendületlenül!
Azt kellene csinálni, hogy megvárni, amíg a gombot elengedik. Valahogy így:
void setup() {
pinMode(0,INPUT_PULLUP);
Keyboard.begin(); // indítsuk el az USB kezelését
}
void loop() {
if (digitalRead(0)==0) {
Keyboard.println("Hello");
while(digitalRead(0)==0) {
delay(10);
}
}
}
A while ciklus addig ismétli a ciklusmagot - és befogja a szemét 10 ms-ig - amíg a gombot nyomva tartjuk. Eközben nem írunk semmit, eközben csak befogott szemmel várunk. Ha a gombot elengedtük, a while ciklusnak vége lesz, és a következő gombnyomást az if fogja érzékelni.
Na ez már döfi, ugye?