Мазмұны:
Бейне: Қауіпсіз қорап: 3 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Бұл сіздің соңғы нәтиже, оны біріктіріп, кодты жүктегеннен кейін болуы керек.
1 -қадам: Сізге қажет нәрселер
Jumper Wires, 220 OHM резисторы, 16x2 СКД экраны, басу түймелері, 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;
Сервис 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 = жалған; 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); // хабарланған lcd.print орнату («Сәлем Берч мырза»); кешіктіру (2000); lcd.clear (); lcd.setCursor (0, 0); // lcd.print паролін сұрауды орнату («Құпия сөз:»);
DisplayTimer = millis () + 200; }
void loop () {
Құлыптау ();
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); for (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) {delay (500);
while (clearlockbutton == LOW); егер ((миллис () - 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 («»);
}
void Unlock () {
myServo.write (150);
} // бағдарламаны құлыптау түймесі void Lock () {
myServo.write (50);
}
3 -қадам:
бәрін жасаған кезде ол осылай көрінуі керек.
Ұсынылған:
Қауіпсіз шырша: 6 қадам
Қауіпсіз шырша: бұл Elegoo компаниясының Arduino Mega -мен жасалған толық бастапқы жиынтығы. Бірнеше күн бұрын Elegoo маған жиынтық жіберіп, онымен бірге Рождестволық жобаны құруға шақырды. Бұл жинақ бірнеше компоненттерден тұрады. Arduino Mega, серво, ультрадыбыстық сенсорлар, пульт
Сымсыз қауіпсіз зымыран ұшырғыш: 8 қадам
Сымсыз қауіпсіз зымыран ұшырғыш: HiI мен сымсыз зымыран тасығыштың қызықты жобасын жасадым, және сіздерге бұл ұнайтынына сенімдімін деп үміттенемін. Төрт арналы релелік тақта төрт петардалық ракетаны бір-бірден сымсыз немесе қауіпсіз іске қосу үшін пайдаланылады. бір руниден
Ерекше қорап/қорап (жылдам, жеңіл, модульдік, арзан): 7 қадам
Ерекше қорап/қорап (Жылдам, Оңай, Модульдік, Арзан): Бұл Нұсқаулықтың мақсаты - арзан, реттелетін, модульдік қорапты/қоршауды қалай жасау керектігін көрсету. Бұл менің бірінші нұсқаулықтарым (сонымен қатар ағылшын тілі менің бірінші тілім емес), сондықтан
Телефон мен гаджетті қалай қауіпсіз және қауіпсіз етуге болады: 4 қадам
Телефон мен гаджетті қалай қауіпсіздендіруге және қорғауға болады: бәрін жоғалтқан адамнан (әрине, асыра сілтеген). Демек, мойындау уақыты, менің алдыңғы сөйлемім айтқандай, мен өте ыңғайсызмын. Егер маған бір нәрсе жабыспаса, мен оны қате қоюдың үлкен мүмкіндігі бар, ұмыту бір жерде
Неғұрлым қауіпсіз: пойыз станцияларын қауіпсіз ету: 7 қадам
Қауіпсізірек: пойыз станцияларын қауіпсіз ету: Қазіргі кезде көптеген теміржол вокзалдары қауіпсіздіктің жоқтығынан, кедергілер мен пойыздың келе жатқанын ескертуіне байланысты қауіпсіз емес. Біз мұны түзету қажет екенін көрдік. Бұл мәселені шешу үшін біз Safer Better құрдық. Біз діріл сенсорларын, қозғалыс сенсорларын қолдандық және