[Arduino] Keypad / clavier 16 boutons avec Arduino. (2/2) - Protéger un message par un code secret.

preview_player
Показать описание
Seconde vidéo sur le clavier 16 boutons avec Arduino.
On va dans un premier temps créer les fonctions permettant de récupérer le bouton qui a été appuyé. Ensuite, on fera un programme permettant d'afficher un message secret si le code est correct.

Le message d'erreur :

Le message secret :
,
, ;:._.-`''.
;.;'.;` _ `.
',;` ( \ ,`-.
`:.`, (_/ ;\ `-.
';: / `. `-._
`;.;' `-,/ . `-.
';;' _ `^` `.
';; ,'-' `--._ ;
': `;; ,; `. ':`,,.__,,_ /
`;`:;`;:` ,; '. ;, ';';':';;`
.,; ' '-._ `':.;
.:; ` '._ `';;,
;:` ` :'`' ',__.)
`;:;:.,...;'`'
';. '`'::'`'' .'`'
,' `';;:,..::;`'`'
, .;` `'::''`
,`;`.

Рекомендации по теме
Комментарии
Автор

Le code :

#define ligne_0 2
#define ligne_1 3
#define ligne_2 4
#define ligne_3 5

#define colonne_0 8
#define colonne_1 9
#define colonne_2 10
#define colonne_3 11

void setup() {
// put your setup code here, to run once:

// Initialise le port série
Serial.begin(9600);

// On configure les lignes en sorties
pinMode(ligne_0, OUTPUT);
pinMode(ligne_1, OUTPUT);
pinMode(ligne_2, OUTPUT);
pinMode(ligne_3, OUTPUT);

// On configure les colonnes en entrées avec pull-up
pinMode(colonne_0, INPUT_PULLUP);
pinMode(colonne_1, INPUT_PULLUP);
pinMode(colonne_2, INPUT_PULLUP);
pinMode(colonne_3, INPUT_PULLUP);

}

void loop() {
// put your main code here, to run repeatedly:

int taille_du_code_secret = 4;
char = {'D', 'A', '0', '4'};

char = {0};

for(int nbr_caracteres_tapes = 0 ; nbr_caracteres_tapes < taille_du_code_secret ; nbr_caracteres_tapes++ ) {
= bouton_appuye_et_relache();
Serial.print("*");
}

boolean code_juste = true;

for(int index=0; index < taille_du_code_secret; index++) {

// Si on a pas le même caractère à l'index
if(code_secret[index] != code_tape[index]) {
code_juste = false;
break;
}

}

// Si le code est juste
if(code_juste == true) {
Serial.print("\n");
Serial.println("Le message secret est :");
Serial.print("\n");
affiche_image_secrete();
Serial.print("\n");
}
// sinon
else {
Serial.print("\n");
Serial.print("\n");
}


}

char bouton_appuye_et_relache() {

char bouton = NULL;
// On attend l'appui sur un bouton
do {
bouton = bouton_presse();
} while(bouton == NULL);

delay(100);

// On attend que l'utilisateur relache le bouton
while(bouton_presse() != NULL);

delay(100);

// On retourne le bouton qui a été pressé
return bouton;

}

char bouton_presse() {

const char boutons[4][4] = {'1', '2', '3', 'A',
'4', '5', '6', 'B',
'7', '8', '9', 'C',
'*', '0', '#', 'D'};

for(int ligne=0;ligne<4;ligne++) {

// On met le ligne selectionnée à LOW.
digitalWrite(ligne_0, ligne == 0 ? LOW : HIGH);
digitalWrite(ligne_1, ligne == 1 ? LOW : HIGH);
digitalWrite(ligne_2, ligne == 2 ? LOW : HIGH);
digitalWrite(ligne_3, ligne == 3 ? LOW : HIGH);

int etat_colonne_0 = digitalRead(colonne_0);
int etat_colonne_1 = digitalRead(colonne_1);
int etat_colonne_2 = digitalRead(colonne_2);
int etat_colonne_3 = digitalRead(colonne_3);

// Si on a la colonne 0 à LOW
if(etat_colonne_0 == LOW) {
return boutons[ligne][0];
}

// Si on a la colonne 1 à LOW
if(etat_colonne_1 == LOW) {
return boutons[ligne][1];
}

// Si on a la colonne 2 à LOW
if(etat_colonne_2 == LOW) {
return boutons[ligne][2];
}

// Si on a la colonne 3 à LOW
if(etat_colonne_3 == LOW) {
return boutons[ligne][3];
}

}

// Si on a aucun bouton de pressé, on retourne NULL
return NULL;

}

void bouton_caractere) {
Serial.print("Le bouton ");

Serial.println(" est pressé");
Serial.println("");
}


void affiche_image_secrete() {
Serial.println(" , ");
Serial.println(" , ;:._.-`''.");
Serial.println(" ;.;'.;` _ `.");
Serial.println(" ', ;` ( \, `-. ");
Serial.println(" `:.`, (_/ ;\ `-.");
Serial.println(" ';: / `. `-._");
Serial.println(" `;.;' `-, / . `-.");
Serial.println(" ';;' _ `^` `.");
Serial.println(" ';; , '-' `--._ ;");
Serial.println("': `;; , ; `. ':`, , .__, , _ /");
Serial.println(" `;`:;`;:` , ; '. ;, ';';':';;`");
Serial.println(" ., ; ' '-._ `':.; ");
Serial.println(" .:; ` '._ `';;, ");
Serial.println(" ;:` ` :'`' ', __.)");
Serial.println(" `;:;:., ...;'`'");
Serial.println(" ';. '`'::'`'' .'`'");
Serial.println(" , ' `';;:, ..::;`'`'");
Serial.println(", .;` `'::''`");
Serial.println(", `;`.");
Serial.println("");
}

Автор

C super bien expliqué, plus clair que ça tu meurs hhhh merci bcp, on attend tjrs d'avantage de vidéo sur arduino

faizamecheddal
Автор

simple et efficace ! Rarement vu une video aussi clair ! Merci

fahdalmaghribi
Автор

Merci pour cette vidéo. Très instructif!

bobdoritique
Автор

tres bonne explication ! continu tjr avec d'autre tuto. comme un clavier avec un esp32

moussarahma
Автор

Comment puis-je récupérer le code pour utiliser le clavier 16 touches. Merci d’avance.

mauricebernard
Автор

peut tu m aider stp, " lorsque je change mon mot de passe je voudrais recevoir un message suivant qui me demande de le confirmer " comment doit je faire

Mgnum
Автор

Bonjour et merci pour ces explications plutôt clair pour un débutant comme moi.
J'aurais cependant une question, je souhaiterais que lorsque le code est tapé il s'affiche à l'écran. Car vous proposez des "*" mais je voudrais que les personnes puissent voir ce qu'ils tapent.
Pourriez-vous m'aider?
Merci

jimsevellec
Автор

Très bonnes vidéos! je débute en codage et ça aide énormément! Est-ce possible de nous donner le code final?

lauregayet
Автор

Pour une raison que j'ignore, je n'ai pas de retour à la ligne dans la fenêtre "moniteur série". j'ai donc ajouté un retour chariot "\n" à cette ligne et tout va bien!
Serial.print(" est pressé\n");


je précise que j'ai bien sélectionné "les deux, NL et CR" au bas de ma fenêtre série.


Merci pour cette vidéo super qui est trop peu vue! (256 en ce moment)

solarock
visit shbcf.ru