Bonjour,
Je réalise un programme arduino avec codebender pour mon projet de terminale en Sciences de l'Ingénieur. Le programme sert a choisir les deux heures dans la journée à laquelle la nourriture doit être distribuée et également dans un second sous menu à choisir la durée pendant laquelle la nourriture sera distribuée.
Voici mon programme. Mon professeur m'avait aider car nous devions faire en sorte que le programme ne soit pas que du texte et quand on appuie sur "ok" cela sélectionne vraiment la donnée, nous n'avions pas fini mais le professeur ne peut plus m'aider et le programme comporte des erreurs :
Voila merci d'avance pour votre aide.Code:// include the library code: #include "Bounce2.h" //#include <LiquidCrystal.h> #include <Arduino.h> #include <Wire.h> #include <DS1307.h> #include <Wire.h> #include "rgb_lcd.h" rgb_lcd lcd; const int colorR =10; const int colorG =15; const int colorB =70; // définition des boutons / pins #define PIN_BOUTTON_PLUS 4 #define PIN_BOUTTON_MOINS 5 #define PIN_BOUTTON_OK 6 #define PIN_BOUTTON_UNDO 7 // Instantiate a Bounce object Bounce debouncer_plus = Bounce(); int last_boutton_plus; // Instantiate another Bounce object Bounce debouncer_moins = Bounce(); int last_boutton_moins; // Troisième bouton Bounce debouncer_ok = Bounce(); int last_boutton_ok; //4ème bouton Bounce debouncer_undo = Bounce(); int last_boutton_undo; //String menu_princ[2]={"02 Régler l'Heure","03 Régler la Duree"}; char menu_princ[2] = {'D', 'H'}; int index_menu = 0; int index_menu_princ_max = 2; // 2 items ds le menu principal. int duree; int Heure; int heure_1=5; int heure_2=8; int time_h1=14; int time_min1=0; int time_h2=16;int time_min2=30; int lapse = 1; String heure[] = {"08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00"}; String ch_duree[] = {"05 s", "10 s", "15 s"}; DS1307 clock; void setup() { // set up the LCD's number of columns and rows: Serial.begin(9600); lcd.begin(16, 2); // Print a message to the LCD. lcd.setCursor(0, 0); lcd.print("Configuration"); lcd.setCursor(0, 1); lcd.print(menu_princ[0]); pinMode(PIN_BOUTTON_PLUS, INPUT_PULLUP); pinMode(PIN_BOUTTON_MOINS, INPUT_PULLUP); pinMode(PIN_BOUTTON_OK, INPUT_PULLUP); pinMode(PIN_BOUTTON_UNDO, INPUT_PULLUP); debouncer_plus.attach(PIN_BOUTTON_PLUS); debouncer_plus.interval(50); // interval in ms debouncer_moins.attach(PIN_BOUTTON_MOINS); debouncer_moins.interval(50); // interval in ms debouncer_ok.attach(PIN_BOUTTON_OK); debouncer_ok.interval(50); // interval in ms debouncer_undo.attach(PIN_BOUTTON_UNDO); debouncer_undo.interval(50); // interval in ms lcd.setRGB(colorR, colorG, colorB); delay(1000); clock.begin(); clock.fillByYMD(2013,1,19);//Jan 19,2013 clock.fillByHMS(15,28,30);//15:28 30" clock.fillDayOfWeek(SAT);//Saturday clock.setTime();//write time to the RTC chip } // void affichage_defaut(int valeur) { lcd.clear(); lcd.setCursor(0, 0); switch (valeur) { case 1: { lcd.print("Configuration "); } break; case 2: { lcd.print("Duree = "); lcd.print(duree, DEC); } break; case 3: { lcd.print("Heure = "); lcd.print(Heure, DEC); } break; case 4: { lcd.print("reglage heure 1"); } break; case 5: { lcd.print("reglage duree"); } case 6: { lcd.print("reglage heure 2"); } break; default: break; } lcd.setCursor(0, 1); } // afficher les messages dans les menus int reglage_duree(int old_duree) { char texte; String texte2; int duree_courante = 0; char paramchar[ch_duree[duree_courante].length() + 1]; affichage_defaut(5); debouncer_ok.update(); debouncer_undo.update(); boolean sortie = debouncer_ok.fell(); boolean sortie2 = debouncer_undo.fell(); while(!(sortie || sortie2)) { debouncer_plus.update(); debouncer_moins.update(); debouncer_ok.update(); debouncer_undo.update(); sortie = debouncer_ok.fell(); sortie2 = debouncer_undo.fell(); texte2=ch_duree[duree_courante]; texte2.toCharArray(paramchar, texte2.length()+1); lcd.setCursor(0, 1); lcd.print(paramchar); Serial.print("ok="); Serial.println(sortie); if (debouncer_plus.fell()) duree_courante=(duree_courante+1) % (4); if (debouncer_moins.fell()) duree_courante=(duree_courante-1) % (4); } if (sortie2) duree_courante = old_duree; return duree_courante; } void loop() { String ch_heure1, ch_heure2; lcd.setCursor(0, 1); debouncer_plus.update(); debouncer_moins.update(); debouncer_ok.update(); debouncer_undo.update(); if (debouncer_plus.fell()) { index_menu = (index_menu + 1) % (index_menu_princ_max); affichage_defaut(1); lcd.print(menu_princ[index_menu]); } if (debouncer_moins.fell()) { index_menu--; if(index_menu < 0) { index_menu = index_menu_princ_max - 1; } //Serial.println(index_menu); affichage_defaut(1); lcd.print(menu_princ[index_menu]); } if (debouncer_ok.fell()) { switch(index_menu) { case 1: //Heure heure_1=reglage_heure(heure_1,4); ch_heure1=heure[heure_1]; Serial.print("index heure1=");Serial.println(heure_1); Serial.print("heure1 "); Serial.println(ch_heure1.substring(0,2)); Serial.print("min1 "); Serial.println(ch_heure1.substring(3,5)); String ch1 = ch_heure1.substring(0,2); time_h1 = ch1.toInt(); heure_2=reglage_heure(heure_2,6); break; case 0: //duree lapse = reglage_duree(lapse); Serial.print("lapse=");Serial.println(lapse); break; default: break; } affichage_defaut(1); lcd.print(menu_princ[index_menu]); } clock.getTime(); /* if (clock.hour=time_h1) && (clock.minute =time_min1) { ...... } if (clock.hour=time_h2) && (clock.minute =time_min2) */ } int reglage_heure(int old_heure,int aff) { char texte; String texte2; affichage_defaut(aff); debouncer_undo.update(); debouncer_ok.update(); boolean sortie2 = debouncer_undo.fell(); boolean sortie = debouncer_ok.fell(); int heure_courante = old_heure; char paramchar[heure[heure_courante].length() + 1]; while (!sortie && !sortie2 ) { debouncer_undo.update(); debouncer_plus.update(); debouncer_moins.update(); debouncer_ok.update(); sortie = debouncer_ok.fell(); sortie2 = debouncer_undo.fell(); if (debouncer_plus.fell()) {heure_courante++; if (heure_courante>28) heure_courante=0; } if (debouncer_moins.fell()) { heure_courante--; if (heure_courante<0) heure_courante=28; } texte2=heure[heure_courante]; texte2.toCharArray(paramchar, texte2.length()+1); lcd.setCursor(0, 1); lcd.print(paramchar); //Serial.print("undo=");Serial.println(sortie2); //Serial.print("ok=");Serial.println(sortie); } if (sortie2) heure_courante = old_heure; //Serial.print("undo=");Serial.println(sortie2); //Serial.print("ok=");Serial.println(sortie); return heure_courante; }
-----