Hola y un cordial saludo para todos.
Emm. En muchas ocasiones las “librerías” forman parte (en mi opinión muy personal) del facilismo por el cual mi cerebro deja de preguntarse ¿Cómo consigo eso que necesito?
Seguramente en ese momento salimos a buscar una librería y… Ahí está; nos ha salvado una vez más.
¿Pero si en lugar de adaptarme a ella; hasta encontrar otra mejor que resuelva mi problema, hacemos el intento de crear una rutina desde cero?
Aquí les presento el MENU en CASCADA que les permitirá usarlo en cualquier micro controlador. Es de muy simple y básica programación siendo muy fácil adaptarlo a cualquier display en pocas líneas.
// Menu Opciones con ARRAY
#include <U8g2lib.h>
#include <Keyboard.h>
#include <Mouse.h>
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0);
String navegax[3]={"Firefox","Google","Opera"};
String siteweb[4]={"Youtube","Taringa","Facebook","Instagram"};
String persona[3]={"Nom.Usuario","Clave","Nueva Clave"};
int columna=1;
int x=0;
String cadenax="";
void setup() {
Serial.begin(9600);
u8g2.begin();
Keyboard.begin();
pinMode(A0,INPUT_PULLUP); // Crs ARRIBA
pinMode(A1,INPUT_PULLUP); // Tcl C
pinMode(A2,INPUT_PULLUP); // Tcl B
pinMode(A3,INPUT_PULLUP); // Tcl A
pinMode(A6,INPUT_PULLUP); // Crs ABAJO
pinMode(A7,INPUT_PULLUP); // Crs IZQUIERDA
pinMode(A8,INPUT_PULLUP); // Tcl OK
pinMode(A9,INPUT_PULLUP); // Tcl DERECHA
u8g2.clearBuffer(); u8g2.setFont(u8g2_font_logisoso16_tr);
u8g2.drawStr(8,29,navegax[0].c_str()); u8g2.sendBuffer();
}
void loop() {
if (analogRead(A3)<500) {mostrando(navegax[0]); columna=1; x=0;} // Salir
if (analogRead(A2)<500) {mostrando("2da B");}
if (analogRead(A1)<500) {mostrando("3ra C");}
if (analogRead(A0)<500) {x--; if (x>=0){mostrando(navegax[x]);}else{x=0;}}
if (analogRead(A6)<500) {x++; if (x<=2){mostrando(navegax[x]);}else{x=2;}}
if (analogRead(A8)<500) {mostrando(siteweb[0]); columna=2; x=0;}
while (columna==2){
if (analogRead(A0)<500) {x--; if (x>=0){mostrando(siteweb[x]);}else{x=0;}}
if (analogRead(A6)<500) {x++; if (x<=3){mostrando(siteweb[x]);}else{x=3;}}
if (analogRead(A8)<500) {mostrando(persona[0]); columna=3; x=0;}
if (analogRead(A3)<500) {mostrando(navegax[0]); columna=1; x=0;} // Salir
while (columna==3){
if (analogRead(A0)<500) {x--; if (x>=0){mostrando(persona[x]);}else{x=0;}}
if (analogRead(A6)<500) {x++; if (x<=2){mostrando(persona[x]);}else{x=2;}}
if (analogRead(A8)<500) {columna=2; x=0;}
if (analogRead(A3)<500) {mostrando(siteweb[0]); columna=2; x=0;} // Salir
}
}
if (analogRead(A7)<500) {mostrando("IZQUIERDA");}
if (analogRead(A9)<500) {mostrando("DERECHA");}
}
void mostrando(String cadenax){
u8g2.clearBuffer();
u8g2.drawStr(8,29,cadenax.c_str());
u8g2.sendBuffer(); delay(250);
return;}
Aquí podés ver un corto video que muestra como se usa.
[Menú de Opciones con Arduino - YouTube] (Menú de Opciones con Arduino - YouTube)
Espero que sea de utillidad.