Đồng hồ đo ánh sáng bằng servo
Thuộc phần Đầu ra trong hành trình Arduino của Coddy. Bài học 24 trên 24.
Gắn một chiếc kim lên tay servo, bạn sẽ biến nó thành đồng hồ đo, giống như đồng hồ tốc độ trên ô tô. Ở đây, nó cho biết độ sáng.
Cũng như đèn ngủ, AO của module có giá trị thấp hơn khi ánh sáng sáng hơn: khoảng 1023 trong bóng tối và gần 0 khi có ánh sáng mạnh. Đồng hồ đo cần chỉ cao hơn khi trời sáng hơn, vì vậy phép chuyển đổi sẽ chạy ngược lại. Giống như ở bộ đo ánh sáng, hãy truyền phạm vi mới theo thứ tự ngược vào map():
int angle = map(reading, 0, 1023, 180, 0);Giá trị đọc 0, tức là có ánh sáng mạnh, sẽ thành 180 độ; còn 1023, tức là bóng tối, sẽ thành 0. Các giá trị ở giữa sẽ nằm ở khoảng giữa, theo chiều ngược lại.
Thử thách
Trung bìnhAO của cảm biến ánh sáng nối với A0 và động cơ servo nối với chân 9. Biến cánh tay thành kim đo ánh sáng:
- trời tối thì cánh tay chỉ 0 độ, ánh sáng tối đa thì chỉ 180 độ
- dùng
map()với khoảng giá trị mới theo chiều ngược lại - in ra góc và chờ 50 ms mỗi lần
Nhấn Chạy rồi di chuyển thanh trượt ánh sáng trên cảm biến, sau đó nhấn Kiểm tra.
Tự làm thử
#include <Servo.h>
const int lightPin = A0;
Servo arm;
void setup() {
arm.attach(9);
Serial.begin(9600);
}
void loop() {
// đọc cường độ ánh sáng, ánh xạ ngược thành góc từ 180 đến 0, di chuyển tay servo, in ra góc
}
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Đầu ra
5Chuyển động
Di chuyển cánh tay servoQuét servoServo và núm xoayGóc servo từ SerialĐồng hồ đo ánh sáng bằng servoTự luyện tập: Playground Arduino