• Skip to main content
  • Skip to primary sidebar

RNTLab.com

The Ultimate Shortcut to Learn Electronics and Programming with Open Source Hardware and Software

  • Courses
  • Forum
    • Forum
    • Ask Question
  • Shop
  • Account
  • Blog
  • Login

ESP32COURSE HELP

Q&A Forum › Category: ESP32 › ESP32COURSE HELP
0 Vote Up Vote Down
Musab Mahmood asked 6 years ago

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”);
}
}

Question Tags: BUTTON STATE
3 Answers
0 Vote Up Vote Down
Musab Mahmood answered 6 years ago

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.

0 Vote Up Vote Down
Musab Mahmood answered 6 years ago

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);
}

0 Vote Up Vote Down
Sara Santos Staff answered 6 years ago

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

Primary Sidebar

Login to Ask or Answer Questions

This Forum is private and it’s only available for members enrolled in our Courses.

Login »

Latest Course Updates

  • [eBook Updated] Learn Raspberry Pi Pico/Pico W with MicroPython eBook – Version 1.2 May 26, 2025
  • [New Edition] Build ESP32-CAM Projects eBook – 2nd Edition April 16, 2025

You must be logged in to view this content.

Contact Support - Refunds - Privacy - Terms - MakerAdvisor.com - Member Login

Copyright © 2013-2025 · RandomNerdTutorials.com · All Rights Reserved

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.