Необичайно комбинирано заключване на Arduino

Arduino е най-добрата система за копиране на всяко оборудване. Повечето идеи не биха били възможни без нея. Дълго време съществува такава идея: да се създаде специална комбинация за заключване за ардуино. За да го отворите, трябва да задържите определен ключ. В този случай бравата не трябва да се отваря, дори ако знаете правилния бутон. За да го отворите, е необходимо да издържате на определени интервали с помощта на мускулна памет. Такъв престъпник няма да може да извърши. Но това е само теория.

За да го сглобите, трябва да използвате специално устройство от правоъгълни импулси, както и няколко броячи и купчина. Но готовото устройство би имало големи габаритни размери и би било неудобно за използване. По правило подобни мисли преследват. Първата стъпка в осъществяването на една мечта беше създаването на програма за Arduino. Той ще служи като комбинирано заключване. За да го отворите, ще трябва да натиснете не един клавиш, а няколко, и да го направите едновременно. Готовата схема изглежда така:

Комбинирано заключване

Качеството на картината не е най-доброто, но връзката се осъществява със земята, D3, D5, D7, D9 и D11.

Кодът е представен по-долу:

const int ina = 3;





const int inb = 5;





const int inc = 9;





const int ledPin = 13;





int i = 1000;





байт a = 0;





байт b = 0;





байт c = 0;





байт d = 0;





неподписано дълго време = 0; // не забравяйте всичко, което приема стойност milis ()





неподписан дълъг темп = 0; // съхранявайте в неподписан дълъг





байт кея [] = {0, 0, 0, 0, 0, 0, 0, 0}; // кодове всъщност





байт клавиш [] = {1, 1, 1, 1, 0, 1, 0, 0};





байт keyc [] = {1, 0, 1, 0, 1, 1, 1, 0};





байт k = 0;





 





настройка за невалидност () {





pinMode (ina, INPUT_PULLUP); // 3 входа, свързани към бутони





pinMode (inb, INPUT_PULLUP);





pinMode (вкл., INPUT_PULLUP);





pinMode (ledPin, OUTPUT); // вграден светодиод на 13-ия пин





pinMode (7, изход);





pinMode (11, изход);





digitalWrite (7, LOW); // замени земята





digitalWrite (11, LOW);





време = millis (); // необходими за броене на времето





}





 





void blinktwice () {// двойно мигащ светодиод





digitalWrite (ledPin, HIGH);





забавяне (100);





digitalWrite (ledPin, LOW);





забавяне (100);





digitalWrite (ledPin, HIGH);





забавяне (100);





digitalWrite (ledPin, LOW);





забавяне (200);





}





 





void loop () {





ако (k == 0) {





blinktwice (); // подкана за код





}





ако (k == 8) {





digitalWrite (ledPin, HIGH);





забавяне (3000);





k е 0;





}





a = digitalRead (ina); // четене на нивата на сигнала от бутоните - натиснат / не натиснат





b = digitalRead (inb);





c = digitalRead (inc);





забавяне (100); // next if - защита срещу фалшиви позитиви, не можете да използвате





if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {





ако (a == кея [k]) {





ако (b == keyb [k]) {





ако (c == keyc [k]) {





 





k ++;





}





}





}





}





ако (k == 1) {





ако (d == 0) {





време = millis ();





d ++;





}





}





temp = millis ();





temp = temp - време;





ако (темп.> 10000) {





k е 0;





d е 0;





време = millis ();





}





}



За да избегнете ненужните въпроси относно кода, някои точки трябва да се изяснят. Функцията за настройка се използва за присвояване на портове. Следващата функция е Input_Pullup, което е необходимо за увеличаване на напрежението на щифта с 5 V. Това става с помощта на резистор. Поради това няма да възникнат различни къси съединения. За удобство се препоръчва да използвате функцията blinktwice. Като цяло, когато създавате различни програми, трябва да опитате други функции.

След като функциите са назначени, сигналът се чете от портовете. Ако бутонът е натиснат, тогава той ще бъде обозначен с числото 1, а ако не - 2. След това, анализ на всички стойности. Например, имаше такава комбинация като 0,1,1. Това означава, че първият клавиш е натиснат, а другите два не. Ако всички стойности са верни, тогава условие 8 също е вярно. Това се доказва от светещ светодиод на предния панел. След това трябва да въведете конкретен код, който ще служи за отваряне на вратата.

Последните елементи на кода се използват за нулиране на стойностите на брояча. Такава функция се изпълнява, ако са минали повече от 10 секунди от последното натискане на клавиш.Без този код бихте могли да преминете през всички възможни опции, въпреки че ги има много. След като създадете това устройство, трябва да го тествате.

 

(3 гласа)
Зареждането ...

Добавете коментар