Pouknouki

Code

Jan 9th, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.52 KB | None | 0 0
  1. #include "SPI.h"
  2. #include "Adafruit_GFX.h"
  3. #include "Adafruit_ILI9340.h"
  4.  
  5. #if defined(__SAM3X8E__)
  6.     #undef __FlashStringHelper::F(string_literal)
  7.     #define F(string_literal) string_literal
  8. #endif
  9.  
  10. // These are the pins used for the UNO
  11. // for Due/Mega/Leonardo use the hardware SPI pins (which are different)
  12. #define _sclk 3
  13. #define _miso 1
  14. #define _mosi 4
  15. #define _cs 10
  16. #define _rst 5
  17. #define _dc 2
  18.  
  19. // Using software SPI is really not suggested, its incredibly slow
  20. //Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _mosi, _sclk, _rst, _miso);
  21. // Use hardware SPI
  22. Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _rst);
  23.  
  24. void setup() {
  25.   Serial.begin(9600);
  26.   pinMode(8, INPUT);  //Lecture temporaire des interrupteurs pour les tests
  27.   pinMode(6, INPUT);    
  28.   tft.begin(); //Initialisation de l'écran
  29.   tft.fillScreen(ILI9340_BLACK); //Vidage de l'écran
  30. }
  31.  
  32. void DessinerMenu(String menus[], int longueur, int selected) { //Dessiner un menu à l'écran
  33.   tft.fillScreen(ILI9340_BLACK); //On efface l'écran
  34.   for(int i = 0; i < longueur; i++) { //Pour chaque élément de menu du tableau passé en paramètre
  35.     if (selected - 1 == i) { //Si l'élément actuel du tableau est sélectionné
  36.       tft.setTextColor(ILI9340_BLUE); //On le met en bleu
  37.     } else {
  38.       tft.setTextColor(ILI9340_WHITE); //Sinon on le met en blanc
  39.     }
  40.     tft.setCursor(0, i * 25); //On passe à la ligne suivante en ajoutant un espacement (une lettre fait 7 de haut, le texte est en taile trois)
  41.     tft.setTextSize(3); //On définit la taille de la police
  42.     tft.println(menus[i]); //On écrit la ligne
  43.   }
  44. }
  45.  
  46. void loop(void) {
  47.   int i = 1;
  48.   uint8_t rotation = 3; //On met l'écran dans le sens que l'on veut
  49.   tft.setRotation(rotation); //Suite de la ligne précédente
  50.  
  51.   String tableauMenuPrincipal[3] = { "menu 1", "menu 2", "menu 3" };
  52.   String tableauMenu1[3][3] = { "Retour", "menu 1.1", "menu 1.2", "Retour", "menu 2.1", "menu 2.2", "Retour", "menu 3.1", "menu 3.2" };
  53.   //On stocke les menus dans des tableaux, un tableau pour chaque "niveau de menu, on peut en ajouter autant qu'on veut
  54.  
  55.   int longueurTableau = 3; //On doit stocker les longueurs de chaque menu pour la boucle for, je stockerai les longueurs des tableaux dans un tableau à l'avenur
  56.   int selectionne = 1; //On sélectionne le premier élément
  57.   int ancienneValeurDefilement = digitalRead(8); //On lit la valeur actuelle du bouton de défilement
  58.   DessinerMenu(tableauMenuPrincipal, longueurTableau, selectionne); //On dessine le menu
  59.   while (1) { //boucle infinie, on n'utilise pas loop car nos premières variables seraient réintialisées
  60.     while (digitalRead(8) == 0 && digitalRead(6) == 0) {
  61.        //Evite de recharger le menu tout le temps
  62.     }  
  63.     if (digitalRead(6) == 1) { //Ca veut dire que l'utilisateur a validé
  64.       int NewSelectionne = 1; //On remet la sélection au début
  65.       DessinerMenu(tableauMenu1[selectionne - 1], 3, NewSelectionne); //On dessine notre nouveau menu avec l'indice selectionne dans le tableau de niveau 2 des menus
  66.     } else {
  67.       ancienneValeurDefilement = digitalRead(8); //Dans le cas ou l'utilisateur a tourné la molette
  68.       selectionne++; //On change la sélection
  69.       if (selectionne > longueurTableau) { //Si on est arrivé à la fin on repasse au début
  70.         selectionne = 1;
  71.       }
  72.       DessinerMenu(tableauMenuPrincipal, longueurTableau, selectionne); //Puisqu'on a changé de sélection on actualise le menu
  73.     }
  74.     delay(1000); //On attend un peu (c'est temporaire)
  75.   }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment