Menu
CoddyTech

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

challenge icon

Thử thách

Trung bình

AO 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
}
quiz iconTự kiểm tra

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

Tự luyện tập: Playground Arduino