//Metronomo #include "OneButton.h" #define LED 13 #define LED1 A0 //pin for each led #define LED2 A1 #define LED3 A2 #define LED4 A3 #define LED5 A4 #define LED6 A5 #define MOTOR 8 unsigned long previousMillis[7]; //[x] = numero de Salidas (leds y motor) const int BUTTON = 9; const int BUTTON1 = 11; const int BUTTON2 = 12 boolean lastButton = LOW; boolean currentButton = LOW; int speedIncrement = 0; void setup() { pinMode(LED, OUTPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT); pinMode(MOTOR, OUTPUT); pinMode(BUTTON, INPUT); } boolean debounce(boolean last) { boolean current = digitalRead(BUTTON); if (last != current) { delay(5); current = digitalRead(BUTTON); } return current; } void setSpeed(int increment) { if (increment == 1) { digitalWrite(LED, LOW); digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); digitalWrite(LED5, LOW); digitalWrite(LED6, LOW); //digitalWrite(MOTOR, LOW); } //PROGRAMA1 if (increment == 2) { BlinkLed(LED1, 5000, 0); // segundo valor velocidad en milisegundos, el tercer valor de cada salida debe ser diferente (menos motor) //BlinkLed(MOTOR, 600, 5); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); digitalWrite(LED5, LOW); digitalWrite(LED6, LOW); } //PROGRAMA2 else if (increment == 3) { BlinkLed(LED2, 4000, 1); //BlinkLed(MOTOR, 429, 5); digitalWrite(LED1, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); digitalWrite(LED5, LOW); digitalWrite(LED6, LOW); } //PROGRAMA3 else if (increment == 4) { BlinkLed(LED3, 3000, 2); // BlinkLed(MOTOR, 260, 5); digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED4, LOW); digitalWrite(LED5, LOW); digitalWrite(LED6, LOW); } //PROGRAMA4 else if (increment == 5) { BlinkLed(LED4, 2000, 3); //BlinkLed(MOTOR, 200, 5); digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED5, LOW); digitalWrite(LED6, LOW); } //PROGRAMA5 else if (increment == 6) { BlinkLed(LED5, 1000, 4); //BlinkLed(MOTOR, 150, 5); // segundo valor velocidad en milisegundos digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); digitalWrite(LED6, LOW); } //OFF else { digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); digitalWrite(LED5, LOW); digitalWrite(LED6, LOW); //digitalWrite(MOTOR, LOW); } } void loop() { currentButton = debounce(lastButton); if (lastButton == LOW && currentButton == HIGH) { speedIncrement++; } lastButton = currentButton; if (speedIncrement == 7) speedIncrement = 1; setSpeed(speedIncrement); } void BlinkLed (int led, int interval, int array){ if (((long)millis() - previousMillis[array]) >= interval){ previousMillis[array]= millis(); digitalWrite(led, !digitalRead(led)); } }