Advertisement
hidromotic

val_p1

Jun 28th, 2021
687
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.31 KB | None | 0 0
  1. /*
  2.  *
  3.  * NOMBRE: Cristian Valdez Bideplan
  4.  *
  5.  * Entrgar con nombre archivo: usr_p1.ino (val_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
  11.  *  b) 1 Toque corto de botón
  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. #define PIN_LED_TEST 8
  24.  
  25. #define CONFIGURAR_BOTON  pinMode (9, INPUT)
  26. #define BOT_PRESIONADO    digitalRead(9)
  27.    
  28. #define CONFIGURAR_LED_TEST  pinMode(PIN_LED_TEST, OUTPUT)
  29. #define ENCENDER_LED_TEST    digitalWrite(PIN_LED_TEST, HIGH)
  30. #define APAGAR_LED_TEST      digitalWrite(PIN_LED_TEST, LOW)
  31.  
  32. #define TPO_LED_TEST_ON   50
  33. #define TPO_LED_TEST_OFF  950
  34.  
  35. void setup()
  36.   {
  37.    CONFIGURAR_LED_TEST;
  38.    CONFIGURAR_BOTON;
  39.    PUERTO_LEDS=1;
  40.   }
  41.  
  42. void loop(){
  43.   SupervisaPulsador();
  44.   LedTest();
  45.   Efectos();  
  46.   }
  47.  
  48. void SupervisaPulsador(void)
  49.   {
  50.   /* Eventos
  51.    *  Se presionó el botón
  52.    *  Se superaron los 500ms con el botón presionado
  53.    *  Se liberó el botón antes de los 500ms
  54.    *  Se liberó el botón después de los 500ms
  55.    *  Pasaron más de 500ms desde que se liberó el botón
  56.    */
  57.     static bool bot_presionado_ant1=0;
  58.     static unsigned long millis_ant=0;
  59.    
  60.     if(BOT_PRESIONADO==bot_presionado_ant1) return;
  61.       bot_presionado_ant1=BOT_PRESIONADO;
  62.  
  63.     if(!BOT_PRESIONADO) return;
  64.       PUERTO_LEDS<<=1;
  65.      
  66.   }
  67.   }
  68.  
  69. void LedTest(void)
  70.   {
  71.      static bool led_encendido=false;
  72.      static unsigned long millis_ant=0;
  73.      static unsigned long tpo_espera_caracter=950;
  74.      
  75.      if(millis()- millis_ant<tpo_espera_caracter) return;
  76.          millis_ant=millis();
  77.          led_encendido=!led_encendido;
  78.          if(led_encendido) ENCENDER_LED_TEST;
  79.          else APAGAR_LED_TEST;
  80.          tpo_espera_caracter= led_encendido ? TPO_LED_TEST_ON : TPO_LED_TEST_OFF;
  81.   }
  82.  
  83. void Efectos(void)
  84.   {
  85.      
  86.   }
  87.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement