#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
}