Nota
Ciao, benvenuto nella Community di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme agli altri appassionati.
Perché unirti a noi?
Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.
Anteprime esclusive: Ottieni accesso anticipato ai nuovi annunci di prodotti e alle anteprime.
Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni festive e omaggi: Partecipa a omaggi e promozioni speciali durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!
3.1.8 Serratura a Combinazione
Introduzione
In questo progetto, utilizzeremo un tastierino e un display LCD per realizzare una serratura a combinazione. Il display LCD visualizzerà un messaggio per guidarti nell’inserimento della password tramite il tastierino. Se la password viene inserita correttamente, verrà visualizzato «Corretto».
Sulla base di questo progetto, possiamo aggiungere ulteriori componenti elettronici, come un cicalino, LED e così via, per aggiungere diversi fenomeni sperimentali all’inserimento della password.
Componenti necessari
In questo progetto, avremo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un kit completo, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
|---|---|---|
Kit Raphael |
337 |
Puoi anche acquistare i componenti separatamente dai link qui sotto.
INTRODUZIONE COMPONENTI |
LINK DI ACQUISTO |
|---|---|
- |
Schema elettrico
T-Board Name |
physical |
wiringPi |
BCM |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO23 |
Pin 16 |
4 |
23 |
GPIO24 |
Pin 18 |
5 |
24 |
GPIO25 |
Pin 22 |
6 |
25 |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO27 |
Pin 13 |
2 |
27 |
GPIO22 |
Pin 15 |
3 |
22 |
SPIMOSI |
Pin 19 |
12 |
10 |
SDA1 |
Pin 3 |
||
SCL1 |
Pin 5 |
Procedura sperimentale
Passo 1: Costruisci il circuito.
Passo 2: Vai nella cartella del codice.
cd ~/raphael-kit/c/3.1.8/
Passo 3: Compila.
gcc 3.1.8_PasswordLock.cpp -lwiringPi
Passo 4: Esegui.
sudo ./a.out
Dopo l’esecuzione del codice, utilizza il tastierino per inserire la password corretta: 1984. Se sul display LCD1602 appare “CORRETTO”, la password è stata inserita correttamente; altrimenti, apparirà “CHIAVE ERRATA”.
Nota
Se appare un errore come
wiringPi.h: Nessun file o directory, fai riferimento a Installa e Controlla wiringPi.Se appare l’errore
Impossibile aprire il dispositivo I2C: Nessun file o directory, devi fare riferimento a Configurazione I²C per abilitare I2C e controllare se il cablaggio è corretto.Se il codice e il cablaggio sono corretti, ma l’LCD non mostra contenuti, puoi ruotare il potenziometro sul retro per aumentare il contrasto.
Spiegazione del codice
#define ROWS 4
#define COLS 4
#define BUTTON_NUM (ROWS * COLS)
#define LENS 4
unsigned char KEYS[BUTTON_NUM] {
'1','2','3','A',
'4','5','6','B',
'7','8','9','C',
'*','0','#','D'};
char password[LENS]={'1','9','8','4'};
Qui, definiamo la lunghezza della password LENS, la matrice che memorizza i valori dei tasti del tastierino KEYS e l’array che memorizza la password corretta.
void keyRead(unsigned char* result);
bool keyCompare(unsigned char* a, unsigned char* b);
void keyCopy(unsigned char* a, unsigned char* b);
void keyPrint(unsigned char* a);
void keyClear(unsigned char* a);
int keyIndexOf(const char value);
C’è una dichiarazione delle sottofunzioni del codice del tastierino a matrice, fai riferimento a 2.1.8 Tastiera di questo documento per maggiori dettagli.
void write_word(int data);
void send_command(int comm);
void send_data(int data);
void lcdInit();
void clear();
void write(int x, int y, char const data[]);
C’è una dichiarazione delle sottofunzioni del codice LCD1062, fai riferimento a 1.1.7 I2C LCD1602 di questo documento per maggiori dettagli.
while(1){
keyRead(pressed_keys);
bool comp = keyCompare(pressed_keys, last_key_pressed);
...
testword[keyIndex]=pressed_keys[0];
keyIndex++;
if(keyIndex==LENS){
if(check()==0){
clear();
write(3, 0, "WRONG KEY!");
write(0, 1, "please try again");
}
...
Leggi il valore del tasto e memorizzalo nell’array di test testword. Se il numero di valori di tasti memorizzati supera 4, la correttezza della password viene verificata automaticamente, e i risultati della verifica vengono visualizzati sull’interfaccia LCD.
int check(){
for(int i=0;i<LENS;i++){
if(password[i]!=testword[i])
{return 0;}
}
return 1;
}
Verifica la correttezza della password. Restituisce 1 se la password è stata inserita correttamente, e 0 se non lo è stata.
Foto del fenomeno