Étape 2: Modification du programme
Le programme attaché est écrit avec les bibliothèques de base Arduino de Wire.h et LiquidCrystal.h, donc il devrait y avoir rien d’autre à télécharger en plus de ce programme.
Une des choses que vous aurez à modifier est le tableau de noms d’éléments de menu en ligne 27 et le contenu des émissions pour chaque sous-menu. J’ai commencé avec 10 éléments de menu possible dans le programme. Si vous voulez 10 ou moins il suffit de modifier ligne 27 pour créer votre structure de menu principal.
String menuItems[] = {"ITEM 1", "ITEM 2", "ITEM 3", "ITEM 4", "ITEM 5", "ITEM 6"};
Par exemple, vous pourriez faire moins d’éléments :
String menuItems[] = {"DISTANCE", "TIME", "REPEAT", "DIRECTION", "START", "ABOUT"};
Ou vous pouvez ajouter plus (jusqu'à 10 bien sûr) :
String menuItems[] = {"DISTANCE", "DELAY", "RANDOMIZE", "TIME", "REPEAT", "DIRECTION", "START", "ABOUT"};
Au-delà de 10 Articles, vous devrez ajouter « cas » supplémentaires à la section « switch/case » commençant à la ligne 167. Vous devrez également ajouter menuItemX supplémentaires [] (où X est le 11, 12, 13, etc.) annuler les fonctions en bas du programme.
Après avoir créé la structure de menu vous voulez qu'il est temps de créer le contenu de chacune de ces sous-menus. La première fonction Sub menuItem commence à la ligne 275. J’ai mis dans du code par défaut pour imprimer « Sub Menu X » pour chaque élément de menu ainsi qu’un code d’attendre pour un bouton de retour être pressés. Ci-dessous à titre d’exemple de ce que vous pourriez faire dans le sous-menu. C’est le sous menu que j’utilise pour modifier et stocker la variable « savedDistance ». Le haut et vers le bas de boutons servent à sélectionner la distance et lorsque vous appuyez sur retour fait revenir au menu principal.
void menuItem1() { // Function executes when you select the 1st item from main menu int activeButton = 0; lcd.clear(); lcd.setCursor(0, 1); drawInstructions(); lcd.setCursor(0, 0); lcd.print("DISTANCE: "); lcd.print(savedDistance); lcd.print(" in"); while (activeButton == 0) { int button; readKey = analogRead(0); if (readKey < 790) { delay(100); readKey = analogRead(0); } button = evaluateButton(readKey); switch (button) { case 2: button = 0; savedDistance = savedDistance + 1; savedDistance = constrain(savedDistance,0,36); lcd.setCursor(10,0); lcd.print(" "); lcd.setCursor(10,0); lcd.print(savedDistance); lcd.print(" in"); break; case 3: button = 0; savedDistance = savedDistance - 1; savedDistance = constrain(savedDistance,0,36); lcd.setCursor(10,0); lcd.print(" "); lcd.setCursor(10,0); lcd.print(savedDistance); lcd.print(" in"); break; case 4: // This case will execute if the "back" button is pressed button = 0; lcd.clear(); lcd.setCursor(2,0); lcd.print("-- VALUES --"); lcd.setCursor(2,1); lcd.print("-- STORED --"); delay(1500); activeButton = 1; break; } } }
Cette fonction génère le menu distance indiqué dans l’image ci-dessus.