/* -----------------------------------------------------------------
------------------------- Codigo MultiHardWare ---------------------
----------------------------------------------------------------- */
#if defined(ESP8266) //configuracion placa que vamos a utilizar
#include <ESP8266WiFi.h> //si la placa es esp8266
#include <ESP8266WiFiMulti.h> //configuracion wifi
ESP8266WiFiMulti wifiMulti;
#pragma message "Codigo para ESP8266!"
#elif defined(ESP32) //si la placa es esp32
#include <WiFi.h> //configuracion wifi
#include <WiFiMulti.h>
WiFiMulti wifiMulti;
#pragma message "Codigo para ESP32!"
#elif defined(ARDUINO) //si la placa es 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) {//configuracion con base al signo << para generar un serial println con menos lineas de codigo
obj.print(arg);
return obj;
}
/* -----------------------------------------------------------------
---------------- Declaracion de Variables y constantes -------------
----------------------------------------------------------------- */
#define pinled 2 //creacion de pines de variables
#define pinpot 34
char opcion; //creacion de una variable
/* -----------------------------------------------------------------
------------------------- Configuracion Arduino --------------------
----------------------------------------------------------------- */
void setup() {
Serial.begin(9600); //comunicacion serial
pinMode(pinled, OUTPUT);//definimos entradas y salidas
pinMode(pinpot, INPUT);
digitalWrite(pinled, LOW);//definimos en estado bajo a la variable pinled
delay(2000); //retardo de 2000 milisegundos
}
/* -----------------------------------------------------------------
---------------------------- Codigo Principal ----------------------
----------------------------------------------------------------- */
void loop() { //generamos un menu interactivo que se mostrara en el puerto serial
Serial.println();
Serial.println("ingrese uno de los siguientes valores");
Serial.println("1 control de led digital");
Serial.println("2 control de led analogico");
Serial.println("3 control led via potenciometro");
Serial.println("repetir menu");
Serial.println();
while(Serial.available()!=1){//mientras no se reciban datos la pantalla estara en blanco
}
opcion=Serial.read();//si se recibe algun dato numerico
if(opcion=='1'){ //opcion 1 encender pinled digital
leddigital(pinled,500);
}else if(opcion=='2'){ //opcion 2 encender led analogico
ledanalogico(pinled,10,1);
}else if(opcion=='3'){//opcion 3 led con potenciometro
ledpot(pinled,pinpot);
}else if(opcion=='4'){
Serial.println("menu");//opcion 4 volver a repetir el menu
}
}
/* -----------------------------------------------------------------
-------------------------------- Funciones -------------------------
----------------------------------------------------------------- */
void leddigital(int led,int pausa){//funcion led digital sistema de blink
digitalWrite(led,HIGH);//el led estara encendido
delay(pausa);
digitalWrite(led,LOW);//el led estara apgado
delay(pausa);
}
void ledanalogico(int led,int pausa,int inc){//funcion analogica aumento y disminucion de brillo
for (int i=0;i<=255;i+=inc){//aumento constante de 0 a 255
analogWrite(led,i);//dicho aumento sera reflejado en la luminosidad del led
delay(pausa);
}
for (int i=255;i>=0;i-=inc){
analogWrite(led,i);
delay(pausa);
}
}
void ledpot(int led,int pot){//funcion potenciometro
int readpot=analogRead(pot);//datos del potenciometro seran guardados en la variable readpot
int light=map(readpot,0,4095,0,255);//desarrollo de mapeo adaptar datos del potewnciometro con 255 bits
analogWrite(led,light);
Serial<<"valorpot: "<<readpot<<"\n"<<"valor del led: "<<light<<"\n\n";//imprimir el valor del potenciometro y la luminosidad del led
delay(200);
}