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:
Arduino UNO R4 bật LED khi button được nhấn.
Arduino UNO R4 tắt LED khi button không được nhấn.
Ứ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.
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
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 LEDvoidsetup() {Serial.begin(9600); // initialize serialpinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up modepinMode(LED_PIN, OUTPUT); // set arduino pin to output mode}voidloop() {int buttonState = digitalRead(BUTTON_PIN); // read new stateif (buttonState == LOW) {Serial.println("The button is being pressed");digitalWrite(LED_PIN, HIGH); // turn on }elseif (buttonState == HIGH) {Serial.println("The button is unpressed");digitalWrite(LED_PIN, LOW); // turn off } }
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.
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 LEDint led_state = LOW; // the current state of LEDint button_state; // the current state of buttonint prev_button_state; // the previous state of buttonvoidsetup() {Serial.begin(9600); // initialize serialpinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up modepinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button_state = digitalRead(BUTTON_PIN);}voidloop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new stateif(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 statedigitalWrite(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:
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).
/* * 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 LEDezButtonbutton(BUTTON_PIN); // create ezButton object that attach to pin 7;int led_state = LOW; // the current state of LEDvoidsetup() {Serial.begin(9600); // initialize serialpinMode(LED_PIN, OUTPUT); // set arduino pin to output modebutton.setDebounceTime(50); // set debounce time to 50 milliseconds}voidloop() {button.loop(); // MUST call the loop() function firstif(button.isPressed()) {Serial.println("The button is pressed");// toggle state of LED led_state = !led_state;// control LED arccoding to the toggleed satedigitalWrite(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.