Arduino Lesson 6. Digital Inputs - Adafruit Learning System

Skip to main content Arduino Lesson 6. Digital Inputs Arduino Code
  • Overview
  • Parts
  • Breadboard Layout
  • Arduino Code
  • Push Switches
  • Other Things to Do
  • Single page
  • Feedback? Corrections?
  • Text View
Groups
  • Learn Arduino
Featured Products view all
  • angled shot of 20 6mm mini tactile button switches. Tactile Button switch (6mm) x 20 pack $2.50 Add to Cart
  • Angled shot of coiled USB-A to USB-B cable. USB Cable - Standard A-B $3.95 Add to Cart
  • scattered pile of unlit red LEDs Diffused Red 5mm LED (25 pack) $4.00 Add to Cart
  • Angled shot of Premium Male/Male Jumper Wires - 40 x 6 (150mm) Premium Male/Male Jumper Wires - 40 x 6" (150mm) Out of Stock
  • Angled shot of half-size solderless breadboard with red and black power lines. Half Sized Premium Breadboard - 400 Tie Points $4.95 Add to Cart
  • Angled shot of a Adafruit METRO 328 Fully Assembled Adafruit METRO 328 Fully Assembled - Arduino IDE compatible Out of Stock
61 Beginner Skill guide

Arduino Code

Load the following sketch onto your Arduino board. Pressing the top button will turn the LED on, pressing the bottom button will turn it off again.

Download File Copy Code /* Adafruit Arduino - Lesson 6. Inputs */ int ledPin = 5; int buttonApin = 9; int buttonBpin = 8; byte leds = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonApin, INPUT_PULLUP); pinMode(buttonBpin, INPUT_PULLUP); } void loop() { if (digitalRead(buttonApin) == LOW) { digitalWrite(ledPin, HIGH); } if (digitalRead(buttonBpin) == LOW) { digitalWrite(ledPin, LOW); } } /* Adafruit Arduino - Lesson 6. Inputs */ int ledPin = 5; int buttonApin = 9; int buttonBpin = 8; byte leds = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonApin, INPUT_PULLUP); pinMode(buttonBpin, INPUT_PULLUP); } void loop() { if (digitalRead(buttonApin) == LOW) { digitalWrite(ledPin, HIGH); } if (digitalRead(buttonBpin) == LOW) { digitalWrite(ledPin, LOW); } }

The first part of the sketch defines three variable for the three pins that are to be used. The 'ledPin' is the output pin and 'buttonApin' will refer to the switch nearer the top of the breadboard and 'buttonBpin' to the other switch.

The 'setup' function defines the ledPin as being an OUTPUT as normal, but now we have the two inputs to deal with. In this case, we use the set the pinMode to be 'INPUT_PULLUP' like this:

Download File Copy Code pinMode(buttonApin, INPUT_PULLUP); pinMode(buttonBpin, INPUT_PULLUP); pinMode(buttonApin, INPUT_PULLUP); pinMode(buttonBpin, INPUT_PULLUP);

The pin mode of INPUT_PULLUP means that the pin is to be used as an input, but that if nothing else is connected to the input it should be 'pulled up' to HIGH. In other words, the default value for the input is HIGH, unless it is pulled LOW by the action of pressing the button.

This is why the switches are connected to GND. When a switch is pressed, it connects the input pin to GND, so that it is no longer HIGH.

Since the input is normally HIGH and only goes LOW, when the button is pressed, the logic is a little up-side-down. We will handle this in the 'loop' function.

Download File Copy Code void loop() { if (digitalRead(buttonApin) == LOW) { digitalWrite(ledPin, HIGH); } if (digitalRead(buttonBpin) == LOW) { digitalWrite(ledPin, LOW); } } void loop() { if (digitalRead(buttonApin) == LOW) { digitalWrite(ledPin, HIGH); } if (digitalRead(buttonBpin) == LOW) { digitalWrite(ledPin, LOW); } }

In the 'loop' function there are two 'if' statements. One for each button. Each does an 'digitalRead' on the appropriate input.

Remember that if the button is pressed, the corresponding input will be LOW, if button A is low, then a 'digitalWrite' on the ledPin turns it on.

Similarly, if button B is pressed, a LOW is written to the ledPin.

Page last edited March 08, 2024

Text editor powered by tinymce.

Breadboard Layout Push Switches Related Guides 2.8" TFT Touch Shield By lady ada beginner 2.8" TFT Touchscreen By lady ada beginner Skill Badge Requirements: Microcontrollers By Adam Kemp beginner Adalight Project Pack By Phillip Burgess beginner Metal Inlay Capacitive Touch Buttons By Todd Treece beginner How to Build a Testing Jig By Dano Wall intermediate Arduino Tips, Tricks, and Techniques By lady ada beginner SMS Texting Pet Food Dish By Tony DiCola beginner TTL Serial Camera By lady ada beginner Bluetooth Controlled Motorized Camera Slider By Ruiz Brothers beginner 0.96" mini Color OLED By lady ada beginner Arduino Lesson 13. DC Motors By Simon Monk beginner How to Choose a Microcontroller By mike stone beginner 2.2" TFT Display By lady ada beginner Collin's Lab: MIDI By Collin Cunningham beginner
Create Wishlist
× Title Description Close Search Search
Categories

Tag » Arduino If Statement Digital Read