Serrure à combinaison inhabituelle sur Arduino

Arduino est le meilleur système pour copier n'importe quel équipement. La plupart des idées n'auraient pas été possibles sans elle. Depuis longtemps, une telle idée existe: créer une serrure à combinaison spéciale pour Arduino. Pour l'ouvrir, vous devez maintenir enfoncée une certaine clé. Dans ce cas, la serrure ne doit pas s'ouvrir, même si vous connaissez le bon bouton. Pour l'ouvrir, il est nécessaire de résister à certains intervalles en utilisant la mémoire musculaire. Un tel criminel ne pourra pas commettre. Mais ce n'est qu'une théorie.

Pour l'assembler, vous devez utiliser un appareil spécial d'impulsions rectangulaires, ainsi que plusieurs compteurs et un tas. Mais le dispositif fini aurait de grandes dimensions hors tout et il serait peu pratique à utiliser. En règle générale, de telles pensées hantent. La première étape dans la réalisation d'un rêve a été la création d'un programme pour Arduino. Il servira de serrure à combinaison. Pour l'ouvrir, vous devrez appuyer non pas sur une touche, mais sur plusieurs, et le faire simultanément. Le schéma fini ressemble à ceci:

Serrure à combinaison

La qualité d'image n'est pas la meilleure, mais la connexion se fait au sol, D3, D5, D7, D9 et D11.

Le code est présenté ci-dessous:

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;

long temps non signé = 0; // n'oublie pas tout ce qui prend une valeur millis ()

long temp non signé = 0; // stocker en long non signé

octet keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // codes en fait

octet cléb [] = {1, 1, 1, 1, 0, 1, 0, 0};

octet cléc [] = {1, 0, 1, 0, 1, 1, 1, 0};

octet k = 0;

 

void setup () {

pinMode (ina, INPUT_PULLUP); // 3 entrées connectées aux boutons

pinMode (inb, INPUT_PULLUP);

pinMode (inc, INPUT_PULLUP);

pinMode (ledPin, OUTPUT); // LED intégrée sur la 13ème broche

pinMode (7, SORTIE);

pinMode (11, SORTIE);

digitalWrite (7, BAS); // remplace la terre

digitalWrite (11, LOW);

temps = millis (); // devait compter le temps

}

 

void blinktwice () {// LED à double clignotement

digitalWrite (ledPin, HIGH);

retard (100);

digitalWrite (ledPin, LOW);

retard (100);

digitalWrite (ledPin, HIGH);

retard (100);

digitalWrite (ledPin, LOW);

retard (200);

}

 

boucle vide () {

si (k == 0) {

blinktwice (); // invite pour le code

}

si (k == 8) {

digitalWrite (ledPin, HIGH);

retard (3000);

k est 0;

}

a = digitalRead (ina); // lire les niveaux de signal des boutons - pressé / non pressé

b = digitalRead (inb);

c = digitalRead (inc);

retard (100); // next if - protection contre les faux positifs, vous ne pouvez pas utiliser

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

if (a == keya [k]) {

if (b == keyb [k]) {

if (c == keyc [k]) {

 

k ++;

}

}

}

}

si (k == 1) {

si (d == 0) {

temps = millis ();

d ++;

}

}

temp = millis ();

temp = temp - temps;

si (temp> 10000) {

k est 0;

d est 0;

temps = millis ();

}

}


Pour éviter des questions inutiles sur le code, certains points doivent être clarifiés. La fonction de configuration est utilisée pour attribuer des ports. La fonction suivante est Input_Pullup, qui est nécessaire pour augmenter la tension des broches de 5 V. Cela se fait à l'aide d'une résistance. Pour cette raison, divers courts-circuits ne se produiront pas. Pour plus de commodité, il est recommandé d'utiliser la fonction blinktwice. En général, lors de la création de divers programmes, vous devez essayer d'autres fonctions.

Une fois les fonctions attribuées, le signal est lu à partir des ports. Si le bouton est enfoncé, il sera indiqué par le chiffre 1, sinon - 2. Ensuite, une analyse de toutes les valeurs. Par exemple, il y avait une telle combinaison que 0,1,1. Cela signifie que la première touche est enfoncée et que les deux autres ne le sont pas. Si toutes les valeurs sont vraies, la condition 8 est également vraie. Cela est démontré par une LED allumée sur le panneau avant. Ensuite, vous devez entrer un code spécifique qui servira à ouvrir la porte.

Les derniers éléments de code sont utilisés pour réinitialiser les valeurs du compteur. Une telle fonction est exécutée si plus de 10 secondes se sont écoulées depuis la dernière frappe.Sans ce code, vous pourriez passer par toutes les options possibles, bien qu'il y en ait beaucoup. Après avoir créé cet appareil, vous devez le tester.

 

(3 votes)
Chargement ...

Ajouter un commentaire