Advertisement
hidromotic

CtrlLuzPasillo2

Apr 21st, 2020
471
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.88 KB | None | 0 0
  1. /*Escribir una función que sea llamada desde el bucle principal y se ocupe de encender la luz de un pasillo durante
  2. un cierto tiempo cada vez que
  3. se presione un botón.
  4. Cada vez que el botón sea presionado, se deberá reiniciar el contador de tiempo.
  5. Incorporar el led de testeo que indica que el programa está corriendo.*/
  6.  
  7. #define PIN_LED             13
  8. #define CONFIGURAR_LED      pinMode(PIN_LED, OUTPUT)
  9. #define ENCENDER_LED        digitalWrite(PIN_LED, HIGH)
  10. #define APAGAR_LED          digitalWrite(PIN_LED, LOW)
  11.  
  12. #define PIN_LUZ             11
  13. #define CONFIGURAR_LUZ      pinMode(PIN_LUZ, OUTPUT)
  14. #define ENCENDER_LUZ        digitalWrite(PIN_LUZ, HIGH)
  15. #define APAGAR_LUZ          digitalWrite(PIN_LUZ, LOW)
  16.  
  17. #define PIN_BOT             7
  18. #define CONFIGURAR_BOT      pinMode(PIN_BOT, INPUT)
  19. #define BOT_PRESIONADO      (digitalRead(PIN_BOT)==HIGH)
  20.  
  21. #define MS_ENCENDIDA        2000
  22.  
  23. void setup()
  24.   {
  25.   CONFIGURAR_LED;
  26.   CONFIGURAR_BOT;
  27.   CONFIGURAR_LUZ;
  28.   }
  29.  
  30. void loop()
  31.   {
  32.   LuzPasillo();
  33.  
  34.   LedTest();
  35.   }
  36.  
  37. bool SePresionoBoton(void)
  38.   {
  39.   static bool bot_presionado_ant=0;
  40.      
  41.   if(BOT_PRESIONADO == bot_presionado_ant) return(false);
  42.   bot_presionado_ant=BOT_PRESIONADO;  
  43.  
  44.   return(BOT_PRESIONADO);
  45.  
  46. //  if(BOT_PRESIONADO) return(true);
  47. //  return(false);
  48.  
  49.   }
  50. void LuzPasillo(void)  
  51.   {
  52.   static unsigned long millis_ini =0;
  53.  
  54.   if(SePresionoBoton())
  55.     {
  56.     ENCENDER_LUZ;
  57.     millis_ini=millis();
  58.     }
  59.  
  60.     //Filtro de tiempo
  61.   if(millis() - millis_ini < MS_ENCENDIDA) return ;
  62.   APAGAR_LUZ;
  63.   }
  64.  
  65. void LedTest(void)
  66.   {
  67.     static bool encender_led=0;
  68.     static unsigned long millis_ant=0;
  69.    
  70.     if(millis()-millis_ant < 1000) return;
  71.     millis_ant=millis();
  72.    
  73.     //Invertir el estado del led
  74.     encender_led = !encender_led;
  75.    
  76.     if(encender_led)  ENCENDER_LED;
  77.     else              APAGAR_LED;
  78.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement