Σε αυτό το tutorial θα δούμε την λειτουργία ενός keypad 4x4 με arduino. Πρόκειται για ένα keypad το οποίο έχει πλήκτρα αριθμητικά, σύμβολα και γράμματα.
Συγκεκριμένα έχει αριθμούς από το 0 έως 9, #, *, A, B, C, D τα οποία μπορούμε να πιέσουμε και να ελέγξουμε την ροή του προγράμματός μας.
Τα πληκτρολόγια η keypad είναι ένας πολύ ωραίος τρόπος αλληλεπίδρασης μεταξύ των χρηστών και του προγράμματος.
Υπάρχουν διαφορετικά Keypad τα οποία αν καλοσκεφτείτε είναι στην ουσία διακόπτες όπου πιέζοντας κάποιο πλήκτρο, στην πραγματικότητα κλείνετε έναν διακόπτη.
Μπορούμε για παράδειγμα να ενεργοποιήσουμε μία κλειδαριά ή ένα φως, μετά από επιτυχή εισαγωγή ενός μυστικού κωδικού.
Πως λειτουργεί το Πληκτρολόγιο arduino 4x4 ;
Πριν μπούμε στο project θα πρέπει να καταλάβουμε πως ακριβώς λειτουργεί το συγκεκριμένο keypad 4x4 για arduino και πως μπορούμε να βρούμε ποια καλώδια αντιστοιχούν σε κάθε αριθμό, σύμβολο ή χαρακτήρα.
Αν δεν υπήρχε η βιβλιοθήκη που θα χρησιμοποιήσουμε παρακάτω για το πληκτρολόγιο μας, τα πράγματα θα ήταν ζόρικα.
Θα έπρεπε να σκεφτούμε με βάση το παρακάτω διάγραμμα ποιες επαφές κλείνουν σε κάθε πάτημα πλήκτρου. Σίγουρα θα χρειαζόμασταν περισσότερες εισόδους προς το Arduino.
To project
Θα χρησιμοποιήσουμε το πληκτρολόγιο για να εισάγουμε έναν κωδικό ο οποίος θα ανοίγει μία ηλεκτρική πόρτα, ενεργοποιώντας ένα ρελέ. Ο χρήστης θα έχει τη δυνατότητα να εισάγει τον κωδικό με μόνο τρεις προσπάθειες. Θα υπάρχουν τρία LED και σε κάθε αποτυχημένη προσπάθεια θα ανάβει και από ένα.
Αν ο χρήστης εισάγει τον κωδικό 3 φορές λάθος το σύστημα κλειδώνει, και ξεκλειδώνει μόνο με τον κωδικό του διαχειριστή.
Όταν ο χρήστης θα δώσει τον σωστό κωδικό θα ανάψει ένα πράσινο LED το οποίο υποδηλώνει ότι η πόρτα έχει ανοίξει.
Και με αυτό το σκεπτικό θα φτιάξουμε ένα πληκτρολόγιο με arduino
Υλικά για το πληκτρολόγιο 4x4 keypad
- Arduino (οποιαδήποτε έκδοση, στο βίντεο χρησιμοποιούμε mega 2560)
- 2x LED
- 2x Αντιστάσεις 330Ω
- καλώδια
- Keypad 4x4
- Breadboard
Αν έχετε αντιστάσεις αλλά δεν ξέρετε την τιμή τους, μπορείτε να δείτε το άρθρο μας, σχετικά με την εύρεση τιμή αντιστάσεων.
Το σχέδιο
Παρακάτω είναι το σχέδιο που πρέπει να υλοποιήσετε αν θέλετε να κάνετε ακριβώς το πρόγραμμα που φαίνεται στο βίντεο. Έχει φτιαχτεί με την εφαρμογή Fritzing την οποία μπορείτε να κατεβάσετε από εδώ.
Κώδικας
Θα χρησιμοποιήσουμε μία βιβλιοθήκη η οποία μας επιτρέπει να χρησιμοποιήσουμε τα πλήκτρα με έναν πιο εύκολο τρόπο στον κώδικα.
Την βιβλιοθήκη μπορείτε να την κατεβάσετε από εδώ και να την εισάγετε στο Arduino.
Για να την εισάγετε, στο Arduino IDE ακολουθήστε τα παρακάτω βήματα:
Σχέδιο > Συμπερίληψη βιβλιοθήκης > Προσθήκη βιβλιοθήκης ZIP
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
{'1','2','3', 'A'},
{'4','5','6', 'B'},
{'7','8','9', 'C'},
{'*','0','#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
String password;
String correctpassword="1333*";
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int unlockLed = 10;
int lockLed = 11;
void setup(){
Serial.begin(9600);
Serial.println("Type Password, then press * to Unlock");
pinMode(unlockLed, OUTPUT);
pinMode(lockLed, OUTPUT);
digitalWrite(lockLed, HIGH);
}
void loop(){
char key = keypad.getKey();
if (key) {
Serial.print(key);
password += String(key);
}
if (key == '*')
{
Serial.println();
if (password==correctpassword)
{
Serial.println("Password Correct!!");
digitalWrite(lockLed, LOW);
delay(150);
digitalWrite(unlockLed, HIGH);
Serial.println("AutoLocking door in 5sec");
delay(5000);
password="";
digitalWrite(unlockLed, LOW);
delay(150);
digitalWrite(lockLed, HIGH);
}
else
{
Serial.println("Wrong Password, try again");
password="";
digitalWrite(unlockLed, LOW);
delay(150);
digitalWrite(lockLed, HIGH);
}
}
}