Bonjour à tous,
Je travaille en ce moment sur un projet : je souhaite réaliser un appareil destiné aux enfants pour réviser ses tables de multiplication avec 3 niveaux (facile, moyen, difficile). Une fois le niveau réussi, une trappe commandée par un servomoteur va s'ouvrir sur le côté pour pouvoir récupérer une surprise laissé par les parents à l'intérieur de la boite (à l'aide d'un code ceux-ci peuvent ouvrir la trappe et ainsi y ranger la surprise). Pour cela je souhaite utiliser comme dit précédemment un servomoteur, un écran LCD 16X2 pour afficher les multiplications à effectuer par exemple, ainsi qu'un clavier 16 touches pour donner le résultat.
J'ai fait le programme mais le problème c'est que le résultat que je tape n'est pas pris en compte. Lorsque je teste le clavier avec un programme qui par exemple allume une LED quand le chiffre 1 est pressé, ça marche. Mais si je remplace 1 par 42 par exemple, ça ne marche plus. J'aimerais avoir de l'aide car ça fait un certain temps que je suis déjà bloqué dessus.
Voici le code (1ère partie, la deuxième en dessous)
#include <Servo.h>
#include <Keypad.h>
#include <LiquidCrystal.h>
Servo monServo;
const byte ROWS = 4; //nombre de lignes du clavier
const byte COLS = 4; //nombre de colonnes du clavier
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'},
};
byte rowPins[ROWS] = {52, 50, 48, 46};
byte colPins[COLS] = {47, 49, 51, 53};
Keypad keypad = Keypad ( makeKeymap (keys), rowPins, colPins, ROWS, COLS );
LiquidCrystal lcd(12,11,5,4,3,2);
void setup() {
// put your setup code here, to run once:
lcd.begin(16, 2);
lcd.clear ();
lcd.setCursor (0,0) ;
lcd.print ("Initilisation") ;
lcd.setCursor (4,1) ;
lcd.print ("patientez SVP") ;
keypad.setDebounceTime(300);
monServo.attach(7) ;
monServo.write(0) ;
}
void loop() {
char key = keypad.getKey();
lcd.clear () ;
lcd.setCursor (0,0);
lcd.print ("Sélectionne");
lcd.setCursor (10,1);
lcd.print ("un mode");
if (key == '1234D') {
monServo.write (90) ;
lcd.setCursor (0,0) ;
lcd.print ("porte") ;
lcd.setCursor (10,1) ;
lcd.print ("ouverte") ;
digitalWrite (ledVerte1, HIGH) ;
digitalWrite (ledVerte2, HIGH) ;
digitalWrite (ledVerte3, HIGH) ;
delay (8000) ;
digitalWrite (ledVerte1, LOW) ;
delay (1000) ;
digitalWrite (ledVerte2, LOW) ;
delay (1000) ;
digitalWrite (ledVerte3, LOW) ;
delay (1000) ;
monServo.write (0) ;
lcd.setCursor (0,0) ;
lcd.print ("porte") ;
lcd.setCursor (11,1) ;
lcd.print ("fermée") ;
delay (3000) ;
lcd.setCursor (0,0) ;
lcd.print ("Sélectionne") ;
lcd.setCursor (0,1) ;
lcd.print ("un mode") ;
}
if (key == 'A'){
lcd.setCursor (0,0);
lcd.print ("FACILE");
delay (4000);
lcd.setCursor (0,0);
lcd.print ("2X3");
if (key == '6D'){
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!");
delay (5000);
lcd.setCursor (0,0);
lcd.print ('3X6');
if (key == '18D'){
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!");
delay (5000);
lcd.setCursor (0,0);
lcd.print ('4X7');
if (key == '28D') {
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!");
delay (5000);
lcd.setCursor (0,0);
lcd.print ("5X6");
if (key == '30D') {
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!");
delay (5000);
lcd.setCursor (0,0);
lcd.print ("6X8");
if (key == '48D'){
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!");
delay (5000);
lcd.setCursor (0,0);
lcd.print ("3X9");
if (key == '27D'){
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!");
delay (5000);
lcd.setCursor (0,0);
lcd.print ("5X8");
if (key == '40D'){
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!");
delay (5000);
lcd.setCursor (0,0);
lcd.print ("4X9");
if (key == '36D'){
lcd.setCursor (0,0);
lcd.print ("BRAVO, TU");
lcd.setCursor (0,1);
lcd.print ("GAGNES UN CADEAU !") ;
monServo.write (90);
delay (10000);
monServo.write (0);
lcd.setCursor (0,0);
lcd.print ("Sélectionne");
lcd.setCursor (0,1);
lcd.print ("un mode");
}
}
}
}
}
}
}
}
}
if (key == 'B') {
lcd.setCursor (0,0);
lcd.print ("NORMAL");
delay (4000) ;
lcd.setCursor (0,0) ;
lcd.print ("5X8") ;
if (key == '40D') {
lcd.setCursor (0,0) ;
lcd.print ("BRAVO !!!");
delay (5000);
lcd.setCursor (0,0);
lcd.print ("8X7");
if (key == '56D') {
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!");
delay (5000) ;
lcd.setCursor (0,0) ;
lcd.print ("6X8") ;
if (key == '48D'){
lcd.setCursor (0,0) ;
lcd.print ("BRAVO !!!");
delay (5000) ;
lcd.setCursor (0,0);
lcd.print ("7X6");
if (key == '42D') {
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!");
delay (5000) ;
lcd.setCursor (0,0) ;
lcd.print ("9X7");
if (key == '63D'){
lcd.setCursor (0,0);
lcd.print ("BRAVO !!!") ;
delay (5000) ;
lcd.setCursor (0,0);
lcd.print ("6X9");
if (key == '54D') {
lcd.setCursor (0,0) ;
lcd.print ("BRAVO !!!") ;
delay (5000) ;
lcd.setCursor (0,0) ;
lcd.print ("9X9") ;
if (key == '81D') {