/* -----------------------------------------------------------------
------------------------- 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;
}
/* -----------------------------------------------------------------
---------------- Declaracion de Variables y constantes -------------
----------------------------------------------------------------- */
#define PIN_LED 2 // se define pin 2 del esp32 como señal led
#define PINPOT 34 // se define puerto 34señal potenciometro
char opcion;
/* -----------------------------------------------------------------
------------------------- Configuracion Arduino --------------------
----------------------------------------------------------------- */
void setup() {
Serial.begin(9600); // velocidad en transmision
pinMode(PIN_LED,OUTPUT);// Se define led como salida
pinMode(PINPOT, INPUT); // potenciometro como entrada
digitalWrite(PIN_LED,LOW);
delay(2000);
}
/* -----------------------------------------------------------------
---------------------------- Codigo Principal ----------------------
----------------------------------------------------------------- */
// Se define funciones en donde debemos poner los comandos para dar inicio al programa, se escoge que forma va hacer prendido el led
void loop() {
Serial.println();
Serial.println("Ingrese uno de los siguientes valores: ");
Serial.println("1 (control led Digital)");// prendemos el led digital
Serial.println("2 (control led analogico)"); // prendemos el led analogo dando pulsada para prender y pulsada para apagar
Serial.println("3 (control led via potenciometro)"); // se trabaja con potenciometro
Serial.println("4 (repartir menu)");
Serial.println(); // muestra de nuevo las funciones al momento de ya haber ejecutado algun comando
while(Serial.available() !=1){
}
opcion = Serial.read();
if(opcion == '1'){
ledDigital(PIN_LED,500); // con pulsada prende led enviando la señal con el numero 1
} else if(opcion =='2'){
ledAnalogico(PIN_LED,10,1); // se prende el led enviando la señal 2 y apaga de nuevo escribiendo el 2
} else if(opcion =='3'){
ledPot(PIN_LED, PINPOT); // prende el led con potenciometro
} else if(opcion =='4'){
Serial.println("Menu:"); // de nuevo hace salir los comandos
}
}
/* -----------------------------------------------------------------
-------------------------------- Funciones -------------------------
----------------------------------------------------------------- */
void ledDigital(int led,int pausa){ // Funciones que se ejcutaran al momento de ejecutar los comandos en este caso 1
digitalWrite(led, HIGH);
delay(pausa);
digitalWrite(led, LOW);
delay(pausa);
}
void ledAnalogico(int led, int pausa,int inc){ // Funciones que se ejcutaran al momento de ejecutar los comandos en este caso 2
for(int i=0; i <=255; i+= inc){// se disminille el valor de 255 a 0 en uno en uno hasta 0
analogWrite(led,i);
delay(pausa);
}
for(int i=255; i >= 0; i-= inc){// se da la condicion de que el valor sea mayor o igual cero.
analogWrite(led,i);
delay (pausa);
}
}
void ledPot(int led, int pot){ // Funciones que se ejcutaran al momento de ejecutar los comandos en este caso 3
int readPot= analogRead(pot);
int light = map (readPot, 0 ,4095, 0 ,255);// se realiza reconocimiento del potenciometro a 255
analogWrite(led, light);
Serial << "valor Pot:" << readPot << "\n" << "valor led: " << light << "\n\n";
delay(200);
}