Bonjour à tous...
je suis un peu embête et j'aurais besoin d'aide pour la réalisation de mon Menu.
Tout d’abord j'ai récupérer un programme pour lire un cd sur un drive de pc en IDE,
le fonctionnement et super mais j'aimerais créer un menu par dessus ce code,
par exemple :
j'aimerais avec un bouton sélection se balader dans le Menu qui comporte 6 titres
(1-lecteur , 2-Playstation , 3-Optique , 4-USB , 5-Coaxiale , 6-Audio Bluetooth)
pour l'instant OK j'ai réussi à le faire
l'idée serait que si je suis dans le Menu lecteur avec un délai je bascule dans le programme Du drive, si j’appuie sur sélection pour changer de Menu alors je passe au suivant en quittant le programme du drive.
et la je n'ai pas réussi, dans le programme du Drive (lecteur) j'ai renommé void setup par démarrage et void loop par chargement,
dans mon programme des qu'il se lance on se trouve dans le menu 0 et le programme du drive se lance, mais si j'appuie sur sélection alors je ne change pas de Menu. smiley-evil
Programme du drive de base : http://singlevalve.web.fc2.com/Atapi...etch_R3_11.ino
Mon programme se compose de 3 pages,
la première pour le setup
le deuxième pour Update
le troisième pour le programme du drive modifié
merci beaucoup pour votre aide !
Code:void setup() { // set up the LCD's number of columns and rows: pinMode(selec,INPUT); digitalWrite(selec,HIGH); pinMode(ok,INPUT); digitalWrite(selec,HIGH); pinMode(led,OUTPUT); digitalWrite(led,HIGH); ////////////////////////////////////////lecteur definition//////////////////////////////////////// // LCD Part // ######## lcd.begin (16,2); // init LCD interface // Switch on the backlight lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); // set cursor to home position // Arduino Part // ############# // start I2C interface as Master Wire.begin(); // Set all pins of all PCF8574 to high impedance inputs. highZ(); // Start Serial Interface // Serial.begin(9600); // initialize the push button pins as inputs with pullup: pinMode(NEXT, INPUT); pinMode(PREV, INPUT); pinMode(EJCT, INPUT); pinMode(STOP, INPUT); pinMode(PLAY, INPUT); pinMode(LED, OUTPUT); digitalWrite((byte)NEXT, HIGH); digitalWrite((byte)PREV, HIGH); digitalWrite((byte)EJCT, HIGH); digitalWrite((byte)STOP, HIGH); digitalWrite((byte)PLAY, HIGH); digitalWrite((byte)LED, LOW); //////////////////////////////////////////////////////////////////////////////////////////////////// lcd.begin(16, 2); // Print a message to the LCD. lcd.print("audio/franck"); delay(1000); lcd.clear(); } void loop() { BSelect(); } void BSelect() { etat_bouton = digitalRead(selec); // compare the buttonState to its previous state if (etat_bouton != lastetat_bouton) { // if the state has changed, increment the counter if (etat_bouton == LOW) { Menu++; if (Menu > 5) Menu = 0; } lastetat_bouton = etat_bouton; UpdateLCD(); } }j'ai essayer de mettre un While (tant que le bouton selec à un niveau haut alors on exécute chargement() sinon on incrémente Menu++ mais ca ne marche pas non plusCode:void UpdateLCD() { if (Menu == 0) { lcd.clear(); lcd.setCursor(0,0); lcd.write("Votre Menu"); lcd.setCursor(5,2); lcd.print("LECTEUR CD"); delay(3000); chargement(); //c'est ici que le programme du drive commence, mais il reste bloquer dessus quand je suis dans le Menu et le bouton selection ne marche plus !!!! delay(10); if (Menu == 1) { lcd.clear(); lcd.setCursor(0,0); lcd.write("Votre Menu"); lcd.setCursor(5,2); lcd.print("Playstation"); delay(10); } if (Menu == 2) { lcd.clear(); lcd.setCursor(0,0); lcd.write("Votre Menu"); lcd.setCursor(9,2); lcd.print("Optique"); delay(10); } if (Menu == 3) { lcd.clear(); lcd.setCursor(0,0); lcd.write("Votre Menu"); lcd.setCursor(11,2); lcd.print("U S B"); delay(10); } if (Menu == 4) { lcd.clear(); lcd.setCursor(0,0); lcd.write("Votre Menu"); lcd.setCursor(8,2); lcd.print("Coaxiale"); delay(10); } if (Menu == 5) { lcd.clear(); lcd.setCursor(0,0); lcd.write("Votre Menu"); lcd.setCursor(2,2); lcd.print("audio Bluetooth"); delay(10); } }
voici le programme global dans un autre fichier lcd_I2C.zip
-----