Advertisement
hidromotic

gal_p1

Jun 28th, 2021
767
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.87 KB | None | 0 0
  1. /*
  2.  *
  3.  * NOMBRE: Ezequiel Adonis Gallemi Cruseño
  4.  *
  5.  * Entrgar con nombre archivo: usr_p1.ino
  6.  *
  7.  * 24/06/21 - Requerimientos
  8.  * 1) Implementar un LED TEST que tenga un destello de 50ms cada 1000ms (50ms ENCENDIDO / 950ms APAGADO)
  9.  * 2) Implementar un Lector de Pulsador, que permita diferenciar entre
  10.  *  a) Botón presiondo durante más de 500 segundo --> APAGA EL MODULO DE EFECTOS
  11.  *  b) 1 Toque corto de botón                     HABILITA EFECTO A / Invierte el sentido
  12.  *  c) 2 Toques cortos de botón (un tiempo inferior a 500ms entre toques)    HABILITA EFECTO B / Invierte el sentido
  13.  * 3) Módulo de Leds con múltiples efectos
  14.  *  Efecto a: Un punto que se va corriendo
  15.  *  b: Una barra de leds que se va completando
  16.  *  
  17.  *  PORTD --> 8 LEDs
  18.  *  PORTB.0 --> Pulsador
  19.  *  PORTB.5 --> LED_TEST
  20. / */
  21. #define PUERTO_LEDS             PORTD
  22. #define CONFIGURAR_LEDS         DDRD=0XFF
  23.  
  24. #define CONFIGURAR_BOTON       pinMode(8, INPUT)
  25. #define BOT_PRESIONADO         digitalRead(8)
  26.  
  27. #define CONFIGURAR_LED_TEST     pinMode(13, OUTPUT)
  28. #define ENCENDER_LED_TEST       digitalWrite(13, HIGH)
  29. #define APAGAR_LED_TEST         digitalWrite(13, LOW)
  30.  
  31.  
  32. #define TPO_LED_TEST_ON        50
  33. #define TPO_LED_TEST_OFF       950
  34.  
  35. bool encenderEfectoA = 0;
  36.  
  37. void setup()
  38.   {
  39.     CONFIGURAR_LEDS;
  40.     PUERTO_LEDS=0;
  41.     CONFIGURAR_BOTON;
  42.     CONFIGURAR_LED_TEST;
  43.   }
  44.  
  45. void loop() {
  46.   LedTest();
  47.   SupervisaPulsador();
  48.   Efectos();  
  49.   }
  50.  
  51. void SupervisaPulsador(void)
  52.   {
  53.   /* Eventos
  54.    *  Se presionó el botón
  55.    *  Se superaron los 500ms con el botón presionado
  56.    *  Se liberó el botón antes de los 500ms
  57.    *  Se liberó el botón después de los 500ms
  58.    *  Pasaron más de 500ms desde que se liberó el botón
  59.    */
  60.    static bool bot_presionado_ant=0;
  61.    
  62.   if(BOT_PRESIONADO==bot_presionado_ant) return;
  63.   bot_presionado_ant=BOT_PRESIONADO;
  64.  
  65.   if(!BOT_PRESIONADO) return;
  66.     encenderEfectoA = ! encenderEfectoA;
  67.  
  68.   }
  69.  
  70. void LedTest(void)
  71.   {
  72.     const unsigned int t_off = TPO_LED_TEST_OFF , t_on = TPO_LED_TEST_ON;
  73.     static bool estado=0;
  74.     static unsigned long millis_ant=0;  
  75.     static unsigned long tpo_espera = t_off;
  76.  
  77.      
  78.     if(millis() - millis_ant < tpo_espera ) return;
  79.  
  80.      millis_ant =  millis();
  81.      estado = !estado;
  82.    
  83.     if (estado)
  84.     {
  85.       ENCENDER_LED_TEST;
  86.       tpo_espera =t_on;
  87.     }
  88.     else
  89.     {
  90.        APAGAR_LED_TEST;
  91.        tpo_espera = t_off;
  92.     }
  93.    }
  94.  
  95. void Efectos(void)
  96.   {
  97.     /*PUERTO_LEDS<<=1;
  98.     PUERTO_LEDS=PUERTO_LEDS | 1;
  99.     */
  100.     static unsigned long millis_ant=0;
  101.    
  102.      if(millis() - millis_ant < 250 ) return;
  103.      millis_ant =  millis();
  104.  
  105.      
  106.     if(encenderEfectoA){
  107.     if(PUERTO_LEDS != 0XFF)
  108.     PUERTO_LEDS<<=1;
  109.     PUERTO_LEDS=PUERTO_LEDS | 1;
  110.     }
  111.     else{
  112.       PUERTO_LEDS>>=1;
  113.     PUERTO_LEDS=PUERTO_LEDS | 0;
  114.     }
  115.     }
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement