2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
To bi moral biti vaš končni rezultat, potem ko ga sestavite in naložite kodo.
Korak: Stvari, ki jih boste potrebovali
Mostične žice, 220 OHM upor, LCD zaslon 16x2, potisni gumbi, servo motor, plošča, Arduino Uno.
2. korak: Koda
James chinchay
#vključi
#include #include
int naslov = 0; statični nepodpisani dolgi SaveTimer; statično brez podpisa dolgo SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Odklenjeno; statični brez podpisa dolg DisplayTimer; statično brez podpisa dolgo DisplayDelay = 200;
LCD tekoči kristal (12, 11, 9, 8, 7, 6);
gumb intPin1 = 2; gumb intPin2 = 3; gumb intPin3 = 4; gumb intPin4 = 5;
int enterbutton = 10; int clearlockbutton = 13;
Servo myServo; // nastavitev programa construct void setup () {
myServo.attach (A1);
int EEPROMCodeOK = res; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.preberite (Pos); if (! (strrchr ("1123456789", Str [Pos]))) {// ni veljavna koda EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.preberite (Poz); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // nastavitev vhodov pinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);
pinMode (gumb za vnos, INPUT_PULLUP); pinMode (gumb clearlock, INPUT_PULLUP);
lcd.begin (16, 2); lcd.setCursor (0, 0); // nastavitev sporočila lcd.print ("Pozdravljeni gospod Birch"); zamuda (2000); lcd.clear (); lcd.setCursor (0, 0); // nastavitev poziva za geslo lcd.print ("Geslo:");
DisplayTimer = millis () + 200; }
void loop () {
Ključavnica ();
Pos = omeji (Pos, 0, CodeLength); // gumbi za branje int buttonState1 = digitalRead (buttonPin1); int buttonState2 = digitalno branje (buttonPin2); int buttonState3 = digitalno branje (buttonPin3); int buttonState4 = digitalno branje (buttonPin4);
int clButtonState = digitalRead (gumb za brisanje); int enterButtonState = digitalRead (gumb za vnos);
lcd.setCursor (9, 0); // zahteve za aktiviranje if (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); medtem ko (digitalRead (buttonPin1) == LOW);
}
else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); while (digitalno branje (buttonPin2) == NIZKO);
}
else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); while (digitalno branje (buttonPin3) == NIZKO); }
else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); while (digitalno branje (buttonPin4) == NIZKO);
} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; zamuda (250); medtem ko (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Odklenjeno = true; lcd.setCursor (0, 0); lcd.print ("Dostop odobren"); zamuda (2000); lcd.clear (); lcd.print ("Odklenjeno"); } else if (SaveTimer> millis () && (Pos + 1) == CodeLength) {
strcpy (KODA, Str); for (Pos = 0; Pos <= (CodeLength+1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Shranjevalna koda:"); lcd.setCursor (0, 1); lcd.print (Str);
Odklenjeno = res; }
drugače {
lcd.clear (); lcd.print ("Dostop zavrnjen."); zamuda (2000); lcd.clear (); lcd.print ("Geslo:");
} // odklepanje kode while (Odklenjeno) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {zakasnitev (200); lcd.clear (); lcd.print ("Zaklenjeno"); zamuda (2000); lcd.clear (); Odklenjeno = napačno; SaveTimer = millis () + 30000; }}
ClearCode ();
}
else if (clButtonState == LOW) {zakasnitev (500);
medtem ko (clearlockbutton == NIZKA); if ((millis () - SaveTimer)> 4500) {
}
ClearCode ();
}
if ((long) (millis () - DisplayTimer)> = 0) {DisplayTimer += DisplayDelay; lcd.setCursor (9, 0); lcd.print (Str); lcd.print ("");
} }
void ClearCode () {
Pos = 0; Str [Pos] = '\ 0'; lcd.setCursor (0, 0); lcd.print ("Geslo:"); lcd.setCursor (0, 1); lcd.print ("");
}
void Odkleni () {
myServo.write (150);
} // gumb za zaklepanje programa void Lock () {
myServo.write (50);
}
3. korak:
ko bo vse narejeno bi moralo izgledati tako.