CCCPaste

0939e53c86e23

//Lucas Trento
//CONMUTADOR
//Invertir el estado de la salida salida, por cada flanco ascendente en la entrada.
 
#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)
 
//Salida
#define PIN_SALIDA 12
#define CONFIGURAR_SALIDA   pinMode(PIN_SALIDA, OUTPUT)
#define ACTIVAR_SALIDA      digitalWrite(PIN_SALIDA, HIGH)
#define DESACTIVAR_SALIDA   digitalWrite(PIN_SALIDA, LOW)
 
//Entrada
#define PIN_ENTRADA 7
#define CONFIGURAR_ENTRADA  pinMode(PIN_ENTRADA, INPUT)
#define ENTRADA_ACTIVADA    digitalRead(PIN_ENTRADA)
 
#define MS_ESTADO           500
 
void setup()
  {
   CONFIGURAR_LED;
   CONFIGURAR_SALIDA;
   CONFIGURAR_ENTRADA;
  }
 
void loop()
  {
   Led();
   EstadoSalida();
   delay(1);
  }
 
void EstadoSalida(void)
  {
    static unsigned long millis_ant=0;
    static bool estado_salida = 0;
    static bool entrada_act_ant = 0;
    int ms_espera = 10;
 
    if(millis()-millis_ant < ms_espera) return;
    millis_ant=millis();
   
    if(ENTRADA_ACTIVADA && !entrada_act_ant) estado_salida = !estado_salida;;
 
    if(estado_salida)   ACTIVAR_SALIDA;
    else                DESACTIVAR_SALIDA;  
  }
 
 
void Led(void)
  {
    static bool estado=0;
    static unsigned long millis_ant=0;
 
    if(millis()-millis_ant < MS_ESTADO) return;
    millis_ant=millis();
 
    estado = !estado;
 
    if(estado)       ENCENDER_LED;
    else             APAGAR_LED;
  }