Đã được đăng vào 09/07/2020 @ 08:34
Arduino cơ bản 13: Điều khiển động cơ quạt bằng nút nhấn sử dụng Arduino
Trong nội dung bài viết hôm nay mình sẽ hướng dẫn các bạn cách dùng rơ le để đóng cắt động cơ.
Qua bài viết các bạn có thể hiểu thêm về cấu tạo và nguyên lý hoạt động của Rơ le.
Chúng ta đi ngay vào bài viết nhé.
Cấu tạo Rơ le
Để có thể nắm được cấu tạo và hoạt động của rơ le các bạn đọc bài viết về relay (Rơ le) nhé.
Xem thêm:
- Arduino cơ bản 12: Thay đổi màu sắc LED RGB bằng biến trở sử dụng Arduino
- Điều khiển Đèn 220V bằng Realy sử dụng Arduino
Sơ đồ nguyên lý
Các linh kiện cần thiết cho dự án
Tên linh kiện | Số lượng |
Arduino Uno R3 | 1 |
Dây cắm | 9 |
Breadboard | 1 |
Nút nhấn | 1 |
LED 5mm | 1 |
Trở 220R | 2 |
Relay | 1 |
Motor | 1 |
Fan | 1 |
Code
int buttonPin = 2; int relayPin = 3; int relayState = HIGH; int buttonState; int lastButtonState = LOW; long lastDebounceTime = 0; long debounceDelay = 50; void setup() { pinMode(buttonPin, INPUT); pinMode(relayPin, OUTPUT); digitalWrite(relayPin, relayState); } void loop() { int reading = digitalRead(buttonPin); if (reading != lastButtonState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading != buttonState) { buttonState = reading; if (buttonState == HIGH) { relayState = !relayState; } } } // set the relay: digitalWrite(relayPin, relayState); lastButtonState = reading; }
Giải thích code
if (reading != lastButtonState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading != buttonState) { ..... } }
Khi tín hiệu được trả về, chương trình sẽ không thực thi ngay lập tức mà sẽ kiểm tra tín hiệu của nút nhấn đã đúng chưa trong trường hợp đã nhấn sẽ cho chương trình hoạt động.
Lý do sao lại có đoạn kiểm tra này.
Vì độ nảy của nút nhấn sẽ gây ra tín hiệu không chính xác trong quá trình hoạt động
Vậy để khắc phục điều này thay cho phần cứng nên cần có một đoạn chương trình kiểm tra trong một khoảng thời gian để đảm bảo tín hiệu là đúng.
Nguồn: arduinokit.vn
Trả lời