Ungewöhnliches Zahlenschloss für Arduino
Zum Zusammenbau benötigen Sie ein spezielles Gerät mit Rechteckimpulsen sowie mehrere Zähler und einen Haufen. Das fertige Gerät hätte jedoch große Gesamtabmessungen und wäre unpraktisch zu verwenden. In der Regel verfolgen solche Gedanken. Der erste Schritt zur Verwirklichung eines Traums war die Erstellung eines Programms für Arduino. Es wird als Zahlenschloss dienen. Um es zu öffnen, müssen Sie nicht eine, sondern mehrere Tasten drücken und gleichzeitig ausführen. Das fertige Schema sieht folgendermaßen aus:
Die Bildqualität ist nicht die beste, aber die Verbindung wird zum Boden D3, D5, D7, D9 und D11 hergestellt.
Der Code wird unten dargestellt:
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; // Vergiss nicht alles, was einen millis () Wert annimmt
vorzeichenlose lange Temperatur = 0; // lange ohne Vorzeichen speichern
Byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // Codes eigentlich
Byte keyb [] = {1, 1, 1, 1, 0, 1, 0, 0};
Byte keyc [] = {1, 0, 1, 0, 1, 1, 1, 0};
Byte k = 0;
void setup () {
pinMode (ina, INPUT_PULLUP); // 3 Eingänge an Tasten angeschlossen
pinMode (inb, INPUT_PULLUP);
pinMode (inc, INPUT_PULLUP);
pinMode (ledPin, OUTPUT); // eingebaute LED am 13. Pin
PinMode (7, OUTPUT);
PinMode (11, OUTPUT);
digitalWrite (7, LOW); // Ersetze die Erde
digitalWrite (11, LOW);
Zeit = Millis (); // benötigt, um die Zeit zu zählen
}}
void blinktwice () {// doppelt blinkende 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);
}}
void loop () {
if (k == 0) {
blinktwice (); // Eingabeaufforderung für Code
}}
if (k == 8) {
digitalWrite (ledPin, HIGH);
Verzögerung (3000);
k ist 0;
}}
a = digitalRead (ina); // Signalpegel von Tasten lesen - gedrückt / nicht gedrückt
b = digitalRead (inb);
c = digitalRead (inc);
Verzögerung (100); // next if - Schutz gegen Fehlalarme, den Sie nicht verwenden können
if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {
if (a == keya [k]) {
if (b == keyb [k]) {
if (c == keyc [k]) {
k ++;
}}
}}
}}
}}
if (k == 1) {
if (d == 0) {
Zeit = Millis ();
d ++;
}}
}}
temp = millis ();
temp = temp - Zeit;
if (temp> 10000) {
k ist 0;
d ist 0;
Zeit = Millis ();
}}
}}
Um unnötige Fragen zum Code zu vermeiden, sollten einige Punkte geklärt werden. Die Setup-Funktion wird zum Zuweisen von Ports verwendet. Die nächste Funktion ist Input_Pullup, die erforderlich ist, um die Pin-Spannung um 5 V zu erhöhen. Dies erfolgt ü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.
Nachdem die Funktionen zugewiesen wurden, wird das Signal von den Ports gelesen. Wenn die Taste gedrückt wird, wird sie durch die Nummer 1 angezeigt, und wenn nicht - 2. Als nächstes eine Analyse aller Werte. Zum Beispiel gab es 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, ist auch Bedingung 8 wahr. Dies wird durch eine leuchtende LED an der Vorderseite angezeigt. Als nächstes müssen Sie einen bestimmten Code eingeben, der zum Öffnen der Tür dient.
Die letzten Codeelemente werden verwendet, um die Zählerwerte zurückzusetzen. Eine solche Funktion wird ausgeführt, wenn seit dem letzten Tastendruck mehr als 10 Sekunden vergangen sind.Ohne diesen Code könnten Sie alle möglichen Optionen durchgehen, obwohl es viele davon gibt. Nachdem Sie dieses Gerät erstellt haben, müssen Sie es testen.