// let's suppose a pushbutton is connected between pin 4 and ground
// the button is active low (LOW when pressed)
byte btnPin = 4;
byte btnState = HIGH;
byte btnPrevState = HIGH;
unsigned long btn_prevMillis;
unsigned long btn_interval = 30; // check the button every 30 ms
void btnPressed() {
buttonPushCounter++
if (buttonPushCounter > numberofPatterns) { //if counter exeeds max reset to index(0)
buttonPushCounter = 0;
}
}
void btnReleased() {
}
void setup() {
pinMode(btnPin, INPUT);
digitalWrite(btnPin, HIGH); // activate internal pullup
}
void loop() {
// button section
if (millis() - btn_prevMillis >= btn_interval) {
btnState = digitalRead(btnPin);
if ((btnPrevState == HIGH) && (btnState == LOW)) {
btnPressed();
}
else if ((btnPrevState == LOW) && (btnState == HIGH)) {
btnReleased();
}
btnPrevState = btnState;
}
// pattern section
switch (buttonPushCounter) {
// etc.
}
}