| Exemples | Referència | Plaques | Recursos CITCEA | |
| Projectes | Programació | Perifèrics | Inici | |
| Enrere | ||||
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);
}
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);
}
}
| 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 |

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