CCCPaste
/*
 * 
 * NOMBRE:
 * 
 * Entrgar con nombre archivo: usr_p1.ino
 * 
 * 24/06/21 - Requerimientos
 * 1) Implementar un LED TEST que tenga un destello de 50ms cada 1000ms (50ms ENCENDIDO / 950ms APAGADO)
 * 2) Implementar un Lector de Pulsador, que permita diferenciar entre
 *  a) Botón presiondo durante más de 1 segundo APAGA EL MODULO DE EFECTOS
 *  b) 1 Toque corto de botón HABILITA EFECTO A / INVIERTE EL SENTIDO
 *  c) 2 Toques cortos de botón (un tiempo inferior a 500ms entre toques)
 * 3) Módulo de Leds con múltiples efectos
 *  Efecto a: Un punto que se va corriendo
 *  b: Una barra de leds que se va completando
 *  
 *  PORTD --> 8 LEDs
 *  PORTB.0 --> Pulsador
 *  PORTB.5 --> LED_TEST
/ */
#define PUERTO_LEDS PORTD
#define CONFIGURAR_LEDS DDRD=0XFF
 
#define CONFIGURAR_BOTON  pinMode(8, INPUT)
#define BOT_PRESIONADO    digitalRead(8)

#define CONFIGURAR_LED_TEST pinMode(13, OUTPUT)
#define ENCENDER_LED_TEST   digitalWrite(13, HIGH)
#define APAGAR_LED_TEST     digitalWrite(13, LOW)


#define TPO_LED_TEST_ON 50  
#define TPO_LED_TEST_OFF 950 

int evento=0;

void setup() {
  CONFIGURAR_BOTON;
  CONFIGURAR_LED_TEST;
  CONFIGURAR_LEDS;
  }

void loop() {
  LedTest();
  SupervisaPulsador();
  Efectos();  
  }

void SupervisaPulsador(void)
  {
   static char estado=0;
   static bool bot_presionado_ant=0;
   static unsigned long millis_ini=0;

  if(BOT_PRESIONADO!=bot_presionado_ant)
    {
    bot_presionado_ant=BOT_PRESIONADO;
    millis_ini=millis();
    estado=1;
    }
    if(BOT_PRESIONADO && estado)
    {
    if(millis() - millis_ini < 500) return;
    evento= 1;
    estado= 0; 
    }
    
 
  /* Eventos
   *  Se presionó el botón
   *  Se superaron los 500ms con el botón presionado
   *  Se liberó el botón antes de los 500ms
   *  Se liberó el botón después de los 500ms
   *  Pasaron más de 500ms desde que se liberó el botón
   */

  }
  
void LedTest(void)
  {
    static char estado=0;
    static unsigned long tpo_espera=0;
    static bool led_encendido=false;
    static unsigned long millis_ant=0;
    
    if(millis()-millis_ant