uint8_t pinLED_Y=2, pinLED_G=3,pinLED_R=4;
uint8_t boton = A0, led_boton=12;
/* plantilla de objeto de led (poder gener leds que parpadeen)
almacenar definiciones de conexion
configurar manejo de GPIO (General Purpuse Input/Output)
manipular el estado logico del led
gestionar el timpo para manipulacion de led
*/
class LED{
private:
byte pin; //Los pines de los LEDS
bool estado;
long current_time;
long periodo;
public:
LED(byte pin){
this->pin = pin;
pinMode(pin,OUTPUT);
estado = LOW;
digitalWrite(pin,estado);
current_time = 0;
}
void setPeriodo(long periodo_ms){
periodo = periodo_ms;
}
void update(){
if((millis()-current_time)>= periodo){
estado = !estado;
digitalWrite(pin,estado);
current_time = millis();
}
}
};
LED LED_YELLOW(pinLED_Y);
LED LED_RED(pinLED_R);
LED LED_GREEN(pinLED_G);
void setup() {
pinMode(boton, INPUT_PULLUP); //logica inversa
pinMode(led_boton, OUTPUT);
LED_YELLOW.setPeriodo(200);
LED_RED.setPeriodo(500);
LED_GREEN.setPeriodo(575);
}
void loop() {
LED_YELLOW.update();
LED_RED.update();
LED_GREEN.update();
digitalWrite(led_boton, !digitalRead(boton));
}