Arduino UNO R4 - Button - LED

This tutorial teaches you how to use the Arduino UNO R4 and a button to control an LED. We will learn two different ways to do this:

Application 1 - The LED follows the button's state:

Application 2 - The LED changes its state each time the button is pressed:

For Application 2, we need to debounce the button to make sure it works correctly. We will see why this is important by comparing how the LED behaves with and without debouncing in the Arduino code.

Arduino UNO R4 control LED

Hardware Preparation

1×Arduino UNO R4 WiFi
1×Arduino UNO R4 Minima (Alternatively)
1×USB Cable Type-C
1×Push Button
1×(Optional) Panel-mount Push Button
1×LED
1×220 ohm resistor
1×Breadboard
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino UNO R4
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Disclosure: Some of the links provided in this section are Amazon affiliate links. We may receive a commission for any purchases made through these links at no additional cost to you. We appreciate your support.

Overview of LED and Button

If you are unfamiliar with LED and button (including pinout, operation, and programming), the following tutorials can help:

Wiring Diagram

The wiring diagram between Arduino UNO R4 Button LED

This image is created using Fritzing. Click to enlarge image

Application 1 - The LED follows the button's state

Arduino UNO R4 Code

/* * This Arduino UNO R4 code was developed by newbiely.com * * This Arduino UNO R4 code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-button-led */ #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button #define LED_PIN 3 // The Arduino UNO R4 pin connected to the LED void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode } void loop() { int buttonState = digitalRead(BUTTON_PIN); // read new state if (buttonState == LOW) { Serial.println("The button is being pressed"); digitalWrite(LED_PIN, HIGH); // turn on } else if (buttonState == HIGH) { Serial.println("The button is unpressed"); digitalWrite(LED_PIN, LOW); // turn off } }

Detailed Instructions

Follow these instructions step by step:

  • If this is your first time using the Arduino Uno R4 WiFi/Minima, refer to the tutorial on setting up the environment for Arduino Uno R4 WiFi/Minima in the Arduino IDE.
  • Wire the components according to the provided diagram.
  • Connect the Arduino Uno R4 board to your computer using a USB cable.
  • Launch the Arduino IDE on your computer.
  • Select the appropriate Arduino Uno R4 board (e.g., Arduino Uno R4 WiFi) and COM port.
  • Copy the code and open it in the Arduino IDE.
  • Click the Upload button on the Arduino IDE to compile and upload the code to the Arduino UNO R4.
Arduino IDE Upload Code
  • Press the button and hold it for a few seconds.
  • Check out the alteration in the LED's condition.

You will see that the LED state is in sync with the button state.

Code Explanation

Check out the line-by-line explanation contained in the comments of the source code!

Application 2 - The LED changes its state each time the button is pressed

Arduino UNO R4 Code - Button Toggles LED Without Debouncing

/* * This Arduino UNO R4 code was developed by newbiely.com * * This Arduino UNO R4 code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-button-led */ #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button #define LED_PIN 3 // The Arduino UNO R4 pin connected to the LED int led_state = LOW; // the current state of LED int button_state; // the current state of button int prev_button_state; // the previous state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED arccoding to the toggled state digitalWrite(LED_PIN, led_state); } }

Code Explanation

You can locate the explanation in the comment lines of the Arduino UNO R4 code above.

In the code, the expression led_state = !led_state is equal to the following code:

if(led_state == LOW) led_state = HIGH; else led_state = LOW;

Detailed Instructions

  • Copy the code and open it in the Arduino IDE.
  • Upload the code to the Arduino UNO R4.
  • Press release and button several times.
  • Check out the change in the LED's state.

You might notice that the LED changes every time the button is pressed. However, this might not always work perfectly. Sometimes, the LED might change too many times quickly when you press the button once, or it might not change at all (it changes twice very quickly, which is hard to see).

⇒ To fix this problem, we need to debounce the button.

Arduino UNO R4 Code - Button Toggles LED With Debouncing

Debouncing a button can be challenging for beginners. Fortunately, the ezButton library makes it easy.

Why is debouncing necessary? See the Arduino UNO R4 - Button Debounce tutorial for more information.

/* * This Arduino UNO R4 code was developed by newbiely.com * * This Arduino UNO R4 code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-button-led */ #include <ezButton.h> #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button #define LED_PIN 3 // The Arduino UNO R4 pin connected to the LED ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; int led_state = LOW; // the current state of LED void setup() { Serial.begin(9600); // initialize serial pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED arccoding to the toggleed sate digitalWrite(LED_PIN, led_state); } }

Detailed Instructions

  • Install the ezButton library. Refer to ezButton library for instructions.
  • Copy the code and open it with Arduino IDE.
  • Click the Upload button on Arduino IDE to upload the code to the Arduino UNO R4.
  • Press and release the button multiple times.
  • Check out the LED's state change.

You will see that the LED state is toggled exactly once each time the button is pressed.

Video Tutorial

※ OUR MESSAGES

  • As freelancers, We are AVAILABLE for HIRE. See how to outsource your project to us
  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!