Hello,
I-m very new to arduino and as my first project i just connected a bunch of LEDs which light up in different patterns depending on how many times a button has been pressed. The problem is that i need to leave pressed the button for about 3 seconds in order to take effect. It is not doing it instantly.
Here's the code I'm using.
// set pin numbers:
const int buttonPin = 12; // the number of the pushbutton pin
int ledPins[] = {A5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 }; // an array of pin numbers to which LEDs are attached
// variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT_PULLUP);
// initialize serial communication:
pinMode (A5, OUTPUT); // different led patterns
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (8, OUTPUT);
pinMode (7, OUTPUT);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
pinMode (13, OUTPUT);
Serial.begin(9600);
}
void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);
// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
buttonPushCounter++;
Serial.println(buttonState);
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(buttonState);
Serial.println("off");
}
}
// save the current state as the last state,
//for next time through the loop
lastButtonState = buttonState;
// turns on the LED based on the buttonPushCounter
switch (buttonPushCounter) {
case 0:
digitalWrite (A5, LOW);
delay (60);
digitalWrite (2, LOW);
delay (59);
digitalWrite (3, LOW);
delay (58);
digitalWrite (4, LOW);
delay (57);
digitalWrite (5, LOW);
delay (56);
digitalWrite (6, LOW);
delay (55);
digitalWrite (7, LOW);
delay (54);
digitalWrite (8, LOW);
delay (53);
digitalWrite (9, LOW);
delay (52);
digitalWrite (10, LOW);
delay (51);
digitalWrite (11, LOW);
delay (50);
digitalWrite (13, LOW);
delay (49);
digitalWrite (A5, HIGH);
delay (48);
digitalWrite (2, HIGH);
delay (47);
digitalWrite (3, HIGH);
delay (46);
digitalWrite (4, HIGH);
delay (45);
digitalWrite (5, HIGH);
delay (44);
digitalWrite (6, HIGH);
delay (43);
digitalWrite (7, HIGH);
delay (42);
digitalWrite (8, HIGH);
delay (41);
digitalWrite (9, HIGH);
delay (40);
digitalWrite (10, HIGH);
delay (39);
digitalWrite (11, HIGH);
delay (38);
digitalWrite (13, HIGH);
break;
case 1:
digitalWrite (13, LOW);
delay (60);
digitalWrite (11, LOW);
delay (59);
digitalWrite (10, LOW);
delay (58);
digitalWrite (9, LOW);
delay (57);
digitalWrite (8, LOW);
delay (56);
digitalWrite (7, LOW);
delay (55);
digitalWrite (6, LOW);
delay (54);
digitalWrite (5, LOW);
delay (53);
digitalWrite (4, LOW);
delay (52);
digitalWrite (3, LOW);
delay (51);
digitalWrite (2, LOW);
delay (50);
digitalWrite (A5, LOW);
delay (49);
digitalWrite (13, HIGH);
delay (48);
digitalWrite (11, HIGH);
delay (47);
digitalWrite (10, HIGH);
delay (46);
digitalWrite (9, HIGH);
delay (45);
digitalWrite (8, HIGH);
delay (44);
digitalWrite (7, HIGH);
delay (43);
digitalWrite (6, HIGH);
delay (42);
digitalWrite (5, HIGH);
delay (41);
digitalWrite (4, HIGH);
delay (40);
digitalWrite (3, HIGH);
delay (39);
digitalWrite (2, HIGH);
delay (38);
digitalWrite (A5, HIGH);
break;
case 2:
digitalWrite (13, HIGH);
delay (60);
digitalWrite (11, HIGH);
delay (59);
digitalWrite (10, HIGH);
delay (58);
digitalWrite (9, HIGH);
delay (57);
digitalWrite (8, HIGH);
delay (56);
digitalWrite (7, HIGH);
delay (55);
digitalWrite (6, HIGH);
delay (54);
digitalWrite (5, HIGH);
delay (53);
digitalWrite (4, HIGH);
delay (52);
digitalWrite (3, HIGH);
delay (51);
digitalWrite (2, HIGH);
delay (50);
digitalWrite (A5, HIGH);
delay (49);
digitalWrite (13, LOW);
delay (48);
digitalWrite (11, LOW);
delay (47);
digitalWrite (10, LOW);
delay (46);
digitalWrite (9, LOW);
delay (45);
digitalWrite (8, LOW);
delay (44);
digitalWrite (7, LOW);
delay (43);
digitalWrite (6, LOW);
delay (42);
digitalWrite (5, LOW);
delay (41);
digitalWrite (4, LOW);
delay (40);
digitalWrite (3, LOW);
delay (39);
digitalWrite (2, LOW);
delay (38);
digitalWrite (A5, LOW);
break;
case 3:
digitalWrite (13, HIGH);
delay (60);
digitalWrite (10, HIGH);
delay (59);
digitalWrite (8, HIGH);
delay (58);
digitalWrite (6, HIGH);
delay (57);
digitalWrite (4, HIGH);
delay (56);
digitalWrite (2, HIGH);
delay (55);
digitalWrite (A5, HIGH);
delay (54);
digitalWrite (3, HIGH);
delay (53);
digitalWrite (5, HIGH);
delay (52);
digitalWrite (7, HIGH);
delay (51);
digitalWrite (9, HIGH);
delay (50);
digitalWrite (11, HIGH);
delay (49);
digitalWrite (11, LOW);
delay (48);
digitalWrite (9, LOW);
delay (47);
digitalWrite (7, LOW);
delay (46);
digitalWrite (5, LOW);
delay (45);
digitalWrite (3, LOW);
delay (44);
digitalWrite (A5, LOW);
delay (43);
digitalWrite (2, LOW);
delay (42);
digitalWrite (4, LOW);
delay (41);
digitalWrite (6, LOW);
delay (40);
digitalWrite (8, LOW);
delay (39);
digitalWrite (10, LOW);
delay (38);
digitalWrite (13, LOW);
break;
default:
buttonPushCounter = 0;
break;
}
}
Any ideas on how can i make the button work instantly?
Thanks in advance!