Advertisement
hidromotic

EfectoSimetricoControlado

May 27th, 2025
957
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.70 KB | Software | 0 0
  1. #define PIN_BOTON_INC 10
  2. #define CONFIG_BOTON_INC      pinMode(PIN_BOTON_INC, INPUT_PULLUP)
  3. #define BOTON_INC_PRESIONADO  digitalRead(PIN_BOTON_INC)
  4.  
  5. #define PIN_BOTON_DEC 11
  6. #define CONFIG_BOTON_DEC      pinMode(PIN_BOTON_DEC, INPUT_PULLUP)
  7. #define BOTON_DEC_PRESIONADO  digitalRead(PIN_BOTON_DEC)
  8.  
  9. #define PIN_BLINK 13
  10. #define CONFIG_BLINK    pinMode(PIN_BLINK, OUTPUT)
  11. #define ENCENDER_BLINK  digitalWrite(PIN_BLINK, HIGH)
  12. #define APAGAR_BLINK    digitalWrite(PIN_BLINK, LOW)
  13. #define MS_ESPERA_BLINK 250
  14.  
  15. #define PIN_LED1 2
  16. #define PIN_LED2 3
  17. #define PIN_LED3 4
  18. #define PIN_LED4 5
  19. #define PIN_LED5 6
  20. #define PIN_LED6 7
  21. #define PIN_LED7 8
  22. #define PIN_LED8 9
  23. #define CANT_LED 8
  24.  
  25. const int pin_led[]={PIN_LED1, PIN_LED2,PIN_LED3,PIN_LED4,PIN_LED5,PIN_LED6,PIN_LED7,PIN_LED8};
  26.  
  27. #define CONFIG_LED(X)           pinMode(pin_led[X], OUTPUT)
  28. #define ENCENDER_LED(X)         digitalWrite(pin_led[X], HIGH)
  29. #define APAGAR_LED(X)           digitalWrite(pin_led[X], LOW)
  30. #define AJUSTAR_LED(X, estado)  digitalWrite(pin_led[X], estado)
  31.  
  32. #define CANT_PASOS 4
  33. char paso=0;
  34.  
  35. void setup() {
  36.   unsigned char i;
  37.  
  38.   CONFIG_BLINK;
  39.   CONFIG_BOTON_INC;
  40.   CONFIG_BOTON_DEC;
  41.  
  42.   for(i=0; i<CANT_LED; i++) CONFIG_LED(i);
  43.  
  44.   Serial.begin(9600);
  45.   Serial.print("Efecto Simetrico Controlado con Comandos");
  46.   }
  47.  
  48. void loop()
  49.   {
  50.   Blink();
  51.   EfectoSimetricoControlado();
  52.   CtrlBotones();
  53.   RecepcionSerie();
  54.   }
  55.  
  56. void RecepcionSerie(void)
  57.   {
  58.   char dato;
  59.  
  60.   if(!Serial.available()) return;
  61.   dato=Serial.read();
  62.   Serial.print(dato);
  63.  
  64.           //0 y 4
  65.   if(dato>='0' && dato<= ('0'+CANT_PASOS-1))
  66.     {
  67.     paso=dato-'0';
  68.     return;
  69.     }
  70.  
  71.   switch(dato)
  72.     {
  73.     case '+': if(paso<(CANT_PASOS-1)) paso++;  break;
  74.     case '-': if(paso>0)              paso--;  break;
  75.     case '*': paso=0;                           break;
  76.     //case '0': paso=0; break;
  77.     //case '1': paso=1; break;
  78.     //case '2': paso=2; break;
  79.     //case '3': paso=3; break;
  80.     //case '4': paso=4; break;
  81.     }
  82.  
  83.    
  84.   }
  85. void CtrlBotones(void)
  86.   {
  87.   static bool boton_inc_presionado_ant=0;
  88.   static bool boton_dec_presionado_ant=0;
  89.  
  90.   if(BOTON_INC_PRESIONADO != boton_inc_presionado_ant)
  91.     {
  92.     boton_inc_presionado_ant=BOTON_INC_PRESIONADO;
  93.  
  94.     if(BOTON_INC_PRESIONADO)
  95.       {
  96.       if(paso< (CANT_PASOS-1)) paso++; //0,1,2,3,4
  97.       else paso=0;
  98.       }
  99.     }
  100.   if(BOTON_DEC_PRESIONADO != boton_dec_presionado_ant)
  101.     {
  102.     boton_dec_presionado_ant=BOTON_DEC_PRESIONADO;
  103.  
  104.     if(BOTON_DEC_PRESIONADO)
  105.       {
  106.       if(paso>0) paso--; //1,2,3,4
  107.       else paso=CANT_PASOS-1;
  108.       }
  109.     }
  110.  
  111.   }
  112.  
  113. void EfectoSimetricoControlado(void)
  114.   {
  115.   static unsigned char paso_ant=0;
  116.  
  117.   if(paso==paso_ant) return;
  118.   if(paso>4) paso=0;
  119.  
  120.   //Apagar led de acuerdo a paso_ant
  121.   APAGAR_LED(paso_ant);
  122.   APAGAR_LED(CANT_LED - paso_ant -1);
  123.    
  124.   paso_ant=paso;
  125.  
  126.   if(paso==4) return; //Estado en que están todos apagados
  127.  
  128.   //Encender los led que correspondan
  129.   ENCENDER_LED(paso);
  130.   ENCENDER_LED(CANT_LED - paso -1);
  131.  
  132.   }
  133.  
  134. void EfectoBarra(void)
  135.   {
  136.   static unsigned long millis_ant=0;
  137.   static unsigned char led=0, i;
  138.  
  139.   if(millis() - millis_ant < 100) return;
  140.   millis_ant=millis();
  141.  
  142.   if(led==CANT_LED)
  143.     {
  144.     for(i=0; i<CANT_LED; i++) APAGAR_LED(i);
  145.     led=0;
  146.     return;
  147.     }
  148.    
  149.   ENCENDER_LED(led);
  150.   led++;
  151.  
  152.   }
  153.  
  154. void Blink(void)
  155.   {
  156.   static unsigned long millis_ini=0;
  157.   static bool estado_led=0; //Se podría declarar bool
  158.  
  159.   //ESPERA POR EL EVENTO
  160.   if( (millis() - millis_ini) < MS_ESPERA_BLINK ) return; //Sale
  161.   millis_ini=millis();
  162.  
  163.   //ACCIÓN
  164.   estado_led = !estado_led;
  165.   if(estado_led) ENCENDER_BLINK;
  166.   else           APAGAR_BLINK;
  167.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement