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