Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define PIN_BOTON_INC 10
- #define CONFIG_BOTON_INC pinMode(PIN_BOTON_INC, INPUT_PULLUP)
- #define BOTON_INC_PRESIONADO digitalRead(PIN_BOTON_INC)
- #define PIN_BOTON_DEC 11
- #define CONFIG_BOTON_DEC pinMode(PIN_BOTON_DEC, INPUT_PULLUP)
- #define BOTON_DEC_PRESIONADO digitalRead(PIN_BOTON_DEC)
- #define PIN_BLINK 13
- #define CONFIG_BLINK pinMode(PIN_BLINK, OUTPUT)
- #define ENCENDER_BLINK digitalWrite(PIN_BLINK, HIGH)
- #define APAGAR_BLINK digitalWrite(PIN_BLINK, LOW)
- #define MS_ESPERA_BLINK 250
- #define PIN_LED1 2
- #define PIN_LED2 3
- #define PIN_LED3 4
- #define PIN_LED4 5
- #define PIN_LED5 6
- #define PIN_LED6 7
- #define PIN_LED7 8
- #define PIN_LED8 9
- #define CANT_LED 8
- const int pin_led[]={PIN_LED1, PIN_LED2,PIN_LED3,PIN_LED4,PIN_LED5,PIN_LED6,PIN_LED7,PIN_LED8};
- #define CONFIG_LED(X) pinMode(pin_led[X], OUTPUT)
- #define ENCENDER_LED(X) digitalWrite(pin_led[X], HIGH)
- #define APAGAR_LED(X) digitalWrite(pin_led[X], LOW)
- #define AJUSTAR_LED(X, estado) digitalWrite(pin_led[X], estado)
- #define CANT_PASOS 4
- char paso=0;
- void setup() {
- unsigned char i;
- CONFIG_BLINK;
- CONFIG_BOTON_INC;
- CONFIG_BOTON_DEC;
- for(i=0; i<CANT_LED; i++) CONFIG_LED(i);
- Serial.begin(9600);
- Serial.print("Efecto Simetrico Controlado con Comandos");
- }
- void loop()
- {
- Blink();
- EfectoSimetricoControlado();
- CtrlBotones();
- RecepcionSerie();
- }
- void RecepcionSerie(void)
- {
- char dato;
- if(!Serial.available()) return;
- dato=Serial.read();
- Serial.print(dato);
- //0 y 4
- if(dato>='0' && dato<= ('0'+CANT_PASOS-1))
- {
- paso=dato-'0';
- return;
- }
- switch(dato)
- {
- case '+': if(paso<(CANT_PASOS-1)) paso++; break;
- case '-': if(paso>0) paso--; break;
- case '*': paso=0; break;
- //case '0': paso=0; break;
- //case '1': paso=1; break;
- //case '2': paso=2; break;
- //case '3': paso=3; break;
- //case '4': paso=4; break;
- }
- }
- void CtrlBotones(void)
- {
- static bool boton_inc_presionado_ant=0;
- static bool boton_dec_presionado_ant=0;
- if(BOTON_INC_PRESIONADO != boton_inc_presionado_ant)
- {
- boton_inc_presionado_ant=BOTON_INC_PRESIONADO;
- if(BOTON_INC_PRESIONADO)
- {
- if(paso< (CANT_PASOS-1)) paso++; //0,1,2,3,4
- else paso=0;
- }
- }
- if(BOTON_DEC_PRESIONADO != boton_dec_presionado_ant)
- {
- boton_dec_presionado_ant=BOTON_DEC_PRESIONADO;
- if(BOTON_DEC_PRESIONADO)
- {
- if(paso>0) paso--; //1,2,3,4
- else paso=CANT_PASOS-1;
- }
- }
- }
- void EfectoSimetricoControlado(void)
- {
- static unsigned char paso_ant=0;
- if(paso==paso_ant) return;
- if(paso>4) paso=0;
- //Apagar led de acuerdo a paso_ant
- APAGAR_LED(paso_ant);
- APAGAR_LED(CANT_LED - paso_ant -1);
- paso_ant=paso;
- if(paso==4) return; //Estado en que están todos apagados
- //Encender los led que correspondan
- ENCENDER_LED(paso);
- ENCENDER_LED(CANT_LED - paso -1);
- }
- void EfectoBarra(void)
- {
- static unsigned long millis_ant=0;
- static unsigned char led=0, i;
- if(millis() - millis_ant < 100) return;
- millis_ant=millis();
- if(led==CANT_LED)
- {
- for(i=0; i<CANT_LED; i++) APAGAR_LED(i);
- led=0;
- return;
- }
- ENCENDER_LED(led);
- led++;
- }
- void Blink(void)
- {
- static unsigned long millis_ini=0;
- static bool estado_led=0; //Se podría declarar bool
- //ESPERA POR EL EVENTO
- if( (millis() - millis_ini) < MS_ESPERA_BLINK ) return; //Sale
- millis_ini=millis();
- //ACCIÓN
- estado_led = !estado_led;
- if(estado_led) ENCENDER_BLINK;
- else APAGAR_BLINK;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement