Ασυνήθιστο συνδυασμό κλειδώματος στο Arduino

Το 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;

byte a = 0;

byte b = 0;

byte c = 0;

byte d = 0;

χωρίς υπογραφή μεγάλο χρονικό διάστημα = 0; // μην ξεχνάτε όλα όσα παίρνουν μια τιμή millis ()

unsigned long temp = 0; // αποθηκεύστε σε χωρίς υπογραφή μεγάλο

byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // κωδικοί στην πραγματικότητα

byte keyb [] = {1, 1, 1, 1, 0, 1, 0, 0};

byte keyc [] = {1, 0, 1, 0, 1, 1, 1, 0};

byte k = 0;

 

άκυρη ρύθμιση () {

pinMode (σε, INPUT_PULLUP); // 3 είσοδοι συνδεδεμένες σε κουμπιά

pinMode (inb, INPUT_PULLUP);

pinMode (inc, INPUT_PULLUP);

pinMode (ledPin, OUTPUT); // ενσωματωμένο LED στον 13ο πείρο

pinMode (7, ΕΞΟΔΟΣ);

pinMode (11, ΕΞΟΔΟΣ);

digitalWrite (7, LOW); // αντικαταστήστε τη γη

digitalWrite (11, LOW);

χρόνος = χιλιοστά (); // απαιτείται να μετρήσω το χρόνο

}

 

void blinktwice () {// διπλό LED που αναβοσβήνει

digitalWrite (ledPin, HIGH);

καθυστέρηση (100)

digitalWrite (ledPin, LOW);

καθυστέρηση (100)

digitalWrite (ledPin, HIGH);

καθυστέρηση (100)

digitalWrite (ledPin, LOW);

καθυστέρηση (200);

}

 

κενός βρόχος () {

αν (k == 0) {

blinktwice (); // προτροπή για κωδικό

}

αν (k == 8) {

digitalWrite (ledPin, HIGH);

καθυστέρηση (3000)

το k είναι 0;

}

a = digitalRead (ina); // ανάγνωση επιπέδων σήματος από κουμπιά - πατημένο / όχι

b = digitalRead (inb);

c = digitalRead (inc);

καθυστέρηση (100) // επόμενο αν - προστασία από ψευδώς θετικά, δεν μπορείτε να χρησιμοποιήσετε

εάν ([digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {

αν (a == keya [k]) {

αν (b == keyb [k]) {

αν (c == keyc [k]) {

 

k ++;

}

}

}

}

αν (k == 1) {

αν (d == 0) {

χρόνος = χιλιοστά ();

δ ++;

}

}

temp = millis ();

temp = temp - χρόνος;

εάν (θερμοκρασία> 10000) {

το k είναι 0;

d είναι 0;

χρόνος = χιλιοστά ();

}

}


Για να αποφευχθούν περιττές ερωτήσεις σχετικά με τον κώδικα, ορισμένα σημεία πρέπει να διευκρινιστούν. Η λειτουργία εγκατάστασης χρησιμοποιείται για την εκχώρηση θυρών. Η επόμενη συνάρτηση είναι Input_Pullup, η οποία είναι απαραίτητη για την αύξηση της τάσης του πείρου κατά 5 V. Αυτό γίνεται χρησιμοποιώντας μια αντίσταση. Λόγω αυτού, δεν θα εμφανιστούν διάφορα βραχυκύκλωμα. Για μεγαλύτερη ευκολία, συνιστάται η χρήση της λειτουργίας blinktwice. Σε γενικές γραμμές, κατά τη δημιουργία διαφόρων προγραμμάτων, πρέπει να δοκιμάσετε άλλες λειτουργίες.

Μετά την εκχώρηση των λειτουργιών, το σήμα διαβάζεται από τις θύρες. Εάν πατηθεί το κουμπί, τότε θα υποδεικνύεται από τον αριθμό 1, και εάν όχι - 2. Στη συνέχεια, μια ανάλυση όλων των τιμών. Για παράδειγμα, υπήρχε ένας συνδυασμός όπως 0,1,1. Αυτό σημαίνει ότι το πρώτο πλήκτρο είναι πατημένο και τα άλλα δύο δεν είναι. Εάν όλες οι τιμές είναι αληθείς, τότε η συνθήκη 8 ισχύει επίσης. Αυτό αποδεικνύεται από ένα αναμμένο LED στον μπροστινό πίνακα. Στη συνέχεια, πρέπει να εισαγάγετε έναν συγκεκριμένο κωδικό που θα χρησιμεύσει για το άνοιγμα της πόρτας.

Τα τελευταία στοιχεία του κώδικα χρησιμοποιούνται για την επαναφορά των τιμών μετρητή. Μια τέτοια λειτουργία εκτελείται εάν έχουν περάσει περισσότερα από 10 δευτερόλεπτα από την τελευταία πληκτρολόγηση.Χωρίς αυτόν τον κωδικό, θα μπορούσατε να εξετάσετε όλες τις πιθανές επιλογές, αν και υπάρχουν πολλές από αυτές. Αφού δημιουργήσετε αυτήν τη συσκευή, πρέπει να τη δοκιμάσετε.

 

(3 ψήφοι)
Φόρτωση ...

Προσθέστε ένα σχόλιο