Go Down

Topic: How to leave an LED on (Read 791 times) previous topic - next topic

Hello guys, I am probably gonna get laughed at here but I need help programming an LED. I got the SUPER basic program on turning an LED on when a pushbutton on my breadboard is pressed but the LED only turns on when I press it, and it goes off when I release it. I need a program where I press and release it once and the LED turns (and remains) on. And when I press and release it again the LED goes off. I am using an Arduino UNO.

const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);     
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     
}

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:   
    digitalWrite(ledPin, LOW); 
  }
  else {
    // turn LED off:
    digitalWrite(ledPin, HIGH);
  }
}

AWOL

The key phrase here is:
Quote
I need a program where I press and release


You need to detect when the button goes from "pressed" to "not pressed" and simply flip the state of the LED.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Boffin1

Normally the button would be between a pin ( set with a pullup in setup )  and ground,

so if you press the button and digitalRead the pin it will be low,
Quote

 if (buttonState == HIGH) {    
   // turn LED on:  
   digitalWrite(ledPin, LOW);

 

Normally the LED is wired from the pin through a resistor to ground ( as is the built in LED on pin 13 )  so you would  
digitalWrite(ledPin, HIGH)  to switch it on

Quote
// check if the pushbutton is pressed.

 // if it is, the buttonState is HIGH:
 if (buttonState == HIGH) {    
   // turn LED on:  
   digitalWrite(ledPin, LOW);
 }
 else {
   // turn LED off:
   digitalWrite(ledPin, HIGH);
 }


even when you get the logic sorted out, what you are doing is saying " if the buttons is pressed, light the LED' else ( otherwise ) turn it off.

So you might as well wire the LED to the button :-)

when you have the logic levels sorted search for toggle.

Thanks for the help. Hopefully I can figure this out. Kinda confused cos I'm used to programming 8051s on Silicon Labs.

AWOL

8051, PIC, PowerPC or ARM - the principle is identical.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

bratan

Here's a great video tutorial that will show you just what you need :)
https://www.youtube.com/watch?v=_LCCGFSMOr4
Towards middle of it it shows how to switch on/off button so it stays lit or unlit.
Xronos Clock - A talking arduino based alarm clock is now available. Check out xronosclock.com for pictures, source code, schematics, and purchasing info :)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy