#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
#define tamanoMax 7
int numeroEntero = 0;
char textoChar[tamanoMax];
String textoString = String(numeroEntero);
int margenIzq;
int caracteresNumero;
String tipoSurtido = "";
boolean estadoPulsadorCentral = false;
boolean estadoAnteriorPulsadorCentral = true;
// Declaramos el pin al que estará conectado el pulsador de 'Cantidad Surtida'
// Un pulso indicará 'Surtido Completo' (Posición Color Verde)
int pinPulsadorCentral=27;
// Declaramos el pin al que se envía el movimiento horizontal VRX del Joystick
// Un pulso en X menores indicará 'Surtido Nulo' (Posición Color Rojo)
// Un pulso en X mayores indicará 'Requerimiento de Resurtido' (Posición Color Negro)
int pinMovX=14;
// Declaramos el pin al que envía el movimiento vertical VRY del Joystick
// Un pulso en Y menores indicará 'Disminución de Cantidad Surtida' (Posición Color Azul)
// Un pulso en Y mayores indicará 'Incremento de Cantidad Surtida' (Posición Color Azul)
int pinMovY=12;
int X = 2048; // Para almacenar el valor leido de entrada analógica de eje X
int Y = 2048; // Para almacenar el valor leido de entrada analógica de eje Y
int SW; // Para almacenar el valor leido del pulsador incorporado
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
// Serial.println("SPick, el almacén inteligente");
// delay(2);
Serial.println("Surtido Spick ESP32 y OLED!");
//Definimos que pinPulsadorCentral recibe la señal de 'Cantidad Surtida'
pinMode(pinPulsadorCentral, INPUT);
digitalWrite(pinPulsadorCentral, LOW);
//Definimos que pinMovX recibe la señal de Movimiento X
pinMode(pinMovX, INPUT);
//Definimos que pinMovX recibe la señal de Movimiento Y
pinMode(pinMovY, INPUT);
u8g2.begin();
//u8g2.setFont(u8g2_font_ncenB08_tr); // Establecer la fuente del texto
u8g2.setFont(u8g2_font_logisoso26_tf); // Establecer la fuente del texto
u8g2.setFontMode(1); // Modo de texto transparente
u8g2.setFontDirection(0); // Dirección del texto
refrescaPantalla();
Serial.println("---------------- Inicio de Surtido --------------------");
}
void loop() {
X = 2048;
Y = 2048;
SW = 0;
digitalWrite(pinPulsadorCentral, LOW);
X = analogRead(pinMovX);
Y = analogRead(pinMovY);
SW = digitalRead(pinPulsadorCentral);
Serial.print(analogRead(pinMovX));
Serial.print(" ");
Serial.print(analogRead((pinMovY)));
Serial.print(" ");
Serial.print(digitalRead((pinPulsadorCentral)));
Serial.print(" ");
Serial.println(estadoPulsadorCentral);
if (estadoPulsadorCentral == estadoAnteriorPulsadorCentral){
u8g2.clearBuffer(); // Limpiar el buffer
u8g2.setFont(u8g2_font_logisoso16_tf); // Establecer la fuente del texto
u8g2.drawStr(1,15,"Registra");
u8g2.drawStr(1,35,"Cantidad");
u8g2.drawStr(1,55,"Surtida");
u8g2.sendBuffer(); // Enviar el buffer a la pantalla
//delay(100);
estadoAnteriorPulsadorCentral = !estadoPulsadorCentral;
SW = 0;
u8g2.clearBuffer(); // Limpiar el buffer
}
if (X > 2200 && X <= 4095){
u8g2.clearBuffer(); // Limpiar el buffer
u8g2.setFont(u8g2_font_logisoso16_tf); // Establecer la fuente del texto
u8g2.drawStr(25, 21, "Surtido"); // Escribir texto en la pantalla
u8g2.drawStr(25, 51, "Nulo"); // Escribir texto en la pantalla
Serial.println("Surtido Nulo");
}
if (X >= 0 && X < 1900){
u8g2.clearBuffer(); // Limpiar el buffer
u8g2.setFont(u8g2_font_logisoso16_tf); // Establecer la fuente del texto
u8g2.drawStr(25,21, "Solicita"); // Escribir texto en la pantalla
u8g2.drawStr(25,51, "Resurtido"); // Escribir texto en la pantalla
Serial.println("Solicita Resurtido");
}
if (Y >= 0 && Y < 1900){
u8g2.clearBuffer(); // Limpiar el buffer
u8g2.setFont(u8g2_font_logisoso16_tf); // Establecer la fuente del texto
u8g2.drawStr(25, 21, "Disminuye"); // Escribir texto en la pantalla
u8g2.drawStr(25, 51, "Cantidad"); // Escribir texto en la pantalla
Serial.println("Disminuye Cantidad");
}
if (Y > 2200 && Y <= 4095){
u8g2.clearBuffer(); // Limpiar el buffer
u8g2.setFont(u8g2_font_logisoso16_tf); // Establecer la fuente del texto
u8g2.drawStr(25, 21, "Incrementa"); // Escribir texto en la pantalla
u8g2.drawStr(25, 51, "Cantidad"); // Escribir texto en la pantalla
Serial.println("Incrementa Cantidad");
}
u8g2.sendBuffer(); // Enviar el buffer a la pantalla
delay(100);
u8g2.clearBuffer(); // Limpiar el buffer
}
void SigPartida(){
refrescaPantalla();
if (numeroEntero > 0){
if(tipoSurtido == "Completo"){
Serial.println("Cantidad Surtida: " + String(numeroEntero));
}
if(tipoSurtido == "Nulo"){
Serial.println("Cantidad Surtida: 0");
}
Serial.println("---------------- Cambio de artículo --------------------");
tipoSurtido = "";
}
// print a random number from 0 to 10000
numeroEntero = random(10000);
char textoChar[tamanoMax];
String textoString = String(numeroEntero);
caracteresNumero = textoString.length();
margenIzq = int((180-(caracteresNumero+1)*26)/2);
// Conversion de string a char
textoString.toCharArray(textoChar , tamanoMax);
Serial.println("Cantidad Solicitada: " + textoString);
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_logisoso32_tf); // Establecer la fuente del texto
u8g2.drawStr(margenIzq, 45, textoChar); // Escribir el número aleatorio texto en la pantalla
u8g2.sendBuffer(); // Enviar el buffer a la pantalla
}
void refrescaPantalla(){
// put your main code here, to run repeatedly:
//delay(10); // this speeds up the simulation
// u8g2.clearBuffer(); // Limpiar el buffer
// u8g2.setFont(u8g2_font_freedoomr10_tu); // Establecer la fuente del texto
// u8g2.drawStr(1,1," ##### ##### ## ##");
// u8g2.drawStr(1,13," ## # ## ## ## #### ## ##");
// u8g2.drawStr(1,25," #### ###### ## ###");
// u8g2.drawStr(1,38,"# ## ## ## ## ## ##");
// u8g2.drawStr(1,50," #### ## ## #### ## ##");
// delay(3000);
u8g2.clearBuffer(); // Limpiar el buffer
u8g2.setFont(u8g2_font_logisoso26_tf); // Establecer la fuente del texto
u8g2.drawStr(21, 45, "SPick!"); // Escribir texto en la pantalla
delay(500);
u8g2.sendBuffer(); // Enviar el buffer a la pantalla
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_logisoso16_tf); // Establecer la fuente del texto
u8g2.drawStr(1, 25, "El surtido"); // Escribir texto en la pantalla
u8g2.drawStr(1, 55, "inteligente!"); // Escribir texto en la pantalla
delay(800);
u8g2.sendBuffer(); // Enviar el buffer a la pantalla
}