Բովանդակություն:
Video: Պահարան ՝ 3 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Սա այն է, ինչ պետք է լինի ձեր վերջնական արդյունքը այն միացնելուց և ծածկագիրը վերբեռնելուց հետո:
Քայլ 1: Այն, ինչ ձեզ հարկավոր կլինի:
Jumper Wires, 220 OHM ռեզիստոր, 16x2 LCD էկրան, կոճակներ, Servo Motor, Breadboard, Arduino Uno:
Քայլ 2: Կոդ
Jamesեյմս Չինչայ
#ներառում
#ներառել #ներառել
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 կոճակ Pin1 = 2; int կոճակ Pin2 = 3; int կոճակ Pin3 = 4; int կոճակ Pin4 = 5;
int enterbutton = 10; int clearlockbutton = 13;
Servo myServo; // կոնստրուկտոր ծրագրի տեղադրում void setup () {
myServo.attach (A1);
int EEPROMCodeOK = ճշմարիտ; համար (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); եթե (! (strrchr ("1123456789", Str [Pos]))) {// վավեր կոդ չէ EEPROMCodeOK = կեղծ; }} 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 (մուտքագրման կոճակ, INPUT_PULLUP); pinMode (հստակ կողպեք, INPUT_PULLUP);
lcd. սկսել (16, 2); lcd.setCursor (0, 0); // հաղորդագրությունների տեղադրում lcd.print («Բարև պարոն Birch»); ուշացում (2000); lcd. հստակ (); lcd.setCursor (0, 0); // գաղտնաբառի արագ հուշում lcd.print ("Գաղտնաբառ:");
DisplayTimer = millis () + 200; }
դատարկ շրջան () {
Կողպել ();
Pos = սահմանափակում (Pos, 0, CodeLength); // կարդալ կոճակներ int buttonState1 = digitalRead (buttonPin1); int buttonState2 = digitalRead (buttonPin2); int buttonState3 = digitalRead (buttonPin3); int buttonState4 = digitalRead (կոճակ Pin4);
int clButtonState = digitalRead (հստակ կողպեք); int enterButtonState = digitalRead (մուտքագրման կոճակ);
lcd.setCursor (9, 0); // եթե ակտիվացնելու պահանջները (buttonState1 == LOW) {Str [Pos] = '1'; Պոզ ++; Str [Pos] = '\ 0'; ուշացում (250); while (digitalRead (buttonPin1) == LOW);
}
այլապես, եթե (buttonState2 == LOW) {Str [Pos] = '2'; Պոզ ++; Str [Pos] = '\ 0'; ուշացում (250); while (digitalRead (buttonPin2) == LOW);
}
այլապես եթե (buttonState3 == LOW) {Str [Pos] = '3'; Պոզ ++; Str [Pos] = '\ 0'; ուշացում (250); while (digitalRead (buttonPin3) == LOW); }
այլապես եթե (buttonState4 == LOW) {Str [Pos] = '4'; Պոզ ++; Str [Pos] = '\ 0'; ուշացում (250); իսկ (digitalRead (buttonPin4) == OWԱOWՐ);
} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Պոզ ++; Str [Pos] = '\ 0'; ուշացում (250); while (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Unlocked = true; lcd.setCursor (0, 0); lcd.print («Մուտքը տրված է»); ուշացում (2000); lcd. հստակ (); lcd.print ("Unlocked"); } 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. հստակ (); lcd.print («Մուտքը մերժված է»); ուշացում (2000); lcd. հստակ (); lcd.print ("Գաղտնաբառ:");
} // ապակողպման կոդը (Unlocked) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {հետաձգում (200); lcd. հստակ (); lcd.print («Կողպված»); ուշացում (2000); lcd. հստակ (); Ապակողպված = կեղծ; SaveTimer = millis () + 30000; }}
ClearCode ();
}
այլապես եթե (clButtonState == LOW) {հետաձգում (500);
while (clearlockbutton == LOW); եթե ((millis () - SaveTimer)> 4500) {
}
ClearCode ();
}
եթե ((երկար) (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 Բացել () {
myServo.write (150);
} // ծրագրի կողպման կոճակ void Lock () {
myServo.write (50);
}
Քայլ 3:
ամեն ինչ անելուց հետո այն պետք է ունենա այս տեսքը.
Խորհուրդ ենք տալիս:
Տեղադրված պահարան. 4 քայլ
Ներկառուցված պահարան. Երջանիկ աուրայի մեջ իրերը ներսից պահելը մի բան է, որը նման է հուզմունքի հսկայական ցնցումների: «Կողպեքի կողպեք» անվանումն իսկապես իմ ամենօրյա հոդվածների ամենաթանկարժեք մասն է, որն իր բնույթով ամենուր է, բայց ի՞նչ է դա անում: Պարզ
Հեռախոսի պահարան ՝ 5 քայլ (նկարներով)
Հեռախոսի պահարան. Փոփոխություն ՝ Alissahuang Ես կախված եմ իմ հեռախոսից, որը չեմ կարող կենտրոնանալ իմ տնային աշխատանքի վրա: Ամեն օր, երբ տուն եմ գնում, սկզբում խաղում եմ հեռախոսով, հետո ՝ մոտավորապես 22: Ես սկսեցի իմ տնային աշխատանքը, որն արդեն ուշ է: Այսպիսով, ամեն օր ես քնում էի գիշերվա ժամը 2 -ին ՝ պատճառելով
Պատվերով Bartop Արկադային պահարան. 32 քայլ (նկարներով)
Բարև և շնորհակալություն, որ ստուգեցիք իմ առաջին հրահանգը, թե ինչպես կառուցել հարմարեցված բարտոպային արկադային պահարան: Arcades- ն իսկապես սկսել է վերադառնալ, քանի որ մենք մեծանում ենք և ցանկանում ենք վայելել որոշ նոստալգիկ ռետրո խաղեր: Դա հիանալի հնարավորություն է տալիս
Կոկտեյլային սեղան Արկադային պահարան `8 քայլ
Cocktail Table Arcade Cabinet. Ես որոշեցի ինչ -որ լավ բան անել ինձ համար և օգտագործել արձակուրդային հանգստյան օրերս `այս նախագիծը վերջապես ավարտելու համար:
IPhone 5 և Samsung S5 վարդակից պահարան և պասիվ ուժեղացուցիչ ՝ 3 քայլ
IPhone 5 և Samsung S5 վարդակների դարակ և պասիվ ուժեղացուցիչ. Այս հրահանգը ցույց կտա եռաչափ տպման համար նախատեսված վարդակի նախագծման գործընթացը և ուժեղացուցիչ; պասիվ ուժեղացուցիչ, այնպես էլ iPhone 5 -ի համար & Samsung S5. Ֆայլերը հասանելի կլինեն մոնտաժման համար `Միացյալ Թագավորության ստանդարտ կրկնակի վարդակով և դատարկ դասավորությամբ ստանդարտի համար