Arduino kombinuotas užraktas - schema

„Arduino“ yra geriausia bet kokios aparatinės įrangos kopijavimo sistema. Be jos dauguma idėjų nebūtų įgyvendintos. Jau seniai buvo tokia mintis: sukurti specialią kombinuotą užraktą ant arduino. Norėdami jį atidaryti, turite laikyti nuspaudę tam tikrą klavišą. Tokiu atveju užraktas neturėtų atsidaryti, net jei žinote norimą mygtuką. Norint jį atidaryti, būtina išlaikyti tam tikrus intervalus, naudojant raumenų atmintį. Toks nusikaltėlis negali. Bet visa tai tik teorija.

Norėdami jį surinkti, turite naudoti specialų įrenginį stačiakampiams impulsams, taip pat kelis skaitiklius ir krūvą. Tačiau gatavas įrenginys būtų didelių matmenų ir būtų nepatogus naudoti. Paprastai tokios mintys neduoda ramybės. Pirmasis žingsnis įgyvendinant svajonę buvo programos „Arduino“ sukūrimas. Būtent ji tarnaus kaip kombinuota spyna. Norint jį atidaryti, reikia paspausti ne vieną klavišą, o kelis ir daryti tai vienu metu. Baigta grandinė atrodo taip:

Vaizdo kokybė nėra pati geriausia, bet jungtys yra padarytos į žemę, D3, D5, D7, D9 ir D11.

Kodas parodytas žemiau:

const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; baitas a = 0; baitas b = 0; baitas c = 0; baitas d = 0; nepasirašytas ilgas laikas = 0; // nepamirškite visko, ką millis () įgauna be ženklų ilgą temp = 0; // saugoti nepasirašyto ilgo baito klavišą [] = {0, 0, 0, 0, 0, 0, 0, 0}; // kodai tinkamas baitų klavišas [] = {1, 1, 1, 1, 0, 1, 0, 0}; baito klavišas [] = {1, 0, 1, 0, 1, 1, 1, 0}; baitas k = 0; void setup () {pinMode (ina, INPUT_PULLUP); // 3 įėjimai prijungti prie mygtukų pinMode (inb, INPUT_PULLUP); pinMode (įskaitant, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // įmontuotas šviesos diodas ant kaiščio 13 pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, LOW); // pakeisti įžeminimą digitalWrite (11, LOW); laikas = miličiai (); // reikalingas laikui skaičiuoti} void blinkdukart () {// du kartus sumirksi šviesos diodas digitalWrite (ledPin, HIGH); vėlavimas (100); digitalWrite (ledPin, LOW); vėlavimas (100); digitalWrite (ledPin, HIGH); vėlavimas (100); digitalWrite (ledPin, LOW); vėlavimas (200); } tuščioji kilpa () {jei (k == 0) {mirksi du kartus (); // raginama įvesti kodą} if (k == 8) {digitalWrite (ledPin, HIGH); vėlavimas (3000); k = 0; } a = skaitmeninis skaitymas (ina); // signalo lygiai nuskaitomi iš mygtukų - paspaustas / nepaspaustas b = digitalRead (inb); c = skaitmeninis skaitymas (įskaitant); vėlavimas (100); // Kitas if yra apsauga nuo klaidingų teigiamų rezultatų, jums nereikia naudoti if ((digitalRead (ina) == a) && (skaitmeninis skaitymas (inb) == b) && (skaitmeninis skaitymas (inc) == c)) {if (a == keya [k]) {if (b == keyb [k]) {if (c = = keyc [k]) {k ++; }}}} if (k == 1) {if (d == 0) {laikas = miličiai (); d ++; }} temp = miličiai (); temp = temp - laikas; if (temp> 10000) {k = 0; d = 0; laikas = miličiai (); } } 


Kad nekiltų nereikalingų klausimų dėl kodekso, reikėtų patikslinti kai kuriuos dalykus. Sąrankos funkcija naudojama prievadams priskirti. Kita funkcija yra Input_Pullup, kuri reikalinga norint padidinti kontakto įtampą 5 V. Tai atliekama naudojant rezistorių. Dėl to įvairių trumpųjų jungimų neatsiras. Kad būtų patogiau, rekomenduojama naudoti mirksėjimo du kartus funkciją. Apskritai, kuriant įvairias programas, reikia išbandyti kitas funkcijas.

Priskyrus funkcijas, signalas nuskaitomas iš prievadų. Jei mygtukas bus paspaustas, jis bus rodomas skaičiumi 1, o jei ne - 2. Be to, analizuojamos visos vertės. Pavyzdžiui, atsirado toks derinys kaip 0,1,1. Tai reiškia, kad pirmasis klavišas yra paspaustas, o kiti du - ne. Jei visos reikšmės yra teisingos, tada 8 sąlyga taip pat yra teisinga. Tai liudija priekiniame skydelyje esantis šviečiantis šviesos diodas. Tada turite įvesti konkretų kodą, kuris bus naudojamas atidarant duris.

Paskutiniai kodo elementai naudojami skaitiklio reikšmėms iš naujo nustatyti. Ši funkcija atliekama, jei nuo paskutinio klavišo paspaudimo praėjo daugiau nei 10 sekundžių. Be šio kodo buvo galima išvardinti visus galimus variantus, nors jų yra nemažai. Sukūrę šį įrenginį, turite jį išbandyti. Dar Arduino projektai.

Kaip(0)man nepatinka(0)

instagram viewer