#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 = "";
// Declaramos el pin al que estará conectado el pulsador de Surtido Completo
int pinPulsadorSurtCompleto=4;
// Declaramos el pin al que estará conectado el led de Surtido Completo
int pinLedSurtCompleto=2;
// Declaramos el pin al que estará conectado el pulsador de Surtido Nulo
int pinPulsadorSurtNulo=26;
// Declaramos el pin al que estará conectado el led de Surtido Nulo
int pinLedSurtNulo=27;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Surtido Spick ESP32 y OLED!");
//Determinamos que el pin del pulsador sera para recibir Surtido Completo
pinMode(pinPulsadorSurtCompleto, INPUT);
//Determinamos que el pin del led sera para salir Surtido Completo
pinMode(pinLedSurtCompleto, OUTPUT);
//Determinamos que el pin del pulsador sera para recibir Surtido Nulo
pinMode(pinPulsadorSurtNulo, INPUT);
//Determinamos que el pin del led sera para salir Surtido Nulo
pinMode(pinLedSurtNulo, OUTPUT);
// Iniciamos la pantalla OLED
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() {
//Si la señal del pulsador es activa encendemos el led Surtido Completo
if (digitalRead(pinPulsadorSurtCompleto) == HIGH) {
tipoSurtido = "Completo";
delay(10);
digitalWrite(pinLedSurtCompleto, HIGH);
SigPartida();
}
//de lo contrario apagamos el led Surtido Completo
else {
digitalWrite(pinLedSurtCompleto, LOW);
}
//Si la señal del pulsador es activa encendemos el led Surtido Nulo
if (digitalRead(pinPulsadorSurtNulo) == HIGH) {
digitalWrite(pinLedSurtNulo, HIGH);
delay(10);
tipoSurtido = "Nulo";
SigPartida();
}
//de lo contrario apagamos el led Surtido Completo
else {
digitalWrite(pinLedSurtNulo, LOW);
}
}
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(100);
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_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
}