Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "SPI.h"
- #include "Adafruit_GFX.h"
- #include "Adafruit_ILI9340.h"
- #include <EEPROM.h>
- #if defined(__SAM3X8E__)
- #undef __FlashStringHelper::F(string_literal)
- #define F(string_literal) string_literal
- #endif
- // These are the pins used for the UNO
- // for Due/Mega/Leonardo use the hardware SPI pins (which are different)
- #define _sclk 3
- #define _miso 1
- #define _mosi 4
- #define _cs 10
- #define _rst 5
- #define _dc 2
- // Using software SPI is really not suggested, its incredibly slow
- //Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _mosi, _sclk, _rst, _miso);
- // Use hardware SPI
- Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _rst);
- int poids = 0;
- int sexe = 0;
- String tableauMenuPrincipal[3] = { "Demarrer", "Choisir boisson", "Parametres" };
- 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" };
- String tableauParametres[4] = { "Retour", "Poids", "Sexe", "Couleur" };
- void setup() {
- Serial.begin(9600);
- pinMode(8, INPUT); //Lecture temporaire des interrupteurs pour les tests
- pinMode(6, INPUT);
- tft.begin(); //Initialisation de l'écran
- tft.fillScreen(ILI9340_BLACK); //Vidage de l'écran //REMARQUE : je sais pas à quoi ça sert dans ce cas là :o
- }
- void DessinerMenu(String menus[], int longueur, int selected) { //Dessiner un menu à l'écran
- tft.fillScreen(ILI9340_BLACK); //On efface l'écran
- for(int i = 0; i < longueur; i++) { //Pour chaque élément de menu du tableau passé en paramètre
- if (selected - 1 == i) { //Si l'élément actuel du tableau est sélectionné
- tft.setTextColor(ILI9340_BLUE); //On le met en bleu
- } else {
- tft.setTextColor(ILI9340_WHITE); //Sinon on le met en blanc
- }
- 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)
- tft.setTextSize(3); //On définit la taille de la police
- tft.println(menus[i]); //On écrit la ligne
- }
- }
- void DessinerSelecteurNombre(String introduction, String unite, int storage, int valeurActuelle, int* variable, boolean drawAll) {
- if (drawAll) {
- tft.fillScreen(ILI9340_BLACK);
- } else {
- tft.fillRect(0, 90, tft.width(), 35, ILI9340_BLACK);
- }
- int centrageIntro = (tft.width() - (introduction.length() + 1) * 3 * 5) / 2;
- tft.setTextSize(3);
- tft.setCursor(centrageIntro, 60);
- tft.println(introduction);
- int centrageNombre;
- if (valeurActuelle < 10) {
- centrageNombre = (tft.width() - 1 * 5 * 5) / 2;
- } else if (valeurActuelle > 10 && valeurActuelle < 100) {
- centrageNombre = (tft.width() - 2 * 5 * 5) / 2;
- } else if (valeurActuelle > 100 && valeurActuelle < 200) {
- centrageNombre = (tft.width() - 3 * 5 * 5) / 2;
- } else {
- valeurActuelle = 0;
- centrageNombre = (tft.width() - 5) / 2;
- }
- tft.setTextSize(5);
- tft.setCursor(centrageNombre, 90);
- tft.println(valeurActuelle);
- int centrageUnite = (tft.width() - (unite.length() + 1) * 3 * 5) / 2;
- tft.setTextSize(3);
- tft.setCursor(centrageUnite, 135);
- tft.println(unite);
- while (digitalRead(6) == 0 && digitalRead(8) == 0) {
- //On evite de redessiner le menu
- }
- if (digitalRead(6) == 1) {
- *variable = valeurActuelle;
- EEPROM.write(0, valeurActuelle);
- DessinerMenu(tableauParametres, 4, 2);
- } else if (digitalRead(8) == 1) {
- valeurActuelle++;
- DessinerSelecteurNombre("Je pese", "kg", storage, valeurActuelle, variable, false);
- }
- }
- void loop(void) {
- int mode = 0;
- int i = 1;
- uint8_t rotation = 3; //On met l'écran dans le sens que l'on veut
- tft.setRotation(rotation); //Suite de la ligne précédente
- int tableauLongueurs[4] = { 3, 3, 3, 3 };
- //On stocke les menus dans des tableaux, un tableau pour chaque "niveau de menu, on peut en ajouter autant qu'on veut
- 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
- int selectionne = 1; //On sélectionne le premier élément
- int ancienneValeurDefilement = digitalRead(8); //On lit la valeur actuelle du bouton de défilement
- DessinerMenu(tableauMenuPrincipal, tableauLongueurs[0], selectionne); //On dessine le menu
- while (1) { //boucle infinie, on n'utilise pas loop car nos premières variables seraient réintialisées
- while (digitalRead(8) == 0 && digitalRead(6) == 0) {
- //Evite de recharger le menu tout le temps
- }
- if (digitalRead(6) == 1) { //Ca veut dire que l'utilisateur a validé
- if (mode == 0) {
- if (selectionne == 1) {
- } else if (selectionne == 2) {
- mode == 2;
- //DessinerSelectionBoisson();
- } else if (selectionne == 3) {
- mode = 1;
- selectionne = 1;
- DessinerMenu(tableauParametres, 4, 1);
- }
- } else if (mode == 1) {
- if(selectionne == 1) {
- DessinerMenu(tableauMenuPrincipal, 3, 3); //On dessine le menu
- } else if (selectionne == 2) {
- mode == 12;
- DessinerSelecteurNombre("Je pese", "kg", 0, EEPROM.read(0), &poids, true);
- }
- }
- //DessinerMenu(tableauMenu1[selectionne - 1], 3, NewSelectionne); //On dessine notre nouveau menu avec l'indice selectionne dans le tableau de niveau 2 des menus
- } else {
- ancienneValeurDefilement = digitalRead(8); //Dans le cas ou l'utilisateur a tourné la molette
- selectionne++; //On change la sélection
- if (mode == 0) {
- if (selectionne > 3) { //Si on est arrivé à la fin on repasse au début
- selectionne = 1;
- }
- DessinerMenu(tableauMenuPrincipal, 3, selectionne); //Puisqu'on a changé de sélection on actualise le menu
- } else if(mode == 1) {
- if (selectionne > 4) { //Si on est arrivé à la fin on repasse au début
- selectionne = 1;
- }
- DessinerMenu(tableauParametres, 4, selectionne); //Puisqu'on a changé de sélection on actualise le menu
- }
- }
- delay(10); //On attend un peu (c'est temporaire)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment