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