Bonjour je bloc dans mon codage, j'ai une fonction que j'arrive pas a appeler et je ne vois pas pourquoi et je n'es aucun message d’erreur lors de la compilation.Merci par avance si vous pouvez m'aider.
Dsl des fautes d’orthographe^^.
Le problème ce trouve la
case 24: // H sortie D = OFF
tX(7);
break;
case 25: // H sortie D = OFF
//Call the main menu.
mainMenuwhiskycoca();
lcd.setCursor(0,0);
lcd.print(" test ");
delay (100);
tX(8);
break;
J'ai bien le message test sur mon écran mais la fonction mainMenuwhiskycoca(); et pas appelé.
Voila le code entier :
///////////////////Ecran LCD///////////////////////////
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN 13
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE); // Set the LCD I2C address
// Creat a set of new characters
const uint8_t charBitmap[][8] = {
{ 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 },
{ 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 },
{ 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 },
{ 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 },
{ 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 },
{ 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 },
{ 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 },
{ 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 }
};
///////////////////Fin ecran LCd/////////////////////////////
///////////////////////
const int s1 = 12; // pin de la sortie 1 led verte
int message; // contenu de la commande venant du Pi
// int i ; // indice tableau
int cpt = 0; // compteur (inutilise)
// tableau contenant les codes de commande on/off des 4 voies A, B, C et D
char* codetx[] = {"F000F0FFFF0F 1", "F000F0FFFFF0 2", "F000FF0FFF0F 3", "F000FF0FFFF0 4",
"F000FFF0FF0F 5", "F000FFF0FFF0 6", "F000FFFF0F0F 7", "F000FFFF0FF0 8"
};
int tX ( int i) { // fonction émission du code
digitalWrite(s1, HIGH); // debug permettant de savoir si la
delay(150); // commande a bien été reçue par l'arduino.
digitalWrite(s1, LOW);
delay(500);
delay(100);
}
////////////////////////////////////////////
int pinBoutonup;
int pinBoutondown;
int pinBoutonselect;
//States for the menu.
int Menuwhiskycoca = 0;
int lastState = 0;
void setup() {
//////////////////////////////
Serial.begin(9600); // initialisation voie série à 9600 bauds
pinMode(s1, OUTPUT);// mode pin1 = SORTIE
//////////////////////////////////
//Set the characters and column numbers.
lcd.begin(20, 4);
pinBoutonup = 53;
pinMode(pinBoutonup, INPUT);
pinBoutondown = 51;
pinMode(pinBoutondown, INPUT);
pinBoutonselect = 49;
pinMode(pinBoutonselect, INPUT);
//Print default title.
clearPrintTitle();
}
void loop() {
////////////////////////////////////////////////////////::
home();
///////////////////////////////////////////////////////////
}
void home() {
////////////////////////////////////////////////////////::
if (Serial.available() > 0) { // si liaison série Pi <=> Duino = OK
message = Serial.read() - '0'; // on soustrait le caractère 0, (48 en ASCII)
// pour passer le caractere en numerique
switch (message) {
case 17: // A CHR$[65]-CHR$[48] = valeur numérique 17
break;
case 18: // B CHR$[66]-CHR$[48] = valeur numérique 18
break; // et ainsi de suite
case 19: // C sortie B = ON
tX(2);
break;
case 20: // D sortie B = OFF
tX(3);
break;
case 21: // E sortie C = ON
tX(4);
break;
case 22: // F sortie C = OFF;
tX(5);
break;
case 23: // G sortie D = ON
tX(6);
break;
case 24: // H sortie D = OFF
tX(7);
break;
case 25: // H sortie D = OFF
//Call the main menu.
mainMenuwhiskycoca();
lcd.setCursor(0,0);
lcd.print(" test ");
delay (100);
tX(8);
break;
}
}
///////////////////////////////////////////////////////////
}
void mainMenuwhiskycoca() {
//State = 0 every loop cycle.
int state = 0;
//Set the Row 0, Col 0 position.
lcd.setCursor(0,0);
boolean etatBoutonup = digitalRead(pinBoutonup);
boolean etatBoutondown = digitalRead(pinBoutondown);
boolean etatBoutonselect = digitalRead(pinBoutonselect);
//Check analog values from LCD Keypad Shield
if (etatBoutonup==HIGH) {
//Up
state = 1;
} else if (etatBoutondown==HIGH){
//Down
state = 2;
} else if (etatBoutonselect==HIGH){
//Down
state = 3;
}
//If we are out of bounds on th menu then reset it.
if (Menuwhiskycoca < 0 || Menuwhiskycoca > 2) {
Menuwhiskycoca = 0;
}
//If we have changed Index, saves re-draws.
if (state != lastState) {
if (state == 1) {
//If Up
Menuwhiskycoca = 1;
displayMenu(Menuwhiskycoca);
} else if (state == 2) {
//If Down
Menuwhiskycoca = 2;
displayMenu(Menuwhiskycoca);
} else if (state == 3) {
//If Selected
selectMenu(Menuwhiskycoca);
}
//Save the last State to compare.
lastState = state;
}
//Small delay
delay(5);
}
//Display Menu Option based on Index.
void displayMenu(int x) {
switch (x) {
case 1:
clearPrintTitle();
lcd.print ("Valider");
break;
case 2:
clearPrintTitle();
lcd.print ("Annuler");
break;
}
}
//Print a basic header on Row 1.
void clearPrintTitle() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" HACKSHED.CO.UK ");
lcd.setCursor(0,1);
}
//Show the selection on Screen.
void selectMenu(int x) {
switch (x) {
case 1:
clearPrintTitle();
lcd.print ("Initialisation");
//Call the function that belongs to Option 1
break;
case 2:
clearPrintTitle();
lcd.print ("Commande annuler");
//Call the function that belongs to Option 2
break;
}
}