Мазмуну:

Коопсуз куту: 3 кадам
Коопсуз куту: 3 кадам

Video: Коопсуз куту: 3 кадам

Video: Коопсуз куту: 3 кадам
Video: Гостиницага келдик бир берейин эми 2024, Июль
Anonim
Коопсуз кутуча
Коопсуз кутуча
Коопсуз кутуча
Коопсуз кутуча
Коопсуз кутуча
Коопсуз кутуча

Кодду жүктөп, жыйынтыктагандан кийин бул сиздин акыркы натыйжаңыз болушу керек.

1 -кадам: Сизге керектүү нерселер

Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер
Сизге керектүү нерселер

Jumper Wires, 220 OHM каршылыгы, 16x2 LCD экраны, баскычтар, Servo Motor, Breadboard, Arduino Uno.

2 -кадам: Код

Джеймс Чинчай

#кошуу

#кошуу #кошуу

int дареги = 0; статикалык белгисиз узак SaveTimer; статикалык белгисиз узак SaveDelay = (30 * 1000);

char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Unlocked; статикалык белгиси жок узун DisplayTimer; статикалык белгиси жок узун DisplayDelay = 200;

LiquidCrystal lcd (12, 11, 9, 8, 7, 6);

int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5;

int enterbutton = 10; int clearlockbutton = 13;

Servo myServo; // курулуш программасын орнотуу void setup () {

myServo.attach (A1);

int EEPROMCodeOK = туура; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos]))) {// жарактуу код эмес EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // pinMode кириштерин жөндөө (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);

pinMode (enterbutton, INPUT_PULLUP); pinMode (clearlockbutton, INPUT_PULLUP);

lcd.begin (16, 2); lcd.setCursor (0, 0); // messaged lcd.printти орнотуу ("Саламатсызбы Берч мырза"); кечигүү (2000); lcd.clear (); lcd.setCursor (0, 0); // сырсөз lcd.print ("Сырсөз:") сурамын орнотуу;

DisplayTimer = millis () + 200; }

void loop () {

Lock ();

Pos = чектөө (Pos, 0, CodeLength); // окуу баскычтары int buttonState1 = digitalRead (buttonPin1); int buttonState2 = digitalRead (buttonPin2); int buttonState3 = digitalRead (buttonPin3); int buttonState4 = digitalRead (buttonPin4);

int clButtonState = digitalRead (clearlockbutton); int enterButtonState = digitalRead (enterbutton);

lcd.setCursor (9, 0); // иштетүү талаптары эгерде (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; кечигүү (250); while (digitalRead (buttonPin1) == LOW);

}

else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; кечигүү (250); while (digitalRead (buttonPin2) == LOW);

}

else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; кечигүү (250); while (digitalRead (buttonPin3) == LOW); }

else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; кечигүү (250); while (digitalRead (buttonPin4) == LOW);

} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; кечигүү (250); while (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Unlocked = true; lcd.setCursor (0, 0); lcd.print ("Мүмкүнчүлүк берилген"); кечигүү (2000); lcd.clear (); lcd.print ("Кулпусу ачылган"); } else if (SaveTimer> millis () && (Pos + 1) == CodeLength) {

strcpy (CODE, Str); үчүн (Pos = 0; Pos <= (CodeLength+1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Сактоо коду:"); lcd.setCursor (0, 1); lcd.print (Str);

Кулпусу ачылган = чындык; }

башка {

lcd.clear (); lcd.print ("Мүмкүнчүлүк четке кагылды."); кечигүү (2000); lcd.clear (); lcd.print ("Сырсөз:");

} // кодду ачуу учурунда (Кулпусу ачылган) {Кулпуну ачуу (); if (digitalRead (clearlockbutton) == LOW) {кечигүү (200); lcd.clear (); lcd.print ("Кулпуланган"); кечигүү (2000); lcd.clear (); Кулпусу ачылган = жалган; SaveTimer = millis () + 30000; }}

ClearCode ();

}

else if (clButtonState == LOW) {кечиктирүү (500);

while (clearlockbutton == LOW); if ((миллис () - SaveTimer)> 4500) {

}

ClearCode ();

}

if ((long) (millis () - DisplayTimer)> = 0) {DisplayTimer += DisplayDelay; lcd.setCursor (9, 0); lcd.print (Str); lcd.print ("");

} }

жараксыз ClearCode () {

Pos = 0; Str [Pos] = '\ 0'; lcd.setCursor (0, 0); lcd.print ("Сырсөз:"); lcd.setCursor (0, 1); lcd.print ("");

}

жараксыз ачуу () {

myServo.write (150);

} // программаны кулпулоо баскычы void Lock () {

myServo.write (50);

}

3 -кадам:

бүткөндөн кийин, ал ушундай көрүнүшү керек.

Сунушталууда: