Epätavallinen yhdistelmälukko Arduinossa

Arduino on paras järjestelmä minkä tahansa laitteen kopiointiin. Suurin osa ideoista ei olisi ollut mahdollista ilman häntä. Jo pitkään on ollut tällainen idea: luoda erityinen yhdistelmälukko arduinolle. Avaa se pitämällä tiettyä näppäintä painettuna. Tässä tapauksessa lukon ei pitäisi avautua, vaikka tiedät oikean painikkeen. Sen avaamiseksi on välttämätöntä kestää tietyin väliajoin lihasmuistia käyttämällä. Tällainen rikollinen ei pysty tekemään. Mutta tämä on vain teoria.

Sen kokoamiseksi sinun on käytettävä erityistä suorakulmaisten pulssien laitetta, useita laskuria ja kasa. Mutta valmiilla laitteella olisi suuret kokonaismitat ja sen käyttö olisi hankalaa. Sellaiset ajatukset kummittelevat yleensä. Ensimmäinen askel unen toteutumisessa oli ohjelman luominen Arduinolle. Se toimii yhdistelmälukkona. Avataksesi sen, sinun ei tarvitse painaa yhtä näppäintä, vaan useita ja tehdä se samanaikaisesti. Valmis järjestelmä näyttää tältä:

Yhdistelmälukko

Kuvanlaatu ei ole paras, mutta yhteys on tehty maahan, D3, D5, D7, D9 ja D11.

Koodi esitetään alla:

const int ina = 3;







const int inb = 5;







const int inc = 9;







const int ledPin = 13;







int i = 1000;







tavu a = 0;







tavu b = 0;







tavu c = 0;







tavu d = 0;







allekirjoittamaton pitkä aika = 0; // älä unohda kaikkea mitä tarvitaan millis () arvoon







allekirjoittamaton pitkä temp = 0; // säilytä allekirjoittamatta pitkään







tavukeya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // koodit todella







tavukeyb [] = {1, 1, 1, 1, 0, 1, 0, 0};







tavun keyc [] = {1, 0, 1, 0, 1, 1, 1, 0};







tavu k = 0;







 







tyhjä asennus () {







pinMode (ina, INPUT_PULLUP); // 3 tuloa kytketty painikkeisiin







pinMode (inb, INPUT_PULLUP);







pinMode (sis. INPUT_PULLUP);







pinMode (ledPin, OUTPUT); // sisäänrakennettu LED 13. nastaan







pinMode (7, OUTPUT);







pinMode (11, OUTPUT);







digitalWrite (7, LOW); // korvaa maa







digitalWrite (11, LOW);







aika = millis (); // tarvitaan laskea aikaa







}







 







tyhjä blinktwice () {// kaksinkertainen vilkkuva LED







digitalWrite (ledPin, HIGH);







viive (100);







digitalWrite (ledPin, LOW);







viive (100);







digitalWrite (ledPin, HIGH);







viive (100);







digitalWrite (ledPin, LOW);







viive (200);







}







 







tyhjä silmukka () {







if (k == 0) {







blinktwice (); // kysymys koodista







}







if (k == 8) {







digitalWrite (ledPin, HIGH);







viive (3000);







k on 0;







}







a = digitalRead (ina); // lue signaalitasot painikkeista - painetaan / ei painettu







b = digitalRead (inb);







c = digitalRead (inc);







viive (100); // seuraavaksi jos - suoja vääriä positiivisia vastaan, et voi käyttää







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) {







aika = millis ();







d ++;







}







}







temp = millis ();







temp = temp - aika;







if (lämpötila> 10000) {







k on 0;







d on 0;







aika = millis ();







}







}




Jotkut kohdat olisi selkeytettävä, jotta vältetään tarpeettomat koodikysymykset. Asetustoimintoa käytetään porttien määrittämiseen. Seuraava toiminto on Input_Pullup, joka on tarpeen nostaaksesi tapin jännitettä 5 V. Tämä tehdään vastuksella. Tästä syystä erilaisia ​​oikosulkuja ei tapahdu. Mukavuuden lisäämiseksi on suositeltavaa käyttää blinktwice-toimintoa. Yleensä, kun luot erilaisia ​​ohjelmia, sinun on kokeiltava muita toimintoja.

Kun toiminnot on määritetty, signaali luetaan porteista. Jos painiketta painetaan, se merkitään numerolla 1, ja jos ei - 2. Seuraavaksi analyysi kaikista arvoista. Esimerkiksi oli sellainen yhdistelmä kuin 0,1,1. Tämä tarkoittaa, että ensimmäistä näppäintä painetaan ja kahta muuta ei. Jos kaikki arvot ovat totta, niin myös ehto 8 on totta. Tätä todistaa etupaneelin palava LED. Seuraavaksi sinun on annettava erityinen koodi, joka toimii oven avaamiseksi.

Koodin viimeisiä osia käytetään laskuriarvojen nollaamiseen. Tällainen toiminto suoritetaan, jos viimeisestä näppäinpainalluksesta on kulunut yli 10 sekuntia.Ilman tätä koodia voit käydä läpi kaikki mahdolliset vaihtoehdot, vaikka niitä onkin paljon. Tämän laitteen luomisen jälkeen sinun on testattava se.

 

(3 ääntä)
Ladataan ...

Lisää kommentti