Note
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi rejoindre ?
Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.
Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.
Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.
Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [Ici] et rejoignez-nous aujourd’hui !
3.1.8 Verrou à Mot de Passe
Introduction
Dans ce projet, nous allons utiliser un clavier et un écran LCD pour créer un verrou à combinaison. Le LCD affichera une invite correspondante pour que vous puissiez taper votre mot de passe sur le clavier. Si le mot de passe est correctement saisi, “Correct” sera affiché.
Sur la base de ce projet, nous pouvons ajouter des composants électroniques supplémentaires, tels que buzzer, LED, etc., pour ajouter différents phénomènes expérimentaux lors de la saisie du mot de passe.
Composants nécessaires
Dans ce projet, nous avons besoin des composants suivants.
Il est très pratique d’acheter un kit complet, voici le lien :
Nom |
ÉLÉMENTS DANS CE KIT |
LIEN |
|---|---|---|
Kit Raphael |
337 |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DU COMPOSANT |
LIEN D’ACHAT |
|---|---|
- |
Schéma de câblage
Nom T-Board |
physique |
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 |
Procédures expérimentales
Étape 1 : Construisez le circuit.
Étape 2 : Changez de répertoire.
cd ~/raphael-kit/c/3.1.8/
Étape 3 : Compilez.
gcc 3.1.8_PasswordLock.cpp -lwiringPi
Étape 4 : Exécutez.
sudo ./a.out
Après l’exécution du code, utilisez le clavier pour entrer le mot de passe correct : 1984. Si “CORRECT” apparaît sur le LCD1602, le mot de passe est correct ; sinon, “WRONG KEY” apparaîtra.
Note
Si un message d’erreur
wiringPi.h: No such file or directoryapparaît, veuillez vous référer à Installer et vérifier WiringPi.Si vous recevez l’erreur
Unable to open I2C device: No such file or directory, vous devez vous référer à Configuration I²C pour activer I2C et vérifier si le câblage est correct.Si le code et le câblage sont corrects mais que l’écran LCD n’affiche toujours rien, vous pouvez ajuster le potentiomètre à l’arrière pour augmenter le contraste.
Explication du code
#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'};
Ici, nous définissons la longueur du mot de passe LENS, le tableau des valeurs des touches du clavier KEYS et le tableau qui stocke le mot de passe correct.
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);
Voici une déclaration des sous-fonctions du code du clavier matriciel, consultez 2.1.8 Clavier de ce document pour plus de détails.
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[]);
Voici une déclaration des sous-fonctions du code LCD1062, consultez 1.1.7 LCD1602 I2C de ce document pour plus de détails.
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");
}
...
Lisez la valeur de la touche et stockez-la dans le tableau testword. Si le nombre de valeurs de touches stockées est supérieur à 4, la correction du mot de passe est automatiquement vérifiée, et les résultats de la vérification sont affichés sur l’écran LCD.
int check(){
for(int i=0;i<LENS;i++){
if(password[i]!=testword[i])
{return 0;}
}
return 1;
}
Vérifiez la correction du mot de passe. Retourne 1 si le mot de passe est correctement saisi, et 0 sinon.
Image du phénomène