How to reset arduino after pressing the pushbutton 16 times?
Good afternoon,
I'm trying to reset my Arduino after pressing the pushbutton 16 times. What I'm currently experiencing is that it is not resetting. I'm trying to achieve this using the StateChangeDetection example. Could anyone give me tips on how to achieve this? I'm working on this using an Multi Function Shield or MFS.
My code is:
// this constant won't change:
const int buttonPin = A1; // the pin that the pushbutton is attached to
const int ledPin = 13; // the pin that the LED is attached to
// 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
int count = 0;
void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize the LED as an output:
pinMode(ledPin, OUTPUT);
// initialize serial communication:
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 == LOW) {
// if the current state is HIGH then the button went from off to on:
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
// if the current state is LOW then the button went from on to off:
Serial.println("off");
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state, for next time through the loop
lastButtonState = buttonState;
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
//Source: https://www.instructables.com/answers/Is-there-a-way-to-count-button-pushes-on-an-arduin/
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
count++; // add 1 to the count
if (count >= 8) {
count = 0;
}
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
Comments
3 years ago
You will be MUCH better off if you write down (ideally as a flow chart) what your trying to do:
Start
Get button press
Loop until pressed
Increment counter +1
IS counter = 16 - if = 16 reset.
if <16 loop to start
Then simply do each bit in order in your code.
3 years ago
All this does is count up to 8 and then starts again. What about the reset bit ?