Arduino UNO R4 Button LED
Hướng dẫn này sẽ dạy bạn cách sử dụng Arduino UNO R4 và button để điều khiển LED. Chúng ta sẽ học hai cách khác nhau để thực hiện:
Ứng dụng 1 - LED theo trạng thái của button:
Ứng dụng 2 - LED thay đổi trạng thái mỗi khi button được nhấn:
Nếu Arduino UNO R4 phát hiện button được nhấn (chuyển từ HIGH sang LOW), nó sẽ bật LED nếu đang tắt, hoặc tắt LED nếu đang bật.
Thả button không làm thay đổi trạng thái LED.
Đối với Ứng dụng 2, chúng ta cần debounce button để đảm bảo hoạt động chính xác. Chúng ta sẽ thấy tại sao điều này quan trọng bằng cách so sánh cách LED hoạt động có và không có debounce trong code Arduino.

| 1 | × | Arduino UNO R4 WiFi hoặc Arduino UNO R4 Minima | |
| 1 | × | (Tùy chọn) DIYables STEM V4 IoT, tương thích với Arduino Uno R4 WiFi | | |
| 1 | × | Arduino UNO R4 Minima (Tùy chọn thay thế) | | |
| 1 | × | Cáp USB Type-C | | |
| 1 | × | Button gắn breadboard với nắp | | |
| 1 | × | Bộ kit Button gắn breadboard | | |
| 1 | × | Nút nhấn gắn panel | | |
| 1 | × | mô-đun nút nhấn | | |
| 1 | × | LED Kit | | |
| 1 | × | LED (red) | | |
| 1 | × | LED Module | | |
| 1 | × | Điện trở 220 ohm | | |
| 1 | × | breadboard | | |
| 1 | × | Dây jumper | | |
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4 | | |
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino UNO R4 | | |
| 1 | × | (Khuyến nghị) Enclosure for Arduino UNO R4 | | |
| 1 | × | (Khuyến nghị) Power Splitter for Arduino UNO R4 | | |
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO | | |
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) | | |
Nếu bạn chưa quen thuộc với LED và button (bao gồm pinout, hoạt động và lập trình), các hướng dẫn sau có thể giúp bạn:

This image is created using Fritzing. Click to enlarge image
#define BUTTON_PIN 7
#define LED_PIN 3
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
int buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW) {
Serial.println("The button is being pressed");
digitalWrite(LED_PIN, HIGH);
}
else
if (buttonState == HIGH) {
Serial.println("The button is unpressed");
digitalWrite(LED_PIN, LOW);
}
}
Thực hiện theo các bước sau:
Kết nối các linh kiện theo sơ đồ được cung cấp.
Kết nối board Arduino Uno R4 với máy tính bằng cáp USB.
Khởi động Arduino IDE trên máy tính của bạn.
Chọn board Arduino Uno R4 phù hợp (ví dụ: Arduino Uno R4 WiFi) và cổng COM.
Sao chép code và mở trong Arduino IDE.
Nhấp vào nút Upload trên Arduino IDE để biên dịch và tải code lên Arduino UNO R4.
Bạn sẽ thấy trạng thái LED đồng bộ với trạng thái button.
Xem giải thích từng dòng trong phần comment của source code!
#define BUTTON_PIN 7
#define LED_PIN 3
int led_state = LOW;
int button_state;
int prev_button_state;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
button_state = digitalRead(BUTTON_PIN);
}
void loop() {
prev_button_state = button_state;
button_state = digitalRead(BUTTON_PIN);
if(prev_button_state == HIGH && button_state == LOW) {
Serial.println("The button is pressed");
led_state = !led_state;
digitalWrite(LED_PIN, led_state);
}
}
Bạn có thể tìm thấy giải thích trong các dòng comment của code Arduino UNO R4 ở trên.
Trong code, biểu thức led_state = !led_state tương đương với đoạn code sau:
if(led_state == LOW)
led_state = HIGH;
else
led_state = LOW;
Sao chép code và mở trong Arduino IDE.
Upload code lên Arduino UNO R4.
Nhấn và thả button nhiều lần.
Quan sát sự thay đổi trạng thái của LED.
Bạn có thể nhận thấy LED thay đổi mỗi khi button được nhấn. Tuy nhiên, điều này có thể không luôn hoạt động hoàn hảo. Đôi khi, LED có thể thay đổi quá nhiều lần một cách nhanh chóng khi bạn nhấn button một lần, hoặc có thể không thay đổi gì cả (nó thay đổi hai lần rất nhanh, khó có thể nhìn thấy).
⇒ Để khắc phục vấn đề này, chúng ta cần Arduino UNO R4 - Button - Debounce.
Debounce button có thể khó khăn đối với người mới bắt đầu. May mắn thay, thư viện ezButton làm cho việc này trở nên dễ dàng.
Tại sao cần debouncing? Xem Arduino UNO R4 - Button - Debounce để biết thêm thông tin.
#include <ezButton.h>
#define BUTTON_PIN 7
#define LED_PIN 3
ezButton button(BUTTON_PIN);
int led_state = LOW;
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
button.setDebounceTime(50);
}
void loop() {
button.loop();
if(button.isPressed()) {
Serial.println("The button is pressed");
led_state = !led_state;
digitalWrite(LED_PIN, led_state);
}
}
Sao chép code và mở bằng Arduino IDE.
Nhấp vào nút Upload trên Arduino IDE để upload code lên Arduino UNO R4.
Nhấn và thả button nhiều lần.
Quan sát sự thay đổi trạng thái của LED.
Bạn sẽ thấy trạng thái LED được toggle chính xác một lần mỗi khi button được nhấn.
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.