Arduino Nút Nhấn Bật/Tắt Rơ-le

Trong Arduino - Nút nhấn - Rơ-le, chúng ta đã học cách bật rơ-le khi nút được nhấn, và tắt rơ-le khi nút được thả. Trong bài hướng dẫn này, chúng ta sẽ học cách thay đổi trạng thái của rơ-le mỗi khi nút được nhấn.

Bằng cách kết nối rơ-le với bóng đèn, dải đèn LED, động cơ hoặc cơ cấu chấp hành... Chúng ta có thể dùng nút để bật/tắt bóng đèn, dải đèn LED, động cơ hoặc cơ cấu chấp hành...

Hướng dẫn bao gồm hai phần chính:

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×breadboard-mount Button with Cap
1×breadboard-mount Button Kit
1×Panel-mount Push Button
1×mô-đun nút nhấn
1×Relay
1×breadboard
1×dây jumper
1×(Tùy chọn) Solenoid Lock
1×(Tùy chọn) 12V Power Adapter
1×(Tùy chọn) DC Power Jack
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về rơ-le và nút

Nếu bạn chưa biết về rơ-le và nút nhấn (bố trí chân, cách hoạt động, cách lập trình ...), hãy tìm hiểu về chúng trong các bài hướng dẫn sau:

Sơ đồ đấu dây

sơ đồ đấu nối nút bấm và rơ-le cho Arduino

This image is created using Fritzing. Click to enlarge image

Mã Arduino - Nút bật/tắt rơ-le không khử rung

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino-button-toggle-relay */ // constants won't change const int BUTTON_PIN = 7; // Arduino pin connected to button's pin const int RELAY_PIN = 3; // Arduino pin connected to relay's pin // variables will change: int relayState = LOW; // the current state of relay int lastButtonState; // the previous state of button int currentButtonState; // the current state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode currentButtonState = digitalRead(BUTTON_PIN); } void loop() { lastButtonState = currentButtonState; // save the last state currentButtonState = digitalRead(BUTTON_PIN); // read new state if(lastButtonState == HIGH && currentButtonState == LOW) { Serial.println("The button is pressed"); // toggle state of relay relayState = !relayState; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relayState); } }

Hướng dẫn từng bước

  • Kết nối Arduino với máy tính bằng cáp USB
  • Mở Arduino IDE, chọn board và cổng đúng
  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấn Tải lên trên Arduino IDE để nạp mã vào Arduino
  • Tiếp tục giữ nút nhấn trong vài giây rồi thả ra
  • Quan sát sự thay đổi trạng thái của rơ-le

Giải thích mã nguồn

Bạn có thể tìm lời giải thích ở dòng chú thích của mã Arduino ở trên.

Trong mã, relayState = !relayState tương đương với đoạn mã sau:

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

※ Lưu ý:

Trên thực tế, đoạn mã ở trên đôi khi không hoạt động đúng. Để nó luôn hoạt động đúng, chúng ta cần Arduino - Nút nhấn - Khử rung. Việc debounce cho nút không dễ đối với người mới bắt đầu. May mắn thay, nhờ thư viện ezButton, chúng ta có thể làm điều này một cách dễ dàng.

Mã Arduino - Nút nhấn bật/tắt rơ-le với khử nhiễu

Tại sao chúng ta cần khử rung? ⇒ xem Arduino - Nút nhấn - Khử rung

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino-button-toggle-relay */ #include <ezButton.h> // constants won't change const int BUTTON_PIN = 7; // Arduino pin connected to button's pin const int RELAY_PIN = 3; // Arduino pin connected to relay's pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; // variables will change: int relayState = LOW; // the current state of relay void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_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 relay relayState = !relayState; // control relay arccoding to the toggled state digitalWrite(RELAY_PIN, relayState); } }

Hướng dẫn từng bước

  • Cài đặt thư viện ezButton. Xem Hướng dẫn
  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Nhấn nút vài lần
  • Xem sự thay đổi trạng thái của rơ-le

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.