Wie die Hauptschleife für Ihre Tastatur Öffnung Arduino-Projekt zu starten

Sie müssen eine Hauptschleife für die Tastatureingabe System Arduino Projekt auszuführen. Es gibt nur ein paar Dinge, die Code tut Ihr Eintrag System zu betreiben. Die Hauptschleife arbeitet wie folgt:

  1. Achten Sie auf einen Schlüssel.

  2. Wird eine Taste gedrückt wurde, wird er auf dem LED-Display senden.

  3. Erhöhen Sie die Anzahl der Tastendrücke um eins.

  4. Geben Sie es in den Codepuffer in der nächsten verfügbaren Position.

  5. Bestimmen Sie, ob vier Ziffern eingegeben wurden.

    Wenn ja, prüfen Sie, ob der Code gültig ist.

  6. Wenn der Code gültig ist, die Tür zu öffnen und um alles, was für das nächste Mal zurückgesetzt.

Die Hauptsache, Sie tun müssen, ist, prüfen, ob eine Taste gedrückt wurde. Die erste Anweisung erstellt eine lokale verkohlen Variable mit dem Namen Schlüssel zu speichern, das Zeichen, das zurück von einer Funktion mit dem Namen gesendet wird getKey (). Denken Sie daran, die KEYMAP? Das ist, wo diese Zahl letztlich kommt.

Der char-Wert von Schlüssel wird auch an die zugewiesene codeBuffer [] Array, das Sie zu testen, ob der Code gültig ist. Es wird auf die gespeicherte Position hinzugefügt von keypressCount, die erhöht wird, nach oben jedes Mal, wenn ein neues Zeichen erkannt wird. Das # 147-Null-ten # 148- Zeichen ist das erste keypress erkannt. Damit codeBuffer [0] enthält die erste Taste auf dem Tastenfeld gedrückt wird, codeBuffer [1] enthält die zweite Taste gedrückt wird, und so weiter.

Die nächste bedingte ob Anweisung wird nur ausgeführt, wenn eine Taste gedrückt wurde, an welchem ​​Punkt die Schritte 2 bis 6 aus der vorhergehenden Liste verarbeitet werden. Wird eine Taste nicht gedrückt wurde, wartet das Programm nur das geschehen kann. Wenn es der Fall ist, die sendcommand Funktion ausführt:

sendcommand (keypressCount + 1, Schlüssel) -

Das sendcommand zwei Parameter übernimmt: das Sieben-Segment-Modulnummer zu ändern, und was es zu ändern. Sie nutzen keypressCount nicht nur den Überblick über die Anzahl der Tasten zu halten, so weit gedrückt worden sind, sondern auch leuchten die Sieben-Segment-Ziffer zu erzählen.

Aber, keypressCount beginnt bei Null, da die Code[] das Puffer[] char-Arrays beginnen ihre Nummerierung bei Null, und Sie wollen, dass diese Werte in der richtigen Stelle zu speichern. Aber der Max-Chip startet Nummerierung Ziffern von 1 Daher verwenden keypressCount die richtige Sieben-Segment-Ziffer zu leuchten, müssen Sie eine hinzufügen (+1), Um seinen Wert.

Die nächste Anweisung implementiert, dass praktisch Debug-Funktion. Wenn Sie festgelegt haben die DEBUGGEN boolean nach wahr, der Code wird alle Ihre Variablen an die serielle Schnittstelle ausdrucken.

Als nächstes erhöhen Sie die keypressCount von ein und testen, um dann, wenn vier Ziffern siehe gedrückt wurden. Wenn ja, es ist Showtime. Das Verzögerung (500) Erklärung gibt Ihnen eine halbe Sekunde, um den letzten Zugangscode eingegebene Ziffer zu sehen, weil die Anzeige je nach ändern wird, ob der richtige Zugangscode eingegeben wurde. Dieser Test wird mit ein wenig von nativen C-Code durchgeführt:

if (memcmp (codeBuffer, Code, 4) == 0) {if (debug) {Serial.println ( "Match") -} unlock () -}

Die Funktion memcmp () vergleicht zwei Objekte im Speicher und nimmt als die beiden Elemente und ihre erwarteten Längen-Parameter. In diesem Fall Sie vergleichen die codeBuffer Array und der Code am Anfang des Programms gespeichert. Beide haben eine Länge von vier Bytes.

Wenn sie genau gleich sind, die memcmp () Funktion gibt eine Null und das ist genau das, was Sie in der bedingten Anweisung suchen. Wenn sie gleich sind (und DEBUGGEN ist wahr), # 147-MATCH! # 148- wird mit dem seriellen Anschluss und der gedruckten entsperren () Funktion wird ausgeführt. Wenn der Speicher Vergleich ausfällt, dann wird die Funktion nicht wieder ein # 147-0, # 148- wurde den falschen Code Bedeutung eingetragen.

In jedem Fall sollten Sie rund um das Display, bereit für die nächste Zeit zu löschen. So rufen Sie die clearDisplay () Funktion. Eine andere native C Sprachunterricht funktioniert ein wenig Speicher Housekeeping:

memset (codeBuffer, 0, 4) -

Dies löscht die codeBuffer ausdrücklich auf 0. Seine Länge Einstellung ist 4, was der zweite Parameter ist. Man könnte argumentieren, dass dieser Befehl nicht notwendig ist, aber es ist eine gute Übung, um explizit Speicher verwalten, anstatt lassen die Dinge dem Zufall.

Schließlich wurde, weil dies die vierte keypress und es gibt nur vier Ziffern zu bewerten, die keypressCount Bedürfnisse auf Null zurückgestellt werden, so sind Sie für die nächste Iteration bereit.

Menü