Though i am not a newbie but idk why i can’t understand the buttonstate of button formula (i.e push button).. Please teach me about it……
—–>CONSIDER ONLY CODE FOR BUTTONSTATE<—–
/*********
Rui Santos
Complete project details at http://randomnerdtutorials.com
*********/
// include library to read and write from flash memory
#include
// define the number of bytes you want to access
#define EEPROM_SIZE 1
// constants won’t change. They’re used here to set pin numbers:
const int buttonPin = 4; // the number of the pushbutton pin
const int ledPin = 16; // the number of the LED pin
// Variables will change:
int ledState = HIGH; // the current state of the output pin
int buttonState; // the current reading from the input pin
int lastButtonState = HIGH; // the previous reading from the input pin
// the following variables are unsigned longs because the time, measured in
// milliseconds, will quickly become a bigger number than can be stored in an int.
unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
unsigned long debounceDelay = 50; // the debounce time; increase if the output flickers
void setup() {
Serial.begin(115200);
// initialize EEPROM with predefined size
EEPROM.begin(EEPROM_SIZE);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
// read the last LED state from flash memory
ledState = EEPROM.read(0);
// set the LED to the last stored state
digitalWrite(ledPin, ledState);
}
void loop() {
// read the state of the switch into a local variable:
int reading = digitalRead(buttonPin);
// check to see if you just pressed the button
// (i.e. the input went from LOW to HIGH), and you’ve waited long enough
// since the last press to ignore any noise:
// If the switch changed, due to noise or pressing:
if (reading != lastButtonState) {
// reset the debouncing timer
lastDebounceTime = millis();
}
if ((millis() – lastDebounceTime) > debounceDelay) {
// whatever the reading is at, it’s been there for longer than the debounce
// delay, so take it as the actual current state:
// if the button state has changed:
if (reading != buttonState) {
buttonState = reading;
// only toggle the LED if the new button state is HIGH
if (buttonState == LOW) {
ledState = !ledState;
}
}
}
// save the reading. Next time through the loop, it’ll be the lastButtonState:
lastButtonState = reading;
// if the ledState variable is different from the current LED state
if (digitalRead(ledPin)!= ledState) {
Serial.println(“State changed”);
// change the LED state
digitalWrite(ledPin, ledState);
// save the LED state in flash memory
EEPROM.write(0, ledState);
EEPROM.commit();
Serial.println(“State saved in flash memory”);
}
}
Though Prof. Rui Santos explained in a very good manner … but when i try to write my self by considering what will it output physically and then when i try to write it ……i fail.
I TRIED THIS BUT IT IS NOT WORKING CORRECTLY:-
int buttonhelper = HIGH;
#define led 26
#define button 27
int ledstate = HIGH;
void setup() {
pinMode(led , OUTPUT);
pinMode(button , INPUT_PULLUP); // HIGH BECOME LOW AND LOW BECOME HIGH
}
void loop() {
int buttonstate = digitalRead(button);
if(buttonstate != buttonhelper){
if(buttonstate == LOW){
buttonhelper = LOW;
ledstate = !ledstate;
}
else{
buttonhelper = HIGH;
}
}
digitalWrite(led , ledstate);
}
Hi.
What are you really trying to achieve?
I think you want something as described here: http://www.martyncurrey.com/switching-things-on-and-off-with-an-arduino/
See example: “Polling.Example03: Toggle switch”.
Let me know if it helps.
Regards,
Sara