Reading a Push Button Toggle
by TechMartian in Circuits > Arduino
10046 Views, 24 Favorites, 0 Comments
Reading a Push Button Toggle
 
       
      Push buttons are very simple to use in analog circuits as switches. Pushing the button simply means a close circuit and letting it go back to rest is an open circuit, under the assumption of a normally open push button switch. However, the use of a push button goes beyond as a simple switch when an Arduino or any microcontroller is involved.
An Arduino can read the input signals of a push button switch and act accordingly. In addition, it can store this value and act as a 'programmed toggle flip-flop.' However, this particular use case for reading a push button switch may not be quite as intuitive to make as expected. As such, the focus of this project is the proper use and wiring for a digital reading of a push button to be used to toggle multiple colours of an RGB LED!
Tools and Materials
 
      - Arduino 101 or Arduino Uno
- Breadboard
- Push Button Switch
- RGB LED
- 3 pieces of 100Ω resistors
- Jumper Wires
Circuitry
 
       
       
      Connecting the Arduino Power to the Breadboard
- Connect the 3.3V pin of the Arduino to the red power rail of the breadboard.
- Connect the GND pin of the Arduino to the black power rail of the breadboard.
Wiring the Push Button
- Connect a 10K Ω resistor from one of the pins of the Push Button Switch to the red power rail of the breadboard.
- Connect the same pin above to the digital pin 3 of the Arduino.
- Connect the other pin on the same side to the ground rail of the breadboard.
Lastly, connect the RGB LED to the Arduino.
- Connect the longest pin of the RGB to the common ground rail of the breadboard.
- Connect the remaining three pins to a 100Ω resistor in series to pins 9, 10, 11 respectively.
Code
 
      const int buttonPin = 3;
//RGB LED pins const int redPin = 11; const int greenPin = 10; const int bluePin = 9;
//create a variable to store a counter and set it to 0 int counter = 0; void setup() {   // Set up the pushbutton pins to be an input:   pinMode(buttonPin, INPUT);// Set up the RGB pins to be an outputs: pinMode(redPin, OUTPUT); pinMode(greenPin,OUTPUT); pinMode(bluePin,OUTPUT); }
void loop() {  // local variable to hold the pushbutton states   int buttonState;  //read the digital state of buttonPin with digitalRead() function and store the //value in buttonState variable buttonState = digitalRead(buttonPin);
  //if the button is pressed increment counter and wait a tiny bit to give us some          //time to release the button   if (buttonState == LOW) // light the LED   {     counter++;     delay(150);   }  //use the if satement to check the value of counter. If counter is equal to 0 all         //pins are off   if(counter == 0)   {    digitalWrite(redPin,LOW);    digitalWrite(greenPin,LOW);    digitalWrite(bluePin,LOW);   }  //else if counter is equal to 1, redPin is HIGH   else if(counter == 1)   {    digitalWrite(redPin,HIGH);    digitalWrite(greenPin,LOW);    digitalWrite(bluePin,LOW);   }  //else if counter is equal to 2 greenPin is HIGH   else if(counter ==2)   {    digitalWrite(redPin,LOW);    digitalWrite(greenPin,HIGH);    digitalWrite(bluePin,LOW);   }  //else if counter is equal to 3 bluePin is HIGH   else if(counter ==3)   {    digitalWrite(redPin,LOW);    digitalWrite(greenPin,LOW);    digitalWrite(bluePin,HIGH);   }  //else reset the counter to 0 (which turns all pins off)   else   {    counter =0;   } }Demo
 
      As I push the push-button, it first toggles to red, then green, then blue, and finally off. This cycles through all the colours as only 1 push button is pressed!