Schritt 7: Codierung es up - Setup und Schleife
PIN wir das Servo befestigt haben. Wir beginnen auch mit der Servo bei 0 Grad.
void setup() {}
PinMode (button1, Eingabe);
PinMode (button2, Eingabe);
PinMode (button3, Eingabe);
PinMode (button4, Eingabe);
PinMode (button5, Eingabe);
PinMode (rot, OUTPUT);
PinMode (grün, Ausgang);
LCD.Begin(16,2);
lcd.setCursor(0,0);
LCD.Print (": CODE eingeben:");
Serial.Begin(9600); / / Für Debug. Optisch sehen die Tastendrücke.
myservo.Attach(9);
myservo.Write(0);
}
Beginnen Sie durch das Lesen der Zustand der Pins.
void loop() {}
state1 = digitalRead(button1);
state2 = digitalRead(button2);
state3 = digitalRead(button3);
state4 = digitalRead(button4);
Stufe5 = digitalRead(button5);
Wenn der Zustand der Schaltfläche nicht den vorherigen Zustand entspricht (1 = hoch, 0 = niedrig), welche im Grunde
bedeutet, nur gedrückt oder losgelassen? Wenn der Zustand der Schaltfläche hoch (1 ist)
Wir erhöhen die Anzahl der diese Schaltfläche.
Wenn (state1! = prev1) {}
Delay(10);
Wenn (state1 == HIGH) {}
count1 ++;
}
/ / Beachten Sie die delay(10). Dies ist wichtig. Es ermöglicht eine Entprellung. Tasten haben eine Intertgas
Bounciness. Sie können es nicht fühlen, aber wenn Sie eine Taste, macht es manchmal
wenden Sie sich an mehr als einmal, und die Arduino sehen, die als mehrere Pressen. Die Verzögerung
hält das Programm für 10 Millisekunden, so dass die Schaltfläche zu "Regeln", und dann
wird fortgesetzt. 10 Millisekunden sollte lang genug sein, aber mehr bei Bedarf anpassen.
Else {}
}
Wir tun das für jede Taste.
Wenn (state2! = prev2) {}
Delay(10);
Wenn (state2 == HIGH) {}
count2 ++;
}
Else {}
}
Wenn (state3! = prev3) {}
Delay(10);
Wenn (state3 == HIGH) {}
count3 ++;
}
Else {}
}
Wenn (state4! = prev4) {}
Delay(10);
Wenn (state4 == HIGH) {}
count4 ++;
}
Else {}
}
Wenn (Stufe5! = prev5) {}
Delay(10);
Wenn (Stufe5 == HIGH) {}
count5 ++;
}
Else {}
}
Dies wird dazu beitragen, behalten Sie den Überblick welche Art von Aktionen mit stattfinden
die Tasten. Wenn die Taste gedrückt wird, entspricht nicht der Zustand
Es ist vorherigen Zustand, eine Änderung anzeigt. Hier setzen wir die vorherige
auf den aktuellen Zustand angeben, damit im Moment Sie schieben oder
Veröffentlichung, die Arduino weiß es, und handelt entsprechend.
prev1 = state1;
prev2 = state2;
PREV3 = state3;
prev4 = state4;
prev5 = Stufe5;
Dann wir, wie oft jede Taste decken gedrückt wurde.
TotalCount = count1 + count2 + count3 + count4 + count5;
/ / Dies ist, wo wir schreiben ein Sternchen ("*") an den LCD jedes Mal, wenn eine Taste gedrückt ist.
für (Zeilen = 0; Zeilen < Totalcount; Reihen + 1) {}
lcd.setCursor(rows,1);
LCD.Print("*");
Zeilen ++;
}
"Zeilen" ist, wo der Cursor ist (von links nach rechts) auf dem LCD.
Für jedes Mal eine Taste betätigt wird, erhöhen wir "Zeilen" nach dem anderen, und
festlegen Sie, wie die Position des Mauszeigers. Wir tun dies bis zu einem gewissen Punkt (5)
denn das ist, wie viele Ziffern in Kombination sind.
/ / Jetzt, wenn unsere Totalcount 5 erreicht, werden wir beginnen, sah, wie viele Male
Jede Taste wurde gedrückt. Wenn es, was unsere vorgegebenen Combo passt...
Wenn (Totalcount == 5) {}
Wenn (count1 == 2 & & count2 == 0 & & count3 == 1 & & count4 == 2 & & count5 == 0) {}
LCD.Clear();
LCD.Print ("CODE akzeptiert"); / / Code akzeptiert!
myservo.Write(90); / / das Servo bewegt sich um 90 Grad, als ob ein Türentriegelung.
DigitalWrite (grün, HIGH); / / grün ist gleich gut, also die grüne LED leuchtet
Achten Sie darauf, dass die rote, der LED bleibt aus, wenn Sie den Code rechts Sie zum ersten Mal bekommen
DigitalWrite (rot, niedrig);
count1 = 0; / / Alle unsere Conunters auf 0, beim Starten des Prozesses immer wieder zurückgesetzt.
count2 = 0;
count3 = 0;
count4 = 0;
count5 = 0;
TotalCount = 0;
Delay(10000);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print (": CODE eingeben:"); Und wir sind wieder am Anfang.
myservo.Write(0);
DigitalWrite (grün, LOW);
}
ElseIf (count1! = 2 & & count2! = 0 & & count3! = 1 & & count4! = 2 & & count5! = 0 & & Totalcount == 5) {}
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("CODE abgelehnt"); / / Dies und das Teil unten wo sind, wenn die Anzahl der einzelnen Schaltflächen
DigitalWrite (rot, HIGH); / / ist nicht die Anzahl die vorgegebene, gleich oder größer als die Anzahl ist
DigitalWrite (grün, LOW); //and die Anzahl der insgesamt Pressen ist gleich 5 (darauf hinweist, dass eine 5 stellige
count1 = 0; / / Kombination eingegeben wurde aber nicht stimmt) dann der Code abgelehnt wird. Abgelehnt!
count2 = 0;
count3 = 0;
count4 = 0;
count5 = 0;
TotalCount = 0;
Delay(5000);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print (": CODE eingeben:");
DigitalWrite (rot, niedrig);
}
ElseIf (count1 > 2 & & count2 > 0 & & count3 > 1 & & count4 > 2 & & count5 > 0 || Totalcount == 5) {}
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("CODE abgelehnt");
DigitalWrite (rot, HIGH);
DigitalWrite (grün, LOW);
count1 = 0;
count2 = 0;
count3 = 0;
count4 = 0;
count5 = 0;
TotalCount = 0;
Delay(5000);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print (": CODE eingeben:");
DigitalWrite (rot, niedrig);
}
}
}