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.

../_images/list_Password_Lock.png

Il est très pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION DU COMPOSANT

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

LCD1602 I2C

ACHETER

Clavier

-

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

../_images/Schematic_three_one9.png

Procédures expérimentales

Étape 1 : Construisez le circuit.

../_images/image262.png

É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 directory apparaî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

../_images/image263.jpeg