Hindi pangkaraniwang lock ng kumbinasyon sa Arduino
Upang tipunin ito kailangan mong gumamit ng isang espesyal na aparato ng mga hugis-parihaba na pulses, pati na rin ang ilang mga counter at isang magbunton. Ngunit ang natapos na aparato ay magkakaroon ng malalaking pangkalahatang sukat at magiging mahirap magamit. Bilang isang patakaran, ang gayong mga saloobin ay pinagmumultuhan. Ang unang hakbang sa pagsasakatuparan ng isang panaginip ay ang paglikha ng isang programa para sa Arduino. Ito ay magsisilbing isang lock ng kumbinasyon. Upang mabuksan ito, kakailanganin mong pindutin ang hindi isang susi, ngunit marami, at gawin ito nang sabay-sabay. Ang natapos na pamamaraan ay ganito:
Ang kalidad ng larawan ay hindi ang pinakamahusay, ngunit ang koneksyon ay ginawa sa lupa, D3, D5, D7, D9 at D11.
Ang code ay ipinakita sa ibaba:
const int ina = 3;
const int inb = 5;
const int inc = 9;
const int ledPin = 13;
int i = 1000;
byte a = 0;
byte b = 0;
byte c = 0;
byte d = 0;
hindi naka-lock na mahabang oras = 0; // huwag kalimutan ang lahat ng nangangailangan ng isang millis () na halaga
unsigned long temp = 0; // store sa hindi naka -ignign na mahaba
byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // mga code talaga
byte keyb [] = {1, 1, 1, 1, 0, 1, 0, 0};
byte keyc [] = {1, 0, 1, 0, 1, 1, 1, 0};
byte k = 0;
walang pag-setup () {
pinMode (ina, INPUT_PULLUP); // 3 input na konektado sa mga pindutan
pinMode (inb, INPUT_PULLUP);
pinMode (inc, INPUT_PULLUP);
pinMode (ledPin, OUTPUT); // built-in na LED sa ika-13 na pin
pinMode (7, OUTPUT);
pinMode (11, OUTPUT);
digitalWrite (7, LOW); // palitan ang mundo
digitalWrite (11, LOW);
oras = millis (); // kinakailangan upang mabilang oras
}
walang bisa blinktwice () {// double flashing LED
digitalWrite (ledPin, HIGH);
pagkaantala (100);
digitalWrite (ledPin, LOW);
pagkaantala (100);
digitalWrite (ledPin, HIGH);
pagkaantala (100);
digitalWrite (ledPin, LOW);
pagkaantala (200);
}
walang bisa na loop () {
kung (k == 0) {
blinktwice (); // prompt para sa code
}
kung (k == 8) {
digitalWrite (ledPin, HIGH);
pagkaantala (3000);
k ay 0;
}
isang = digitalRead (ina); // basahin ang mga antas ng signal mula sa mga pindutan - pinindot / hindi pinindot
b = digitalRead (inb);
c = digitalRead (inc);
pagkaantala (100); // susunod kung - proteksyon laban sa mga maling positibo, hindi mo magagamit
kung ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {
kung (isang == keya [k]) {
kung (b == keyb [k]) {
kung (c == keyc [k]) {
k ++;
}
}
}
}
kung (k == 1) {
kung (d == 0) {
oras = millis ();
d ++;
}
}
temp = millis ();
temp = temp - oras;
kung (temp> 10000) {
k ay 0;
d ay 0;
oras = millis ();
}
}
Upang maiwasan ang mga hindi kinakailangang mga katanungan tungkol sa code, ang ilang mga puntos ay dapat na linawin. Ang pag-setup ng function ay ginagamit upang magtalaga ng mga port. Ang susunod na pag-andar ay Input_Pullup, na kinakailangan upang madagdagan ang boltahe ng pin sa pamamagitan ng 5 V. Ginagawa ito gamit ang isang risistor. Dahil dito, hindi magaganap ang iba't ibang mga maikling circuit. Para sa kaginhawaan, inirerekumenda na gamitin ang function ng blinktwice. Sa pangkalahatan, kapag lumilikha ng iba't ibang mga programa, kailangan mong subukan ang iba pang mga pag-andar.
Matapos magtalaga ng mga pag-andar, ang signal ay binabasa mula sa mga port. Kung ang pindutan ay pinindot, pagkatapos ito ay ipahiwatig ng numero 1, at kung hindi - 2. Susunod, ang lahat ng mga halaga ay nasuri. Halimbawa, mayroong tulad ng isang pagsasama bilang 0,1,1. Nangangahulugan ito na ang unang susi ay pinindot at ang iba pang dalawa ay hindi. Kung ang lahat ng mga halaga ay totoo, kung gayon ang kondisyon 8 ay totoo rin. Ito ay napatunayan ng isang litaw na LED sa front panel. Susunod, kailangan mong magpasok ng isang tukoy na code na magsisilbi upang buksan ang pinto.
Ang mga huling elemento ng code ay ginagamit upang i-reset ang mga halaga ng counter. Ang ganitong pag-andar ay isinasagawa kung higit sa 10 segundo ang lumipas mula noong huling keystroke.Kung wala ang code na ito, maaari mong dumaan ang lahat ng mga posibleng pagpipilian, kahit na maraming mga ito. Matapos lumikha ng aparatong ito, kailangan mong subukan ito.