Internet de les coses amb ESP32 i ESP8266

Exemples Referència Plaques   Recursos CITCEA
Projectes Programació Perifèrics   Inici
  Enrere

Altres opcions disponibles a la pantalla bicolor Midas

Mostrar un menú interactiu

La biblioteca SSD1306 té un conjunt de funcions que permeten mostrar, de manera senzilla, un menú interactiu. No podem controlar el format del menú, només les opcions possibles. Fins a sis opcions es veuen bé a la pantalla, si en posem més només es mostraran les primeres fins que el cursor del menú arribi a alguna de les que estan ocultes. Cal un mínim de dos polsadors per poder interaccionar amb el menú.

En el nostre cas, atès que el quart superior de la pantalla és groc i la resta és blau, la primera opció del menú es mostrarà en groc i la resta en blau.

En el següent programa tenim un menú de tres opcions que es controla amb dos polsadors. El que està a l'entrada 5 (centre) serveix per anar baixant pel menú i el que està a la 4 (dreta) indica que hem triat l'opció marcada.

És possible canviar les opcions del menú. En el nostre cas, passat un temps, farem un canvi en les opcions.

#include "ssd1306.h"
#define pol_dw 5
#define pol_ok 4
SAppMenu menu;
const char *elements[] = {
  "opcio 1",
  "opcio 2",
  "opcio 3"
};
int n = 0;
void setup(){
  pinMode(pol_dw, INPUT_PULLUP); // El polsador és una entrada    
  pinMode(pol_ok, INPUT_PULLUP); // El polsador és una entrada    
  ssd1306_setFixedFont(ssd1306xled_font6x8);
  ssd1306_128x64_i2c_init();
  ssd1306_clearScreen();
  ssd1306_createMenu(&menu, elements, sizeof(elements)/sizeof(elements[0]));
  ssd1306_showMenu(&menu);
}
void loop(){
  n++;
  if(n == 50){
    elements[0] = "opcio A";
    elements[1] = "opcio B";
    elements[2] = "opcio C";
    ssd1306_updateMenu(&menu);
  }
  if(!digitalRead(pol_dw)){
    ssd1306_menuDown(&menu);
    ssd1306_showMenu(&menu);
    while(!digitalRead(pol_dw)){
      ;  // Esperem que es deixi anar
    }
  }
  if(!digitalRead(pol_ok)){
    ssd1306_clearScreen();
    ssd1306_print("\n\n");
    if(ssd1306_menuSelection(&menu) == 0){
      ssd1306_print("Has triat la 1");
    }
    if(ssd1306_menuSelection(&menu) == 1){
      ssd1306_print("Has triat la 2");
    }
    if(ssd1306_menuSelection(&menu) == 2){
      ssd1306_print("Has triat la 3");
    }
    while(!digitalRead(pol_ok)){
      ;  // Esperem que es deixi anar
    }
    delay(3000);
    ssd1306_clearScreen( );
    ssd1306_showMenu(&menu);
  }
  delay(500);
}

Mostrar una barra de progrés

La biblioteca SSD1306 té una funció que permet mostrar una barra de progrés que indica, en forma gràfica i numèrica, el progrés d'una variable, entre 0 i 100. No es pot canviar la posició de la barra ni el rang de valors. Veiem-ne un exemple:

#include "ssd1306.h"
int valor = 0;
void setup(){
  ssd1306_128x64_i2c_init();
  ssd1306_fillScreen(0);
  ssd1306_setFixedFont(ssd1306xled_font8x16);
}
void loop(){
  ssd1306_drawProgressBar(valor);
  valor++;
  if(valor > 100){
    valor = 0;
    delay(1500);
  } else {
    delay(100);
  }
}

Llista de les funcions

Funció Ús Paràmetres Comentaris
Menú SAppMenu nomMenu Crea un objecte de menú
ssd1306_createMenu Crea un menú a partir d'una llista d'opcions Punter a l'objecte de menú
    cal posar   &nomMenu
Vector de la llista d'opcions
Llargada de la llista d'opcions
ssd1306_showMenu Mostra el menú a la pantalla Punter a l'objecte de menú
    cal posar   &nomMenu
ssd1306_menuDown Mou el punter del menú a l'opció següent Punter a l'objecte de menú
    cal posar   &nomMenu
Desplaça avall el cursor del menú
Després del darrer, torna al primer
ssd1306_menuUp Mou el punter del menú a l'opció anterior Punter a l'objecte de menú
    cal posar   &nomMenu
Desplaça amunt el cursor del menú
Després del primer, va al darrer
ssd1306_menuSelection Retorna quina és l'opció marcada en aquell moment Punter a l'objecte de menú
    cal posar   &nomMenu
La primera és la 0
ssd1306_updateMenu Actualitza la llista d'opcions Punter a l'objecte de menú
    cal posar   &nomMenu
Barra ssd1306_drawProgressBar Dibuixa una barra de progrés Variable [0 a 100] Només valors de 0 a 100

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.