Neparasta kombinācijas atslēga uz Arduino
Lai to saliktu, jums jāizmanto īpaša taisnstūra impulsu ierīce, kā arī vairāki skaitītāji un kaudze. Bet gatavajai ierīcei būtu lieli vispārējie izmēri, un to būtu neērti lietot. Parasti šādas domas vajā. Pirmais solis sapņa īstenošanā bija programmas izveidošana Arduino. Tas kalpos kā kombinētā atslēga. Lai to atvērtu, būs jānospiež nevis viens taustiņš, bet gan vairāki, un tas jādara vienlaikus. Gatavā shēma izskatās šādi:
Attēla kvalitāte nav tā labākā, bet savienojums tiek veikts ar zemi, D3, D5, D7, D9 un D11.
Kods ir parādīts zemāk:
const int ina = 3;
const int inb = 5;
const int inc = 9;
const int ledPin = 13;
int i = 1000;
baits a = 0;
bits b = 0;
baits c = 0;
baits d = 0;
neparakstīts ilgs laiks = 0; // neaizmirstiet visu, kas ņem milisi () vērtību
neparakstīts garš temp = 0; // veikals neparakstīts ilgi
baitu keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // kodi faktiski
baitu keibs [] = {1, 1, 1, 1, 0, 1, 0, 0};
baitu taustiņš [] = {1, 0, 1, 0, 1, 1, 1, 0};
baits k = 0;
Nederīga iestatīšana () {
pinMode (ina, INPUT_PULLUP); // 3 ieejas, kas savienotas ar pogām
pinMode (inb, INPUT_PULLUP);
pinMode (ieskaitot, INPUT_PULLUP);
pinMode (ledPin, OUTPUT); // iebūvēta gaismas diode 13. tabulā
pinMode (7, OUTPUT);
pinMode (11, OUTPUT);
digitalWrite (7, LOW); // aizstāt zemi
digitalWrite (11, LOW);
laiks = milis (); // vajadzēja skaitīt laiku
}
void blinktwice () {// divreiz mirgojoša gaismas diode
digitalWrite (ledPin, HIGH);
kavēšanās (100);
digitalWrite (ledPin, LOW);
kavēšanās (100);
digitalWrite (ledPin, HIGH);
kavēšanās (100);
digitalWrite (ledPin, LOW);
kavēšanās (200);
}
tukšs cilpa () {
ja (k == 0) {
blinktwice (); // koda uzvedne
}
ja (k == 8) {
digitalWrite (ledPin, HIGH);
kavēšanās (3000);
k ir 0;
}
a = digitalRead (ina); // nolasīt signāla līmeni no pogām - nospiests / nav nospiests
b = digitalRead (inb);
c = digitalRead (inc);
kavēšanās (100); // nākamais ja - aizsardzība pret viltus pozitīviem, jūs nevarat izmantot
if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {
if (a == keya [k]) {
if (b == keyb [k]) {
if (c == keyc [k]) {
k ++;
}
}
}
}
ja (k == 1) {
ja (d == 0) {
laiks = milis ();
d ++;
}
}
temp = millis ();
temp = temp - laiks;
ja (temp> 10000) {
k ir 0;
d ir 0;
laiks = milis ();
}
}
Lai izvairītos no nevajadzīgiem jautājumiem par kodu, daži punkti ir jāprecizē. Iestatīšanas funkcija tiek izmantota portu piešķiršanai. Nākamā funkcija ir Input_Pullup, kas nepieciešama, lai tapas spriegumu palielinātu par 5 V. Tas tiek veikts, izmantojot rezistoru. Sakarā ar to dažādi īssavienojumi nenotiks. Lielākai ērtībai ieteicams izmantot funkciju blinktwice. Parasti, veidojot dažādas programmas, jums ir jāizmēģina citas funkcijas.
Pēc funkciju piešķiršanas signāls tiek nolasīts no portiem. Ja tiek nospiesta poga, to apzīmē ar ciparu 1, bet, ja nē, ar - 2. Tālāk visu vērtību analīze. Piemēram, parādījās tāda kombinācija kā 0,1,1. Tas nozīmē, ka tiek nospiests pirmais taustiņš, bet pārējie divi nav. Ja visas vērtības ir patiesas, tad arī 8. nosacījums ir taisnība. Par to liecina priekšējā paneļa iedegtā gaismas diode. Tālāk jums jāievada noteikts kods, kas kalpos durvju atvēršanai.
Pēdējie koda elementi tiek izmantoti, lai atiestatītu skaitītāja vērtības. Šāda funkcija tiek veikta, ja kopš pēdējā taustiņa nospiešanas ir pagājušas vairāk nekā 10 sekundes.Bez šī koda jūs varētu iziet visas iespējamās iespējas, lai gan to ir daudz. Pēc šīs ierīces izveidošanas jums tas jāpārbauda.