bonjour j'ai pour projet de faire une boite pour clef avec un lecteur CD et un keyboard 16 touche
des code pour faire cela sont sur internet mais je ne vois pas l'interet de copier un code sur internet sans se creuser la tete donc j'ai ecris mon code pour mais le probleme : il ne faut pas que si on reste appuyer sur une touche trop lomgtemps le code soit rempli par exemple de 1
pour cela j'ai pencé que si la variable qui stocke les touche est mise a 55 au debut du loop comme ça si aucune touche est appuyer a la fin la variable est egale a 55 ce qui signifi pas d'appuie et pour que le probleme ne recommence lors que le bouton n'est pas appuyer je rajoute que si la touche dernierement enregistrai est 55 alors je ne passe pas a la case suivante mais le resultat est que le code est comblé du meme chiffre
branchements
ligne_0 2
ligne_1 3
ligne_2 4
ligne_3 5
colonne_0 8
colonne_1 9
colonne_2 10
colonne_3 11
#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
int etat_colonne_0 = 0;
int etat_colonne_1 = 0;
int etat_colonne_2 = 0;
int etat_colonne_3 = 0;
int pressb = 55;
void setup(){
// 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 (){
digitalWrite(ligne_0,HIGH);
digitalWrite(ligne_1,LOW);
digitalWrite(ligne_2,LOW);
digitalWrite(ligne_3,LOW);
etat_colonne_0 = digitalRead(colonne_0);
etat_colonne_1 = digitalRead(colonne_1);
etat_colonne_2 = digitalRead(colonne_2);
etat_colonne_3 = digitalRead(colonne_3);
if (etat_colonne_0 = 0){
pressb = 1;//1
}
if (etat_colonne_1 = 0){
pressb = 2;//2
}
if (etat_colonne_2 = 0){
pressb = 3;//3
}
if (etat_colonne_3 = 0){
pressb = 100;//A
}
//-----------------ligne 2-----------------\\
digitalWrite(ligne_0,LOW);
digitalWrite(ligne_1,HIGH);
digitalWrite(ligne_2,LOW);
digitalWrite(ligne_3,LOW);
etat_colonne_0 = digitalRead(colonne_0);
etat_colonne_1 = digitalRead(colonne_1);
etat_colonne_2 = digitalRead(colonne_2);
etat_colonne_3 = digitalRead(colonne_3);
if (etat_colonne_0 = 0){
pressb = 4;
}
if (etat_colonne_1 = 0){
pressb = 5;
}
if (etat_colonne_2 = 0){
pressb = 6;
}
if (etat_colonne_3 = 0){
pressb = 200;//B
}
//-----------------ligne 3-----------------\\
digitalWrite(ligne_0,LOW);
digitalWrite(ligne_1,LOW);
digitalWrite(ligne_2,HIGH);
digitalWrite(ligne_3,LOW);
etat_colonne_0 = digitalRead(colonne_0);
etat_colonne_1 = digitalRead(colonne_1);
etat_colonne_2 = digitalRead(colonne_2);
etat_colonne_3 = digitalRead(colonne_3);
if (etat_colonne_0 = 0){
pressb = 7;
}
if (etat_colonne_1 = 0){
pressb = 8;
}
if (etat_colonne_2 = 0){
pressb = 9;
}
if (etat_colonne_3 = 0){
pressb = 300;//C
}
//-----------------ligne 3-----------------\\
digitalWrite(ligne_0,LOW);
digitalWrite(ligne_1,LOW);
digitalWrite(ligne_2,LOW);
digitalWrite(ligne_3,HIGH);
etat_colonne_0 = digitalRead(colonne_0);
etat_colonne_1 = digitalRead(colonne_1);
etat_colonne_2 = digitalRead(colonne_2);
etat_colonne_3 = digitalRead(colonne_3);
if (etat_colonne_0 = 0){
pressb = 1000;
}
if (etat_colonne_1 = 0){
pressb = 0;
}
if (etat_colonne_2 = 0){
pressb = 2000;
}
if (etat_colonne_3 = 0){
pressb = 400;//D
}
Serial.println(pressb);
}
merci de me dire ce que je fais mal