Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Lucas Trento
- * Mapeo_de_Contador
- * Mapear en salidas, los 4 (cuatro) bits menos significativos
- * (nibble bajo) de una variable contador.
- * Un flanco ascendente en una entrada, incrementa el contador,
- * y un flanco ascendente en otra entrada decrementa el contador.
- * Ambas entradas activadas reiniciarán el contador.
- */
- //Led Test
- #define PIN_LED 13
- #define CONFIGURAR_LED pinMode(PIN_LED, OUTPUT)
- #define ENCENDER_LED digitalWrite(PIN_LED, HIGH)
- #define APAGAR_LED digitalWrite(PIN_LED, LOW)
- //Salida
- #define PIN_SALIDA0 A0
- #define CONFIGURAR_SALIDA0 pinMode(PIN_SALIDA0, OUTPUT)
- #define ACTIVAR_SALIDA0 digitalWrite(PIN_SALIDA0, HIGH)
- #define DESACTIVAR_SALIDA0 digitalWrite(PIN_SALIDA0, LOW)
- #define PIN_SALIDA1 A1
- #define CONFIGURAR_SALIDA1 pinMode(PIN_SALIDA1, OUTPUT)
- #define ACTIVAR_SALIDA1 digitalWrite(PIN_SALIDA1, HIGH)
- #define DESACTIVAR_SALIDA1 digitalWrite(PIN_SALIDA1, LOW)
- #define PIN_SALIDA2 A2
- #define CONFIGURAR_SALIDA2 pinMode(PIN_SALIDA2, OUTPUT)
- #define ACTIVAR_SALIDA2 digitalWrite(PIN_SALIDA2, HIGH)
- #define DESACTIVAR_SALIDA2 digitalWrite(PIN_SALIDA2, LOW)
- #define PIN_SALIDA3 A3
- #define CONFIGURAR_SALIDA3 pinMode(PIN_SALIDA3, OUTPUT)
- #define ACTIVAR_SALIDA3 digitalWrite(PIN_SALIDA3, HIGH)
- #define DESACTIVAR_SALIDA3 digitalWrite(PIN_SALIDA3, LOW)
- #define PIN_SALIDA4 A4
- #define CONFIGURAR_SALIDA4 pinMode(PIN_SALIDA4, OUTPUT)
- #define ACTIVAR_SALIDA4 digitalWrite(PIN_SALIDA4, HIGH)
- #define DESACTIVAR_SALIDA4 digitalWrite(PIN_SALIDA4, LOW)
- #define PIN_SALIDA5 A5
- #define CONFIGURAR_SALIDA5 pinMode(PIN_SALIDA5, OUTPUT)
- #define ACTIVAR_SALIDA5 digitalWrite(PIN_SALIDA5, HIGH)
- #define DESACTIVAR_SALIDA5 digitalWrite(PIN_SALIDA5, LOW)
- #define PUERTO_SALIDAS PORTC
- #define CONFIGURAR_SALIDAS DDRC=0xFF
- //Entrada
- #define PIN_ENTRADA1 7
- #define CONFIGURAR_ENTRADA1 pinMode(PIN_ENTRADA1, INPUT)
- #define ENTRADA_ACTIVADA1 digitalRead(PIN_ENTRADA1)
- #define PIN_ENTRADA2 6
- #define CONFIGURAR_ENTRADA2 pinMode(PIN_ENTRADA2, INPUT)
- #define ENTRADA_ACTIVADA2 digitalRead(PIN_ENTRADA2)
- #define PIN_ENTRADA3 5
- #define CONFIGURAR_ENTRADA3 pinMode(PIN_ENTRADA3, INPUT)
- #define ENTRADA_ACTIVADA3 digitalRead(PIN_ENTRADA3)
- void setup()
- {
- CONFIGURAR_LED;
- CONFIGURAR_SALIDAS;
- CONFIGURAR_ENTRADA1;
- CONFIGURAR_ENTRADA2;
- CONFIGURAR_ENTRADA3;
- }
- void loop(){
- Led_Test();
- Mapeo_de_Contador();
- delay(1);
- }
- void Mapeo_de_Contador(void){
- static bool ent1_activada_ant = 0,
- ent2_activada_ant = 0,
- activar_salida = 0,
- incrementa_decrementa = 1;
- static char i = 0;
- static unsigned long millis_ant=0;
- /*
- * Mapear en salidas, los 4 (cuatro) bits menos significativos
- * (nibble bajo) de una variable contador.
- * Un flanco ascendente en una entrada, incrementa el contador,
- * y un flanco ascendente en otra entrada decrementa el contador.
- * Ambas entradas activadas reiniciarán el contador.
- */
- if(incrementa_decrementa)
- {
- if(millis()-millis_ant > 500)
- {
- millis_ant=millis();
- i++;
- if(i==16) PUERTO_SALIDAS= 0;
- PUERTO_SALIDAS++;
- i=0b0000 0010;
- //PUERTO_SALIDAS=0b1010 0001
- PUERTO_SALIDAS= PUERTO_SALIDAS & ~((1<<4)-1); //11110000
- PUERTO_SALIDAS= PUERTO_SALIDAS | ( i & ((1<<4)-1));
- PUERTO_SALIDAS= PUERTO_SALIDAS & (1<<4)-1
- //PUERTO_SALIDAS=i;
- }
- }
- else
- {
- if(millis()-millis_ant > 500)
- {
- millis_ant=millis();
- i--;
- if(i==0) PUERTO_SALIDAS= 15;
- PUERTO_SALIDAS--;
- }
- }
- // Si tengo un cambio en cualquiera de las 2 entradas
- if((ENTRADA_ACTIVADA1 == ent1_activada_ant) && (ENTRADA_ACTIVADA2 == ent2_activada_ant))return;
- ent1_activada_ant = ENTRADA_ACTIVADA1;
- ent2_activada_ant = ENTRADA_ACTIVADA2;
- if(ENTRADA_ACTIVADA1) incrementa_decrementa =1;
- if(ENTRADA_ACTIVADA2) incrementa_decrementa = 0;
- if(ENTRADA_ACTIVADA1 && ENTRADA_ACTIVADA2) PUERTO_SALIDAS= 0;
- }
- void Led_Test(void){
- static bool estado=0;
- static unsigned long millis_ant=0;
- if(millis()-millis_ant < 1000) return;
- millis_ant=millis();
- estado = !estado;
- if(estado) ENCENDER_LED;
- else APAGAR_LED;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement