Arduino UNO R4 Nút Nhấn
Nút nhấn là một linh kiện đơn giản nhưng quan trọng được sử dụng trong nhiều dự án Arduino UNO R4. Có thể nó trông phức tạp vì các tính chất cơ học và vật lý của nó, điều này có thể thách thức đối với người mới bắt đầu. Hướng dẫn này được thiết kế để giúp người mới bắt đầu hiểu nó một cách dễ dàng. Hãy cùng bắt đầu!

※ Lưu ý:
Trước khi chúng ta tìm hiểu về cách sử dụng nút nhấn với Arduino Uno R4, chúng tôi muốn nhấn mạnh hai lỗi phổ biến thường gặp phải đối với người mới bắt đầu:
- Vấn đề floating input (đầu vào trôi nổi):
- Triệu chứng: Khi nút nhấn được kết nối với chân đầu vào Arduino UNO R4, trạng thái của chân đầu vào không thể dự đoán được và không phản ánh trạng thái của nút nhấn.
- Nguyên nhân: Chân nút nhấn không được kết nối với điện trở pull-down hoặc pull-up.
- Giải pháp: Kết nối điện trở pull-down hoặc pull-up với chân đầu vào. Chi tiết hơn sẽ được cung cấp sau trong hướng dẫn này.
- Triệu chứng: Code Arduino UNO R4 đọc trạng thái nút nhấn và cố gắng xác định sự kiện nhấn bằng cách phát hiện thay đổi trạng thái (từ HIGH sang LOW, hoặc LOW sang HIGH). Tuy nhiên, khi nút nhấn chỉ được nhấn một lần, Arduino Uno R4 có thể phát hiện nhiều lần nhấn.
- Nguyên nhân: Tính chất cơ học khiến trạng thái chân đầu vào chuyển đổi nhanh giữa LOW và HIGH nhiều lần chỉ với một lần nhấn.
- Giải pháp: Thực hiện debounce. Chi tiết hơn sẽ có trong hướng dẫn Arduino UNO R4 - Button - Debounce.
Chattering chỉ ảnh hưởng đến các ứng dụng yêu cầu đếm chính xác số lần nhấn nút. Trong các ứng dụng khác, nó có thể không phải là vấn đề.
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 (Thay thế) | ||
| 1 | × | Cáp USB Type-C | ||
| 1 | × | Nút Nhấn Gắn Breadboard với Nắp | ||
| 1 | × | Bộ Kit Nút Nhấn Gắn Breadboard | ||
| 1 | × | Nút Nhấn Gắn Panel | ||
| 1 | × | mô-đun nút nhấn | ||
| 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) |
Giới Thiệu Về Nút Nhấn
Nút nhấn, còn được gọi là tactile button hoặc momentary switch, là một công tắc được đóng khi bạn nhấn và giữ nó, và mở khi bạn thả ra. Nút nhấn có nhiều loại khác nhau, chủ yếu được chia thành hai nhóm:
- Nút nhấn để gắn trên PCB (có thể sử dụng trên breadboard)
- Nút nhấn để gắn trên panel

Sơ Đồ Chân
Nút nhấn gắn PCB thường có bốn chân.

Các chân này được kết nối với nhau bên trong theo từng cặp, vì vậy chúng ta chỉ cần sử dụng hai trong số bốn chân mà không được kết nối với nhau bên trong.
Có bốn cách, nhưng thực sự là hai cách vì chúng tương tự nhau, để kết nối nút nhấn (tham khảo hình ảnh).

Một nút nhấn có bốn chân, nhưng tại sao chúng ta chỉ sử dụng hai? ⇒ Điều này để giữ nó ổn định trên PCB (board) và chịu được áp lực.
Nút nhấn gắn panel thường có hai chân.

Button module bao gồm điện trở pull-down tích hợp, đảm bảo đầu ra duy trì ở mức LOW khi nút nhấn không được nhấn. Nó có ba chân:
- GND: Kết nối chân này với ground.
- VCC: Kết nối chân này với nguồn điện 5V hoặc 3.3V.
- OUT: Kết nối chân này với một đầu vào digital trên Arduino của bạn.
Với cấu hình này, module xuất ra LOW khi nút nhấn không được nhấn và xuất ra HIGH khi nút nhấn được nhấn.
Cách Hoạt Động
- Khi nút nhấn không được nhấn, chân A và chân B không được kết nối.
- Khi nút nhấn được nhấn, chân A và chân B được kết nối.

Arduino UNO R4 - Nút Nhấn
Một chân nút nhấn kết nối với VCC hoặc GND, và chân còn lại kết nối với một chân trên Arduino UNO R4.
Chúng ta có thể xác định nút nhấn có được nhấn hay không bằng cách kiểm tra trạng thái của một chân trên Arduino UNO R4 được đặt làm chân đầu vào.
Trạng Thái Nút Nhấn và Trạng Thái Nhấn
Mối quan hệ giữa trạng thái nút nhấn và trạng thái nhấn phụ thuộc vào cách chúng ta kết nối nút nhấn với Arduino UNO R4 và cài đặt chân của Arduino UNO R4.
Có hai cách để sử dụng nút nhấn với Arduino UNO R4:
- Kết nối một chân nút nhấn với VCC và chân kia với một chân Arduino UNO R4 có điện trở pull-down.
- Khi nút nhấn được nhấn, trạng thái chân Arduino UNO R4 là HIGH. Ngược lại, trạng thái chân Arduino UNO R4 là LOW.
- Bạn PHẢI sử dụng điện trở bên ngoài.
- Khi nút nhấn được nhấn, trạng thái chân Arduino UNO R4 là LOW. Ngược lại, trạng thái chân Arduino UNO R4 là HIGH.
- Bạn có thể sử dụng điện trở nội bộ hoặc bên ngoài. Điện trở nội bộ được tích hợp sẵn trong Arduino UNO R4 và có thể được kích hoạt thông qua code Arduino.
※ Lưu ý:
Nếu chúng ta không sử dụng điện trở pull-down hoặc pull-up, chân đầu vào sẽ "trôi nổi" khi nút nhấn không được nhấn. Điều này có nghĩa là trạng thái của chân có thể thay đổi không thể dự đoán được thành HIGH hoặc LOW, gây ra việc đọc không chính xác.
- Thực hành tồi tệ nhất: Thiết lập chân Arduino UNO R4 làm đầu vào bằng cách sử dụng pinMode(BUTTON_PIN, INPUT) mà không có bất kỳ điện trở pull-down hoặc pull-up nào.
- Thực hành tốt nhất: Thiết lập chân Arduino UNO R4 với điện trở pull-up nội bộ bằng cách sử dụng pinMode(BUTTON_PIN, INPUT_PULLUP). Điều này không cần điện trở bên ngoài.
Để làm cho nó dễ dàng cho người mới bắt đầu, hướng dẫn này sử dụng phương pháp đơn giản nhất: thiết lập chân Arduino UNO R4 làm đầu vào pull-up nội bộ mà không cần điện trở bên ngoài. Người mới bắt đầu không cần phải lo lắng về việc kết nối điện trở pull-up hoặc pull-down. Họ chỉ cần sử dụng code Arduino được cung cấp.
Sơ Đồ Đấu Dây
- Sơ đồ đấu dây cho Arduino UNO R4 và nút nhấn gắn PCB

This image is created using Fritzing. Click to enlarge image
- Sơ đồ đấu dây cho Arduino UNO R4 và nút nhấn gắn panel

This image is created using Fritzing. Click to enlarge image
Cách Lập Trình Cho Nút Nhấn
- Thiết lập chân 7 trên Arduino UNO R4 làm đầu vào pull-up nội bộ bằng hàm pinMode().
- Sử dụng hàm digitalRead() để kiểm tra trạng thái của chân Arduino UNO R4.
※ Lưu ý:
Có hai trường hợp sử dụng phổ biến:
- Thứ nhất: Khi đầu vào là HIGH, thực hiện một hành động. Khi đầu vào là LOW, thực hiện hành động ngược lại.
- Thứ hai: Khi đầu vào thay đổi từ LOW sang HIGH (hoặc HIGH sang LOW), thực hiện một hành động.
Dựa trên mục đích, chúng ta chọn một trong những tùy chọn này. Ví dụ, khi sử dụng nút nhấn để điều khiển LED:
- Nếu chúng ta cần LED bật khi nút nhấn được nhấn và tắt khi nó không được nhấn, chúng ta nên chọn kịch bản đầu tiên.
- Nếu chúng ta muốn LED chuyển đổi giữa BẬT và TẮT mỗi khi nút nhấn được nhấn, chúng ta nên chọn kịch bản thứ hai.
Code Arduino UNO R4 - Đọc trạng thái của nút nhấn
Các Bước Nhanh
Thực hiện theo các hướng dẫn này từng bước:
- 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 nút nhấn với Arduino UNO R4 theo sơ đồ được cung cấp.
- Kết nối bo mạch Arduino Uno R4 với máy tính của bạn bằng cáp USB.
- Khởi động Arduino IDE trên máy tính của bạn.
- Chọn bo mạch Arduino Uno R4 phù hợp (ví dụ: Arduino Uno R4 WiFi) và cổng COM.
- Sao chép code trên và mở nó trong Arduino IDE
- Nhấp vào nút Upload trong Arduino IDE để gửi code đến Arduino UNO R4 của bạn.

- Mở Serial Monitor.
- Nhấn và thả nút nhấn nhiều lần.
- Kiểm tra kết quả trên Serial Monitor.
1 có nghĩa là BẬT, 0 có nghĩa là TẮT.
Giải Thích Code
Phần giải thích có trong phần comment của code Arduino ở trên.
Code Arduino UNO R4 - Phát hiện sự kiện nhấn và thả nút
Hãy thay đổi code để nhận biết khi nút nhấn được nhấn và thả.
Các Bước Nhanh
- Sao chép code trên và dán vào Arduino IDE
- Nhấp vào nút Upload trong Arduino IDE để gửi code đến Arduino UNO R4.
- Mở Serial Monitor.
- Nhấn và thả nút nhấn.
- Kiểm tra kết quả trên Serial Monitor.
※ Lưu ý:
- Ngay cả khi bạn chỉ nhấn và thả nút nhấn một lần, Serial Monitor có thể hiển thị nhiều sự kiện nhấn và thả. Đây là hành vi thường gặp được gọi là "hiện tượng chattering". Bạn có thể tìm thêm chi tiết trong Arduino UNO R4 - Button - Debounce.
- Để đơn giản hóa quy trình cho người mới bắt đầu sử dụng nhiều nút nhấn, chúng tôi đã phát triển một thư viện có tên ezButton. Bạn có thể tìm hiểu về thư viện ezButton tại đây.
- Nếu bạn đang sử dụng button module, hãy đặt chân ở chế độ đầu vào bằng cách sử dụng pinMode(BUTTON_PIN, INPUT). Trong cấu hình này, module xuất ra LOW khi nút nhấn không được nhấn và HIGH khi nút nhấn đượ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.