Arduino ist das beste System zum Kopieren von Hardware. Ohne sie wären die meisten Ideen nicht möglich gewesen. Es gibt schon lange einen solchen Gedanken: ein spezielles Zahlenschloss für das Arduino zu schaffen. Um es zu öffnen, müssen Sie eine bestimmte Taste gedrückt halten. In diesem Fall sollte sich das Schloss nicht öffnen, auch wenn Sie die gewünschte Taste kennen. Um es zu öffnen, müssen bestimmte Intervalle mithilfe des Muskelgedächtnisses eingehalten werden. Ein solcher Verbrecher kann es nicht tun. Aber das ist alles nur Theorie.
Um es zu sammeln, müssen Sie ein spezielles Gerät für Rechteckimpulse sowie mehrere Zähler und einen Haufen verwenden. Das fertige Gerät hätte jedoch große Abmessungen und wäre unpraktisch zu verwenden. In der Regel geben solche Gedanken keine Ruhe. Der erste Schritt zur Verwirklichung dieses Traums war die Erstellung eines Programms für Arduino. Sie wird als Zahlenschloss dienen. Um es zu öffnen, müssen Sie nicht eine Taste, sondern mehrere drücken und dies gleichzeitig tun. Die fertige Schaltung sieht so aus:
Die Bildqualität ist nicht die beste, aber es werden Masseverbindungen hergestellt, D3, D5, D7, D9 und D11.
Der Code wird unten angezeigt:
const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; Byte a = 0; Byte b = 0; Byte c = 0; Byte d = 0; lange Zeit ohne Vorzeichen = 0; // nicht alles vergessen, was millis() auf unsigned nimmt long temp = 0; // in vorzeichenlosem langem Byte speichern keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // Codes richtiges Byte keyb [] = {1, 1, 1, 1, 0, 1, 0, 0}; Byteschlüsselc [] = {1, 0, 1, 0, 1, 1, 1, 0}; Byte k = 0; Void setup () {pinMode (ina, INPUT_PULLUP); // 3 Eingänge mit den Tasten verbunden PinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, AUSGANG); // eingebaute LED an Pin 13 pinMode (7, OUTPUT); pinMode (11, AUSGANG); digitalWrite (7, LOW); // Ersetzen Sie die Masse digitalWrite (11, LOW); Zeit = Millisekunden (); // benötigt, um die Zeit zu zählen} void blinktwice () {// Doppeltes Blinken der LED digitalWrite (ledPin, HIGH); Verzögerung (100); digitalWrite (ledPin, LOW); Verzögerung (100); digitalWrite (ledPin, HIGH); Verzögerung (100); digitalWrite (ledPin, LOW); Verzögerung (200); aufrechtzuerhalten. Void Schleife () {wenn (k == 0) {zweimal blinken (); // Aufforderung zur Codeeingabe} if (k == 8) {digitalWrite (ledPin, HIGH); Verzögerung (3000); k = 0; } a = digitalRead (ina); // Signalpegel werden von Tasten gelesen - gedrückt / nicht gedrückt b = digitalRead (inb); c = digitalRead (inc); Verzögerung (100); // das nächste if ist der Schutz gegen False Positives, Sie müssen nicht verwenden if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {if (a == keya [k]) {if (b == keyb [k]) {if (c = = Schlüsselc [k]) {k ++; }}}} wenn (k == 1) {wenn (d == 0) {Zeit = Millis (); d++; }} temp = Millis (); temp = temp - zeit; wenn (temp> 10000) {k = 0; d = 0; Zeit = Millisekunden (); } }
Um keine unnötigen Fragen zum Code aufzuwerfen, sollten einige Punkte geklärt werden. Die Setup-Funktion dient zum Zuweisen von Ports. Die nächste Funktion ist Input_Pullup, die benötigt wird, um die Pinspannung um 5 V zu erhöhen. Dies geschieht über einen Widerstand. Aus diesem Grund treten verschiedene Kurzschlüsse nicht auf. Für mehr Komfort wird empfohlen, die Funktion blinktwice zu verwenden. Im Allgemeinen müssen Sie beim Erstellen verschiedener Programme andere Funktionen ausprobieren.
Nach der Zuweisung der Funktionen wird das Signal von den Ports gelesen. Wenn die Taste gedrückt wird, wird dies durch die Zahl 1 angezeigt und wenn nicht - 2. Weiterhin werden alle Werte analysiert. Zum Beispiel erschien eine Kombination wie 0,1,1. Dies bedeutet, dass die erste Taste gedrückt wird und die anderen beiden nicht. Wenn alle Werte wahr sind, dann ist auch Bedingung 8 wahr. Dies wird durch die leuchtende LED auf der Frontplatte angezeigt. Als nächstes müssen Sie einen bestimmten Code eingeben, der zum Öffnen der Tür dient.
Die letzten Elemente des Codes werden verwendet, um die Zählerwerte zurückzusetzen. Diese Funktion wird ausgeführt, wenn seit dem letzten Tastendruck mehr als 10 Sekunden vergangen sind. Ohne diesen Code war es möglich, alle möglichen Optionen aufzuzählen, obwohl es ziemlich viele davon gibt. Nachdem Sie dieses Gerät erstellt haben, müssen Sie es testen. Noch Arduino-Projekte.