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ứ mười 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 xài màn hình LCD để hiển thị chữ rồi.
Giờ mình học thêm một cái nữa, đó là cách đọc tín hiệu từ cảm biến ánh sáng và cảm biến âm thanh.
Cái này giống như anh em mình gắn thêm cái "mắt" và cái "tai" cho thằng Arduino vậy đó.
Thôi, không nói nhiều nữa, anh em mình bắt đầu thôi.
Bài 10: Lập trình đọc tín hiệu từ cảm biến ánh sáng và cảm biến âm thanh
1. Cảm biến là gì?
- Nói thẳng luôn, cảm biến giống như cái "giác quan" của con người vậy đó.
- Mắt thấy ánh sáng, tai nghe âm thanh...
- Cảm biến nó cũng y chang vậy, nó sẽ nhận tín hiệu từ môi trường xung quanh, rồi gửi về cho thằng Arduino xử lý.
2. Cảm biến ánh sáng
- Cảm biến ánh sáng giống như cái "mắt" của Arduino.
- Nó sẽ cho biết cường độ ánh sáng ở xung quanh nó.
- Loại cảm biến thông dụng nhất là quang trở (LDR).
a. Chuẩn bị "đồ nghề":
- Một bo Arduino Uno.
- Một cái breadboard.
- Một cái quang trở (LDR).
- Một điện trở 10k Ohm.
- Vài sợi dây nối.
b. Mạch điện (đấu dây):
- Nối một chân của quang trở vào chân 5V của Arduino.
- Nối chân còn lại của quang trở vào chân A0 của Arduino.
- Từ chân A0, nối thêm một điện trở 10k Ohm xuống chân GND của Arduino.
c. Lập trình và giải thích:
Anh em mình sẽ xài lại câu lệnh "analogRead()" mà tui đã nói ở bài 7.
Nó sẽ đọc giá trị từ quang trở.
- Khi trời sáng, giá trị đọc được sẽ cao.
- Khi trời tối, giá trị đọc được sẽ thấp.
// Khai báo chân cho cảm biến ánh sáng
const int camBienAnhSang = A0;
// Khai báo biến để lưu giá trị đọc được
int giaTriAnhSang = 0;
void setup() {
// Bật cổng Serial để xem giá trị
Serial.begin(9600);
}
void loop() {
// Đọc giá trị từ cảm biến ánh sáng
giaTriAnhSang = analogRead(camBienAnhSang);
// Hiển thị giá trị lên màn hình Serial Monitor
Serial.println(giaTriAnhSang);
delay(100); // Đợi một chút rồi đọc lại
}
3. Cảm biến âm thanh
- Cảm biến âm thanh giống như cái "tai" của Arduino.
- Nó sẽ nhận biết có tiếng động hay không.
- Loại cảm biến này thường có ba chân: VCC, GND, và OUT.
a. Chuẩn bị "đồ nghề":
- Một bo Arduino Uno.
- Một cái breadboard.
- Một cái cảm biến âm thanh.
- Một cái đèn LED.
- Một điện trở 220 Ohm.
- Vài sợi dây nối.
b. Mạch điện (đấu dây):
- Nối chân VCC của cảm biến vào chân 5V của Arduino.
- Nối chân GND của cảm biến vào chân GND của Arduino.
- Nối chân OUT của cảm biến vào chân số 7 của Arduino.
- Nối đèn LED vào chân số 13, giống như bài đầu tiên.
c. Lập trình và giải thích:
Anh em mình sẽ xài lại câu lệnh "digitalRead()" mà tui đã nói ở bài 6.
- Khi có tiếng động, chân OUT của cảm biến sẽ chuyển từ mức LOW sang HIGH.Arduino sẽ nhận được tín hiệu này.
- Khi không có tiếng động, chân OUT sẽ ở mức LOW.
// Khai báo chân cho cảm biến âm thanh và đèn LED
const int camBienAmThanh = 7;
const int denLed = 13;
void setup() {
// Đặt chân đèn LED là đầu ra
pinMode(denLed, OUTPUT);
// Đặt chân cảm biến âm thanh là đầu vào
pinMode(camBienAmThanh, INPUT);
}
void loop() {
// Đọc trạng thái từ cảm biến âm thanh
int trangThaiAmThanh = digitalRead(camBienAmThanh);
// Nếu có tiếng động (HIGH), bật đèn
if (trangThaiAmThanh == HIGH) {
digitalWrite(denLed, HIGH);
} else {
// Ngược lại, tắt đèn
digitalWrite(denLed, LOW);
}
}
4. Tổng kết
Tóm lại, bài này anh em mình đã biết cách "nhìn" và "nghe" với Arduino.
Cái này rất quan trọng, nó sẽ giúp anh em mình làm mấy cái mạch tự động như đèn tự sáng khi trời tối, hay đèn tự bật khi có tiếng vỗ tay.
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 các loại cảm biến khác như cảm biến tiệm cận và cảm biến rung!

Đă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.