Tác giả: Thợ điện vô duyên - Phạm minh liêm
Hé lô anh em, Vô Duyên** lại lên đây!
Bữa nay anh em mình lại tỉ tê chuyện nghề ha.
Anh em muốn tui viết bài thứ sáu trong chuyên mục "Vô Duyên - Hỏi Đáp Về Smart Home" với chủ đề "Tự học vi điều khiển" đúng không?
Vụ này thì tui khoái nè, vì nó là cái "cần câu cơm" của tui mà.
Ở bài trước, anh em mình đã biết cách làm cho cái đèn nó chớp tắt rồi.
Đó là bài học về tín hiệu đầu ra (output).
Giờ mình học thêm cái nữa, là tín hiệu đầu vào (input).
Nói thẳng luôn, anh em mình muốn làm smart home thì phải biết cách cho cái Arduino nó "nghe", nó "nhận" tín hiệu từ bên ngoài.
Và cách dễ nhất để học cái này là xài nút nhấn.
Thôi, không nói nhiều nữa, anh em mình bắt đầu thôi.
Bài 6: Đọc tín hiệu từ nút nhấn và điều khiển đèn LED
1. Chuẩn bị "đồ nghề"
Anh em mình cần có mấy món này:
- Một bo Arduino Uno (hoặc bất kỳ bo Arduino nào).
- Một cái breadboard (bảng mạch cắm).
- Một nút nhấn 4 chân.
- Một điện trở 10k Ohm.
- Một cái đèn LED.
- Một điện trở 220 Ohm (cho cái đèn LED).
- Vài sợi dây nối (jumper wires).
2. Mạch điện (đấu dây)
Nói thiệt, cái này quan trọng lắm, anh em nhìn hình rồi làm theo cho kỹ.
Mình phải đấu dây cho đúng để cái mạch nó chạy.
- Nối đèn LED:
- Nối chân dài (anode) của đèn LED vào chân số 13 trên bo Arduino qua một điện trở 220 Ohm.
- Chân ngắn (cathode) của đèn LED thì nối xuống chân GND (cực âm) của Arduino.
- Nối nút nhấn:
- Nối một chân của nút nhấn vào chân số 2 trên bo Arduino.
- Chân đối diện của nút nhấn thì nối xuống chân GND của Arduino.
- Chân còn lại của nút nhấn thì nối vào chân 5V của Arduino qua một điện trở 10k Ohm.
Lưu ý: Mắc cái điện trở 10k Ohm này để làm cái gì?
- Nó giống như một cái "cửa" vậy đó.
- Khi anh em mình không nhấn nút, nó sẽ giữ cho cái chân số 2 luôn ở mức LOW (0V).
- Còn khi anh em mình nhấn nút, nó sẽ "mở cửa" cho dòng điện 5V chạy vào.
3. Viết chương trình
Anh em mình mở phần mềm Arduino IDE lên, rồi copy cái đoạn code dưới đây vào:
// Khai báo chân cho đèn LED và nút nhấn
const int nutNhan = 2; // Nút nhấn được nối vào chân số 2
const int denLed = 13; // Đèn LED được nối vào chân số 13
// Khai báo biến để lưu trạng thái của nút nhấn
int trangThaiNutNhan = 0;
void setup() {
// Đặt chân đèn LED là đầu ra (OUTPUT)
pinMode(denLed, OUTPUT);
// Đặt chân nút nhấn là đầu vào (INPUT)
pinMode(nutNhan, INPUT);
}
void loop() {
// Đọc trạng thái của nút nhấn và lưu vào biến
trangThaiNutNhan = digitalRead(nutNhan);
// Kiểm tra nếu nút nhấn được bấm
if (trangThaiNutNhan == HIGH) {
// Bật đèn LED
digitalWrite(denLed, HIGH);
} else {
// Ngược lại, tắt đèn LED
digitalWrite(denLed, LOW);
}
}
4. Giải thích chương trình
- "const int nutNhan = 2; và const int denLed = 13;":
- Giống như anh em mình đặt tên cho mấy cái chân vậy đó.
- Thay vì phải nhớ số 2, số 13, thì giờ mình cứ gọi tên "nutNhan" và "denLed" là được.
- "pinMode(denLed, OUTPUT);":
- Giống như bài trước, câu này để dặn Arduino là chân này dùng để điều khiển.
- "pinMode(nutNhan, INPUT);":
- Câu này để dặn Arduino là chân này dùng để nhận tín hiệu từ bên ngoài.
- "trangThaiNutNhan = digitalRead(nutNhan);":
- Cái này là câu lệnh mới nè. "digitalRead()" giống như cái "tai" của Arduino vậy.
- Nó sẽ lắng nghe xem cái chân "nutNhan" đang ở mức "HIGH" (có điện) hay "LOW" (không có điện).
- "if (trangThaiNutNhan == HIGH) { ... } else { ... }":
- Cái này là câu lệnh điều kiện. if nghĩa là Nếu, và else là Ngược lại.
- Câu lệnh này sẽ kiểm tra xem trạng thái của nút nhấn có ở mức HIGH hay không.
- Nếu có, nó sẽ thực hiện những câu lệnh bên trong.
Tổng kết
Tóm lại, bài này anh em mình đã học được cách cho cái Arduino nó "nghe", nó "nhận" tín hiệu từ bên ngoài.
Giờ anh em mình có thể làm mấy cái mạch điều khiển đơn giản rồi đó.
Nói nhiêu đó đủ rồi.
Hẹn anh em ở bài viết tiếp theo, mình sẽ học cách xài biến trở để điều chỉnh độ sáng đèn LED\!

Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.