Arduino je najlepší systém na kopírovanie akéhokoľvek hardvéru. Väčšina nápadov by bez nej nebola možná. Už dlho existuje taká myšlienka: vytvoriť špeciálny kombinačný zámok na arduino. Ak ho chcete otvoriť, musíte podržať určitý kláves. V tomto prípade by sa zámok nemal otvárať, aj keď poznáte požadované tlačidlo. Na jej otvorenie je potrebné udržiavať určité intervaly pomocou svalovej pamäte. Taký zločinec nemôže. Ale toto všetko je len teória.
Na jeho zber je potrebné použiť špeciálne obdĺžnikové pulzné zariadenie, ako aj niekoľko počítadiel a hromadu. Ale hotové zariadenie by malo veľké rozmery a bolo by nepohodlné na používanie. Takéto myšlienky spravidla nedávajú odpočinok. Prvým krokom k splneniu tohto sna bolo vytvorenie programu pre Arduino. Je to ona, ktorá bude slúžiť ako kombinovaný zámok. Ak ho chcete otvoriť, musíte stlačiť nie jedno tlačidlo, ale niekoľko a urobiť to súčasne. Hotový okruh vyzerá takto:
Kvalita obrazu nie je najlepšia, ale spojenie so zemou, D3, D5, D7, D9 a D11.
Kód je zobrazený nižšie:
const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; byte a = 0; bajt b = 0; bajt c = 0; byte d = 0; dlhý čas bez znamienka = 0; // nezabudni na všetko, čo preberá millis () unsigned long temp = 0; // uloženie do dlhého bajtu bez znamienka keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // kódy správneho bajtu keyb [] = {1, 1, 1, 1, 0, 1, 0, 0}; byte keyc [] = {1, 0, 1, 0, 1, 1, 1, 0}; bajt k = 0; void setup () {pinMode (ina, INPUT_PULLUP); // 3 vstupy pripojené k tlačidlám pinMode (inb, INPUT_PULLUP); pinMode (vrátane, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // zabudovaná LED na pine 13 pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, NÍZKA); // nahradenie uzemnenia digitalWrite (11, LOW); čas = milis (); // potrebné na počítanie času} void bliknutie dvakrát () {// dvojité bliknutie LED digitalWrite (ledPin, HIGH); oneskorenie (100); digitalWrite (ledPin, LOW); oneskorenie (100); digitalWrite (ledPin, HIGH); oneskorenie (100); digitalWrite (ledPin, LOW); oneskorenie (200); } void loop () {if (k == 0) {bliknutí dvakrát (); // výzva na zadanie kódu} if (k == 8) {digitalWrite (ledPin, HIGH); oneskorenie (3000); k = 0; } a = digitalRead (ina); // úrovne signálu sa čítajú z tlačidiel - stlačené / nestlačené b = digitalRead (inb); c = digitalRead (inc); oneskorenie (100); // ďalšie if - ochrana proti falošným poplachom, nemusíte používať if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {if (a == keya [k]) {if (b == keyb [k]) {if (c = = keyc [k]) {k ++; }}}} if (k == 1) {if (d == 0) {čas = milis (); d++; }} teplota = milis (); temp = temp - čas; if (teplota > 10 000) {k = 0; d = 0; čas = milis (); } }
Aby sa predišlo zbytočným otázkam o kódexe, mali by sa objasniť niektoré body. Funkcia nastavenia sa používa na priradenie portov. Ďalšou funkciou je Input_Pullup, ktorá je potrebná na zvýšenie napätia pinu o 5 V. To sa vykonáva pomocou odporu. Vďaka tomu nedôjde k rôznym skratom. Pre väčšie pohodlie sa odporúča použiť funkciu blikania dvakrát. Vo všeobecnosti pri vytváraní rôznych programov treba skúšať aj iné funkcie.
Po priradení funkcií sa signál načíta z portov. Ak stlačíte tlačidlo, bude to označené číslom 1, a ak nie - 2. Ďalej sa analyzujú všetky hodnoty. Objavila sa napríklad kombinácia ako 0,1,1. To znamená, že prvé tlačidlo je stlačené a ďalšie dve nie. Ak sú všetky hodnoty pravdivé, platí aj podmienka 8. Svedčí o tom rozsvietená LED dióda na prednom paneli. Ďalej musíte zadať špecifický kód, ktorý bude slúžiť na otvorenie dverí.
Posledné prvky kódu slúžia na vynulovanie hodnôt počítadla. Táto funkcia sa vykoná, ak od posledného stlačenia tlačidla uplynulo viac ako 10 sekúnd. Bez tohto kódu bolo možné vymenovať všetky možné možnosti, aj keď ich je pomerne veľa. Po vytvorení tohto zariadenia ho musíte otestovať. Ešte Arduino projekty.