Blocare cu combinație Arduino - schemă

Arduino este cel mai bun sistem pentru copierea oricărui hardware. Majoritatea ideilor nu ar fi fost posibile fără ea. A existat de mult un astfel de gând: pentru a crea o încuietoare cu combinație specială pe arduino. Pentru a-l deschide, trebuie să țineți apăsată o anumită tastă. În acest caz, încuietoarea nu ar trebui să se deschidă, chiar dacă cunoașteți butonul dorit. Pentru a-l deschide, este necesar să se mențină anumite intervale folosind memoria musculară. Un astfel de criminal nu poate face. Dar toate acestea sunt doar teorie.

Pentru a-l colecta, trebuie să utilizați un dispozitiv special pentru impulsuri dreptunghiulare, precum și mai multe contoare și o grămadă. Dar dispozitivul finit ar avea dimensiuni mari și ar fi incomod de utilizat. De regulă, astfel de gânduri nu dau odihnă. Primul pas în realizarea acestui vis a fost crearea unui program pentru Arduino. Ea este cea care va servi drept lacăt cu combinație. Pentru a-l deschide, trebuie să apăsați nu o tastă, ci mai multe și să faceți acest lucru simultan. Circuitul terminat arată astfel:

Calitatea imaginii nu este cea mai bună, dar conexiunile se fac la pământ, D3, D5, D7, D9 și D11.

Codul este prezentat mai jos:

const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; octet a = 0; octet b = 0; octet c = 0; octet d = 0; timp lung nesemnat = 0; // nu uita tot ceea ce millis () ia pe unsigned long temp = 0; // stochează în keya byte lung nesemnată [] = {0, 0, 0, 0, 0, 0, 0, 0}; // codifică tasta octet adecvată b [] = {1, 1, 1, 1, 0, 1, 0, 0}; tasta octetc [] = {1, 0, 1, 0, 1, 1, 1, 0}; octet k = 0; void setup () {pinMode (ina, INPUT_PULLUP); // 3 intrări conectate la butoanele pinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // LED încorporat pe pin 13 pinMode (7, OUTPUT); pinMode (11, IEȘIRE); digitalWrite (7, LOW); // înlocuiește masa digitalWrite (11, LOW); timp = milis (); // necesar pentru a număra timpul} void blinktwice () {// dublu clipire a LED-ului digitalWrite (ledPin, HIGH); întârziere (100); digitalWrite (ledPin, LOW); întârziere (100); digitalWrite (ledPin, HIGH); întârziere (100); digitalWrite (ledPin, LOW); întârziere (200); } bucla goală () {dacă (k == 0) {clipește de două ori (); // solicită introducerea codului} dacă (k == 8) {digitalWrite (ledPin, HIGH); întârziere (3000); k = 0; } a = digitalRead (ina); // nivelurile semnalului sunt citite de la butoane - apăsate / neapăsate b = digitalRead (inb); c = digitalRead (inc); întârziere (100); // următorul dacă - protecție împotriva falselor pozitive, nu trebuie să utilizați if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {dacă (a == tasta [k]) {dacă (b == tastatura [k]) {dacă (c = = keyc [k]) {k ++; }}}} dacă (k == 1) {dacă (d == 0) {timp = milis (); d++; }} temp = milis (); temp = temp - timp; dacă (temp> 10000) {k = 0; d = 0; timp = milis (); } } 


Pentru a evita întrebările inutile despre cod, unele puncte ar trebui clarificate. Funcția de configurare este utilizată pentru a atribui porturi. Următoarea funcție este Input_Pullup, care este necesară pentru a crește tensiunea pinului cu 5 V. Acest lucru se face folosind un rezistor. Din acest motiv, diferite scurtcircuite nu vor avea loc. Pentru mai mult confort, este recomandat să utilizați funcția blinktwice. În general, atunci când creați diverse programe, trebuie să încercați și alte funcții.

După atribuirea funcțiilor, semnalul este citit de la porturi. Dacă butonul este apăsat, atunci acesta va fi indicat de numărul 1, iar dacă nu - 2. În plus, toate valorile sunt analizate. De exemplu, a apărut o combinație precum 0,1,1. Aceasta înseamnă că prima tastă este apăsată, iar celelalte două nu. Dacă toate valorile sunt adevărate, atunci condiția 8 este, de asemenea, adevărată. Acest lucru este evidențiat de LED-ul iluminat de pe panoul frontal. Apoi, trebuie să introduceți un cod specific care va servi la deschiderea ușii.

Ultimele elemente ale codului sunt folosite pentru a reseta valorile contorului. Această funcție este efectuată dacă au trecut mai mult de 10 secunde de la ultima apăsare a tastei. Fără acest cod, a fost posibilă enumerarea tuturor opțiunilor posibile, deși există destul de multe dintre ele. După crearea acestui dispozitiv, trebuie să-l testați. Inca Proiecte Arduino.

Ca(0)Nu-mi place(0)

instagram viewer