Advertisement
hidromotic

MapeoDeContador_Acomodar

Jun 16th, 2020
1,133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.48 KB | None | 0 0
  1. /*
  2.  * Lucas Trento
  3.  * Mapeo_de_Contador
  4.  * Mapear en salidas, los 4 (cuatro) bits menos significativos
  5.  * (nibble bajo) de una variable contador.
  6.  * Un flanco ascendente en una entrada, incrementa el contador,
  7.  * y un flanco ascendente en otra entrada decrementa el contador.  
  8.  * Ambas entradas activadas reiniciarán el contador.
  9.  */
  10.  
  11. //Led Test
  12. #define PIN_LED           13
  13. #define CONFIGURAR_LED    pinMode(PIN_LED, OUTPUT)
  14. #define ENCENDER_LED      digitalWrite(PIN_LED, HIGH)
  15. #define APAGAR_LED        digitalWrite(PIN_LED, LOW)
  16.  
  17. //Salida
  18. #define PIN_SALIDA0         A0
  19. #define CONFIGURAR_SALIDA0  pinMode(PIN_SALIDA0, OUTPUT)
  20. #define ACTIVAR_SALIDA0     digitalWrite(PIN_SALIDA0, HIGH)
  21. #define DESACTIVAR_SALIDA0  digitalWrite(PIN_SALIDA0, LOW)
  22.  
  23. #define PIN_SALIDA1         A1
  24. #define CONFIGURAR_SALIDA1  pinMode(PIN_SALIDA1, OUTPUT)
  25. #define ACTIVAR_SALIDA1     digitalWrite(PIN_SALIDA1, HIGH)
  26. #define DESACTIVAR_SALIDA1  digitalWrite(PIN_SALIDA1, LOW)
  27.  
  28. #define PIN_SALIDA2         A2
  29. #define CONFIGURAR_SALIDA2  pinMode(PIN_SALIDA2, OUTPUT)
  30. #define ACTIVAR_SALIDA2     digitalWrite(PIN_SALIDA2, HIGH)
  31. #define DESACTIVAR_SALIDA2  digitalWrite(PIN_SALIDA2, LOW)
  32.  
  33. #define PIN_SALIDA3         A3
  34. #define CONFIGURAR_SALIDA3  pinMode(PIN_SALIDA3, OUTPUT)
  35. #define ACTIVAR_SALIDA3     digitalWrite(PIN_SALIDA3, HIGH)
  36. #define DESACTIVAR_SALIDA3  digitalWrite(PIN_SALIDA3, LOW)
  37.  
  38. #define PIN_SALIDA4         A4
  39. #define CONFIGURAR_SALIDA4  pinMode(PIN_SALIDA4, OUTPUT)
  40. #define ACTIVAR_SALIDA4     digitalWrite(PIN_SALIDA4, HIGH)
  41. #define DESACTIVAR_SALIDA4  digitalWrite(PIN_SALIDA4, LOW)
  42.  
  43. #define PIN_SALIDA5         A5
  44. #define CONFIGURAR_SALIDA5  pinMode(PIN_SALIDA5, OUTPUT)
  45. #define ACTIVAR_SALIDA5     digitalWrite(PIN_SALIDA5, HIGH)
  46. #define DESACTIVAR_SALIDA5  digitalWrite(PIN_SALIDA5, LOW)
  47.  
  48. #define PUERTO_SALIDAS      PORTC
  49. #define CONFIGURAR_SALIDAS  DDRC=0xFF
  50.  
  51. //Entrada
  52. #define PIN_ENTRADA1        7
  53. #define CONFIGURAR_ENTRADA1 pinMode(PIN_ENTRADA1, INPUT)
  54. #define ENTRADA_ACTIVADA1   digitalRead(PIN_ENTRADA1)
  55.  
  56. #define PIN_ENTRADA2        6
  57. #define CONFIGURAR_ENTRADA2 pinMode(PIN_ENTRADA2, INPUT)
  58. #define ENTRADA_ACTIVADA2   digitalRead(PIN_ENTRADA2)
  59.  
  60. #define PIN_ENTRADA3        5
  61. #define CONFIGURAR_ENTRADA3 pinMode(PIN_ENTRADA3, INPUT)
  62. #define ENTRADA_ACTIVADA3   digitalRead(PIN_ENTRADA3)
  63.  
  64. void setup()
  65.   {
  66.    CONFIGURAR_LED;
  67.    CONFIGURAR_SALIDAS;
  68.    CONFIGURAR_ENTRADA1;
  69.    CONFIGURAR_ENTRADA2;
  70.    CONFIGURAR_ENTRADA3;
  71.   }
  72.  
  73. void loop(){
  74.    Led_Test();
  75.    Mapeo_de_Contador();
  76.    delay(1);
  77. }
  78.  
  79. void Mapeo_de_Contador(void){
  80.     static bool ent1_activada_ant = 0,
  81.                 ent2_activada_ant = 0,
  82.                 activar_salida = 0,
  83.                 incrementa_decrementa = 1;
  84.     static char i = 0;
  85.     static unsigned long millis_ant=0;
  86.  
  87.    /*
  88.    * Mapear en salidas, los 4 (cuatro) bits menos significativos
  89.    * (nibble bajo) de una variable contador.
  90.    * Un flanco ascendente en una entrada, incrementa el contador,
  91.    * y un flanco ascendente en otra entrada decrementa el contador.  
  92.    * Ambas entradas activadas reiniciarán el contador.
  93.    */
  94.    if(incrementa_decrementa)
  95.    {
  96.      if(millis()-millis_ant > 500)
  97.       {
  98.         millis_ant=millis();
  99.         i++;
  100.         if(i==16) PUERTO_SALIDAS= 0;  
  101.         PUERTO_SALIDAS++;
  102.         i=0b0000 0010;
  103.         //PUERTO_SALIDAS=0b1010 0001
  104.         PUERTO_SALIDAS= PUERTO_SALIDAS & ~((1<<4)-1);       //11110000
  105.         PUERTO_SALIDAS= PUERTO_SALIDAS | ( i & ((1<<4)-1));
  106.        
  107.  
  108.         PUERTO_SALIDAS= PUERTO_SALIDAS & (1<<4)-1
  109.         //PUERTO_SALIDAS=i;
  110.       }
  111.    }
  112.     else
  113.     {
  114.       if(millis()-millis_ant > 500)
  115.         {
  116.           millis_ant=millis();
  117.           i--;
  118.           if(i==0) PUERTO_SALIDAS= 15;  
  119.           PUERTO_SALIDAS--;
  120.         }
  121.      }
  122.    
  123.      
  124.     // Si tengo un cambio en cualquiera de las 2 entradas
  125.     if((ENTRADA_ACTIVADA1 == ent1_activada_ant) && (ENTRADA_ACTIVADA2 == ent2_activada_ant))return;
  126.     ent1_activada_ant = ENTRADA_ACTIVADA1;
  127.     ent2_activada_ant = ENTRADA_ACTIVADA2;
  128.    
  129.     if(ENTRADA_ACTIVADA1) incrementa_decrementa =1;
  130.  
  131.     if(ENTRADA_ACTIVADA2)  incrementa_decrementa = 0;
  132.  
  133.     if(ENTRADA_ACTIVADA1 && ENTRADA_ACTIVADA2) PUERTO_SALIDAS= 0;
  134.  
  135. }
  136.  
  137. void Led_Test(void){
  138.     static bool estado=0;
  139.     static unsigned long millis_ant=0;
  140.  
  141.     if(millis()-millis_ant < 1000) return;
  142.     millis_ant=millis();
  143.  
  144.     estado = !estado;
  145.  
  146.     if(estado)       ENCENDER_LED;
  147.     else             APAGAR_LED;
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement