/*
* Pulsador de Domótica
*/
#define PIN_LED 13
#define CONFIGURAR_LED pinMode(PIN_LED, OUTPUT)
#define ENCENDER_LED digitalWrite(PIN_LED, HIGH)
#define APAGAR_LED digitalWrite(PIN_LED, LOW)
#define PIN_LUZ 11
#define CONFIGURAR_LUZ pinMode(PIN_LUZ, OUTPUT)
#define ENCENDER_LUZ digitalWrite(PIN_LUZ, HIGH)
#define APAGAR_LUZ digitalWrite(PIN_LUZ, LOW)
#define PIN_BOT1 7
#define CONFIGURAR_BOT1 pinMode(PIN_BOT1, INPUT_PULLUP)
#define BOT1_PRESIONADO (digitalRead(PIN_BOT1)==LOW)
#define PIN_BOT2 5
#define CONFIGURAR_BOT2 pinMode(PIN_BOT2, INPUT_PULLUP)
#define BOT2_PRESIONADO (digitalRead(PIN_BOT2)==LOW)
#define PIN_BOT3 3
#define CONFIGURAR_BOT3 pinMode(PIN_BOT3, INPUT_PULLUP)
#define BOT3_PRESIONADO (digitalRead(PIN_BOT3)==LOW)
void setup()
{
//Salidas
CONFIGURAR_LED;
CONFIGURAR_BOT1;
CONFIGURAR_BOT2;
CONFIGURAR_BOT3;
//Entrada
CONFIGURAR_LUZ;
}
bool luz=0;
void loop()
{
SupervisaBotones();
ActualizaLuz();
LedTest();
}
void SupervisaBotones(void)
{
static bool bot1_presionado_ant=0;
static bool bot2_presionado_ant=0;
static bool bot3_presionado_ant=0;
if(BOT1_PRESIONADO && !bot1_presionado_ant) luz=!luz;
if(BOT2_PRESIONADO && !bot2_presionado_ant) luz=!luz;
if(BOT3_PRESIONADO && !bot3_presionado_ant) luz=!luz;
bot1_presionado_ant=BOT1_PRESIONADO;
bot2_presionado_ant=BOT2_PRESIONADO;
bot3_presionado_ant=BOT3_PRESIONADO;
}
void ActualizaLuz(void)
{
if(luz) ENCENDER_LUZ;
else APAGAR_LUZ;
}
void LedTest(void)
{
static bool encender_led=0;
static unsigned long millis_ant=0;
if(millis()-millis_ant < 1000) return;
millis_ant=millis();
//Invertir el estado del led
encender_led = !encender_led;
if(encender_led) ENCENDER_LED;
else APAGAR_LED;
}