Advertisement
hidromotic

par_p1

Jun 29th, 2021
922
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.61 KB | None | 0 0
  1. /*
  2.  *
  3.  * NOMBRE:
  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 1 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)
  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. int evento=0;
  36.  
  37. void setup() {
  38.   CONFIGURAR_BOTON;
  39.   CONFIGURAR_LED_TEST;
  40.   CONFIGURAR_LEDS;
  41.   }
  42.  
  43. void loop() {
  44.   LedTest();
  45.   SupervisaPulsador();
  46.   Efectos();  
  47.   }
  48.  
  49. void SupervisaPulsador(void)
  50.   {
  51.    static char estado=0;
  52.    static bool bot_presionado_ant=0;
  53.    static unsigned long millis_ini=0;
  54.  
  55.   if(BOT_PRESIONADO!=bot_presionado_ant)
  56.     {
  57.     bot_presionado_ant=BOT_PRESIONADO;
  58.     millis_ini=millis();
  59.     estado=1;
  60.     }
  61.     if(BOT_PRESIONADO && estado)
  62.     {
  63.     if(millis() - millis_ini < 500) return;
  64.     evento= 1;
  65.     estado= 0;
  66.     }
  67.    
  68.  
  69.   /* Eventos
  70.    *  Se presionó el botón
  71.    *  Se superaron los 500ms con el botón presionado
  72.    *  Se liberó el botón antes de los 500ms
  73.    *  Se liberó el botón después de los 500ms
  74.    *  Pasaron más de 500ms desde que se liberó el botón
  75.    */
  76.  
  77.   }
  78.  
  79. void LedTest(void)
  80.   {
  81.     static char estado=0;
  82.     static unsigned long tpo_espera=0;
  83.     static bool led_encendido=false;
  84.     static unsigned long millis_ant=0;
  85.    
  86.     if(millis()-millis_ant<tpo_espera) return;
  87.     millis_ant=millis();
  88.     if (!estado){
  89.       ENCENDER_LED_TEST;
  90.       tpo_espera = TPO_LED_TEST_ON;
  91.     }else{
  92.       APAGAR_LED_TEST;
  93.       tpo_espera = TPO_LED_TEST_OFF;
  94.     }
  95.     estado=!estado;
  96.   }
  97.  
  98. void Efectos(void)
  99.   {
  100.     static unsigned long millis_ant=0;
  101.     switch(evento){
  102.       case 1: PUERTO_LEDS<<=1;
  103.               PUERTO_LEDS=PUERTO_LEDS | 1;
  104.               if(millis() - millis_ant < 500) return;
  105.       break;
  106.     }
  107.     evento = 0;
  108.   }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement