Je ne trouve pas mon erreur de programmation

Fermé
dacdac - Modifié par dacdac-arduino le 17/10/2015 à 19:01
NHenry Messages postés 15173 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 21 décembre 2024 - 17 oct. 2015 à 22:44
Bonjour à tous et à toutes,

Voilà j'ai un petit soucis, je suis en train de développer un programme de digicode pour un arduino.
Pour le moment mon programme ne fait que me dire par le biais du serial de l'IDE si mon code et bon ou faux.
Bref pour le moment tout fonctionne très bien à une chose près c'est que le "code" qui devrait être bon n'est jamais accepter, je ne trouve pas l'erreur dans mon code après des heures de recherche, d'essais infructueux, de lecture de mes bouquin etc ...

Donc voilà un petit coup de main serai cool !

 // --- Inclusion des librairies utilisées ---



#include <Keypad.h> // inclusion de la librairie pour clavier matriciel

// Déclaration des constantes

//Constantes utilisées avec le clavier 4 x 4
const byte LIGNES = 4; // 4 lignes
const byte COLONNES = 4; //4 colonnes


// --- constantes des broches ---

const int C4=2; //declaration constante de broche
const int C3=3; //declaration constante de broche
const int C2=4; //declaration constante de broche
const int C1=5; //declaration constante de broche
const int L4=6; //declaration constante de broche
const int L3=7; //declaration constante de broche
const int L2=8; //declaration constante de broche
const int L1=9; //declaration constante de broche

// Déclaration des variables globales

// Définition des touches
char touches[LIGNES][COLONNES] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

// tableaux de lignes et colonnes
byte BrochesLignes[LIGNES] = {L1, L2, L3, L4}; //connexions utilisées pour les broches de lignes du clavier
byte BrochesColonnes[COLONNES] = {C1, C2, C3, C4}; //connexions utilisées pour les broches de colonnes du clavier

char touche; // variable de stockage valeur touche appuyée


// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---




// création d'un objet keypad = initialisation clavier
Keypad clavier = Keypad( makeKeymap(touches), BrochesLignes, BrochesColonnes, LIGNES, COLONNES );
// les broches de lignes sont automatiquement configurées en ENTREE avec pullup interne activé
// les broches de colonnes sont automatiquement configurées en SORTIE

//========================================================================================================================
char code[] = {'1','2','3','4'};
char codeTaper[] = {'0','0','0','0'};
int nombreDeTouche (0);

//**************** FONCTION SETUP = Code d'initialisation *****

void setup() { // debut de la fonction setup()

// --- ici instructions à exécuter au démarrage ---

Serial.begin(9600);

delay(10); // pause rapide pour laisser temps initialisation

// Test du LCD

Serial.print("TAPER CODE = ") ; // affiche la chaîne texte - message de test
delay(2000); // pause de 2 secondes




} // fin de la fonction setup()


void loop(){ // debut de la fonction loop()

// --- ici instructions à exécuter par le programme principal ---

touche = clavier.getKey(); // lecture de la touche appuyée

if (touche != NO_KEY){ // si une touche a été frappée -- gestion de la touche appuyée
nombreDeTouche ++ ;

Serial.print ("X"); // affiche l'action de touche par X

if (nombreDeTouche==1) // incrementation du tableau par touche saisie
{
codeTaper[0] == touche;
}
if (nombreDeTouche==2)
{
codeTaper[1] == touche;
}
if (nombreDeTouche==3)
{
codeTaper[2] == touche;
}
if (nombreDeTouche==4)
{
codeTaper[3] == touche;
}
}


if (nombreDeTouche==4) // Si le nombre de toucbes depasse 4, comparaisont automatique des tableaux ( code et codeTaper )
{
nombreDeTouche = 0; // remise a zero du nbrs de touches

if (code == codeTaper) // comparaison des deux tableaux
{
Serial.print(" !code bon! "); // retour d'infos
}
else
{
Serial.print(" !code faux! "); // retour d'infos
}
}

delay(100); // pause entre 2 appuis

} // fin gestion de la touche appuyé




1 réponse

NHenry Messages postés 15173 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 21 décembre 2024 350
17 oct. 2015 à 18:51
code == codeTaper
sera toujours faux, car tu compares l'adresse des tableaux au lieu de leur contenu.
Il faut que tu compares chaque élément du tableau.
0
dacdac-arduino Messages postés 1 Date d'inscription samedi 17 octobre 2015 Statut Membre Dernière intervention 17 octobre 2015
17 oct. 2015 à 18:56
Salut NHenry !
Merci de ta réponse aussi rapide c'est cool !
Comment dois-je-m'y prendre pour comparé leurs contenu ?
je suis désolé si ça peut paraitre idiot comme question mais je débute alors c'est pas trop simple.
0
NHenry Messages postés 15173 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 21 décembre 2024 350
17 oct. 2015 à 22:44
Avec une boucle, tu compares élément par élément;
0