/* -----------------------------------------------------------------
------------------------- Codigo MultiHardWare ---------------------
----------------------------------------------------------------- */
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
ESP8266WiFiMulti wifiMulti;
#pragma message "Codigo para ESP8266!"

#elif defined(ESP32)
#include <WiFi.h>
#include <WiFiMulti.h>
WiFiMulti wifiMulti;
#pragma message "Codigo para ESP32!"

#elif defined(ARDUINO)
#pragma message "Codigo para Arduino basado AVR (UNO, MEGA, etc)!"

#else
#pragma message "No es ni ESP32 o ES8266 o AVR, que es?"

#endif


/* -----------------------------------------------------------------
-------------------------- Librerias y Objetos ---------------------
----------------------------------------------------------------- */
template<class T> inline Print &operator <<(Print &obj, T arg) {
  obj.print(arg);
  return obj;
}
#include <Ticker.h> //Se incluye la libreria.

Ticker tic_led;

/* -----------------------------------------------------------------
---------------- Declaracion de Variables y constantes -------------
----------------------------------------------------------------- */
#define PIN_LED 2 //Se declara el pin del led
boolean estado; //se declara una variable de tipo booleana para estado





/* -----------------------------------------------------------------
------------------------- Configuracion Arduino --------------------
----------------------------------------------------------------- */
void setup() {

  Serial.begin(9600); //Se inica el monitor serial.
  
  estado = false; //estado = 0

  pinMode(PIN_LED, OUTPUT); //Se declara el led como salida.
  digitalWrite(PIN_LED,estado); //Se le indica al led encender o apagar segun la variable "estado"

  tic_led.attach(1, parpadeoLed);
}


/* -----------------------------------------------------------------
---------------------------- Codigo Principal ----------------------
----------------------------------------------------------------- */
void loop() {

  if (Serial.available() == 1){ //Si existe algun registro...
    char input = Serial.read(); //Tomar el valor en tipo char de el monitor serial.

     if(input == '0'){ //Si se ingresa un '0'...
      tic_led.detach(); //Desvincular temporizador (No ejecutar la acción)
     }
  }
}

/* -----------------------------------------------------------------
-------------------------------- Funciones -------------------------
----------------------------------------------------------------- */
void parpadeoLed(){
  digitalWrite(PIN_LED, estado); //Se le indica al led encender o apagar segun la variable "estado"
  estado = !estado; //Se reinicia el estado.
}
$abcdeabcde151015202530354045505560fghijfghij