CCCPaste

PulsadorDomoticaCombinacion

/*
 * 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; 
  }