/* -----------------------------------------------------------------
------------------------- Codigo MultiHardWare ---------------------
----------------------------------------------------------------- */
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
ESP8266WiFiMulti wifiMulti;
#pragma message "Codigo para Arduino ESP8266!"
#elif defined(ESP32)
#include <WiFi.h>
#include <WiFiMulti.h>
WiFiMulti wifiMulti;
#pragma message "Codigo para Arduino 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 PINLED 2
#define PINPOT 34
char opcion;
/* -----------------------------------------------------------------
------------------------- Configuracion Arduino --------------------
----------------------------------------------------------------- */
void setup() {
Serial.begin(9600);
pinMode(PINLED, OUTPUT);
pinMode(PINPOT, INPUT);
digitalWrite(PINLED, LOW);
delay(2000);
}
/* -----------------------------------------------------------------
---------------------------- Codigo Principal ----------------------
----------------------------------------------------------------- */
void loop() {
Serial.println();
Serial.println("Ingrese uno de los siguientes valores: ");
Serial.println("1 (Control Led Digital)");
Serial.println("2 (Control Led Analogico)");
Serial.println("3 (Control Led via Potenciometro)");
Serial.println("4 (Repetir Menú)");
Serial.println();
while(Serial.available() != 1){
}
opcion = Serial.read();
if(opcion == '1'){
ledDigital(PINLED, 500);
} else if(opcion == '2'){
ledAnalogico(PINLED, 10, 1);
} else if(opcion == '3'){
ledPot(PINLED, PINPOT);
} else if(opcion == '4'){
Serial.println("Menu:");
};
}
/* -----------------------------------------------------------------
------------------------------- Funciones ----------------------
----------------------------------------------------------------- */
void ledDigital(int led, int pausa){
digitalWrite(led, HIGH);
delay(pausa);
digitalWrite(led, LOW);
delay(pausa);
}
void ledAnalogico(int led, int pausa, int inc){
for(int i=0; i <= 255; i+=inc){
analogWrite(led, i);
delay(pausa);
}
for(int i=255; i >= 0; i-=inc){
analogWrite(led, i);
delay(pausa);
}
}
void ledPot(int led, int pot){
int readPot = analogRead(pot);
int light = map(readPot, 0, 4095, 0, 255);
analogWrite(led, light);
Serial << "Valor Pot: " << readPot << "\n" << "Valor Led: " << light << "\n\n";
delay(200);
}