How can I fix this sketch to make it so that once the button is pressed, it performs some action for a certain amount of time and then returns back to a low state until it is pressed again. For example, I need to run a pump for 5 seconds when the button is pressed and then turn off automatically. And then, when I press the button again it will repeat, etc. I am not trying to use a relay module if it is not necessary. Here is my current sketch and a Lab View of the components:
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
int switchPin = 8;
int ledPin = 13;
int buttonPresses = 0;
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
Serial.begin(9600);
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
lcd.begin(16, 2);
}
boolean debounce(boolean last) //just a debounce function
{
boolean current = digitalRead(switchPin);
if (last != current)
{
delay(5);
current = digitalRead(switchPin);
}
return current;
}
void loop()
{
{currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
{
ledOn = !ledOn;
buttonPresses++;
lcd.clear();
lcd.print("Number of Button ");
lcd.setCursor(0,1);
lcd.print("Presses = ");
lcd.print(buttonPresses);
}
lastButton = currentButton;
digitalWrite(ledPin, ledOn);
}
}
THANK YOU!