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:

Đố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.

Arduino UNO R4 control LED

Linh Kiện Cần Thiết

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)

Về LED và Button

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:

Sơ Đồ Kết Nối

Arduino UNO R4 nút nhấn LED sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Ứng dụng 1 - LED theo trạng thái của button

Code Arduino UNO R4

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/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 } }

Các Bước Thực Hiện

Thực hiện theo các bước sau:

  • Nếu đây là lần đầu tiên bạn sử dụng Arduino Uno R4 WiFi/Minima, hãy tham khảo hướng dẫn về Arduino UNO R4 - Cài Đặt Phần Mềm.
  • 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.
tải mã lên Arduino IDE
  • Nhấn và giữ button trong vài giây.
  • Quan sát sự thay đổi trạng thái của LED.

Bạn sẽ thấy trạng thái LED đồng bộ với trạng thái button.

Giải Thích Code

Xem giải thích từng dòng trong phần comment của source code!

Ứng dụng 2 - LED thay đổi trạng thái mỗi khi button được nhấn

Code Arduino UNO R4 - Button Toggle LED Không Có Debouncing

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/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); } }

Giải Thích Code

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;

Các Bước Thực Hiện

  • 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.

Code Arduino UNO R4 - Button Toggle LED Có Debouncing

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.

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/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); } }

Các Bước Thực Hiện

  • Cài đặt thư viện ezButton. Tham khảo thư viện ezButton để biết hướng dẫn.
  • 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.

Video Tutorial

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.

Bình Luận