Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- * NOMBRE:[Ariel Alexis Lorda Barrabasqui]
- *
- * Entrgar con nombre archivo: usr_p1.ino
- *
- * 24/06/21 - Requerimientos
- * 2) Implementar un Lector de Pulsador, que permita diferenciar entre
- * a) Botón presiondo durante más de 500ms --> APAGA EL MODULO DE EFECTOS
- * b) 1 Toque corto de botón (menos de 500ms) HABILITA EFECTO A / Invierte el sentido
- * c) 2 Toques cortos de botón (un tiempo inferior a 500ms entre toques) HABILITA EFECTO B / Invierte el sentido
- * 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 Pulsador PORTB.0
- #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 estado = 1;
- int cont = 0;
- void setup() {
- CONFIGURAR_BOTON;
- CONFIGURAR_LED_TEST;
- Serial.begin(9600);
- }
- void loop() {
- LedTest();
- SupervisaPulsador();
- Efectos();
- }
- void SupervisaPulsador(void)
- {
- static unsigned long millis_ant_bot=0;
- static unsigned long millis_act_bot=0;
- if(!BOT_PRESIONADO) return; // NO se presionó el botón, vuelve al loop
- millis_ant_bot = millis(); //Se presionó el botón
- while(BOT_PRESIONADO){
- LedTest();
- Efectos();
- }
- millis_act_bot = millis();
- if(millis_act_bot - millis_ant_bot > 500){
- estado = 0 ;
- return;
- }
- cont++;
- if(millis_act_bot - millis_ant_bot < 500){
- if(cont == 1){
- estado = 1;
- }else{
- estado = 2;
- cont = 0;
- }
- }
- }
- void LedTest(void)
- {
- static bool led_encendido=false;
- static unsigned long millis_ant=0;
- if(led_encendido && millis()-millis_ant>=TPO_LED_TEST_ON){
- APAGAR_LED_TEST;
- millis_ant=millis();
- led_encendido= false;
- }
- if(!led_encendido && millis()-millis_ant>=TPO_LED_TEST_OFF){
- ENCENDER_LED_TEST;
- millis_ant=millis();
- led_encendido= true;
- }
- }
- void Efectos(void)
- {
- static unsigned long millis_ant_estado=0;
- switch(estado){
- case 0:
- PUERTO_LEDS = 0X00;
- return;
- case 1:
- if(millis()-millis_ant_estado <100)return;
- millis_ant_estado = millis();
- PUERTO_LEDS<<=1;
- PUERTO_LEDS = PUERTO_LEDS | 1;
- return;
- case 2:
- if(millis()-millis_ant_estado <100)return;
- millis_ant_estado = millis();
- PUERTO_LEDS>>=1;
- PUERTO_LEDS=PUERTO_LEDS | 0;
- return;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement