Menu
CoddyTech

Thanh mức ánh sáng

Thuộc phần Màn hình và cảm biến trong hành trình Arduino của Coddy. Bài học 22 trên 24.

Vòng đèn có thể hiển thị một con số dưới dạng thanh: con số càng lớn thì càng có nhiều điểm ảnh sáng. Ở đây, con số biểu thị mức độ ánh sáng.

Giống như trong bài học về đèn ngủ, số đo của cảm biến ánh sáng trên A0 giảm khi ánh sáng tăng. Đảo chiều trước để con số lớn hơn biểu thị nhiều ánh sáng hơn:

int light = 1023 - analogRead(A0);
int count = map(light, 0, 1023, 0, 16);

Sau đó xóa vòng đèn rồi bật sáng các điểm ảnh từ 0 đến count trừ 1:

ring.clear();
for (int i = 0; i < count; i++) {
  ring.setPixelColor(i, yellow);
}
ring.show();

clear() giúp thanh thu nhỏ lại: nếu không có lệnh này, các điểm ảnh sáng khi trời sáng sẽ vẫn sáng khi trời tối.

challenge icon

Thử thách

Trung bình

Cảm biến ánh sáng nối với A0, còn vòng đèn nối với chân 6. Tạo một thanh hiển thị ánh sáng:

  • đảo chiều số đọc để ánh sáng càng mạnh thì số càng lớn
  • ánh xạ số đó vào khoảng từ 0 đến 16 pixel
  • xóa vòng đèn, bật số pixel tương ứng tính từ pixel 0 rồi hiển thị

Nhấn Chạy, thay đổi ánh sáng trên bo mạch, rồi nhấn Kiểm tra.

Tự làm thử

#include <Adafruit_NeoPixel.h>

// 16 pixel, dữ liệu truyền qua chân 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);

uint32_t yellow = ring.Color(255, 160, 0);

void setup() {
  ring.begin();
}

void loop() {
  int reading = analogRead(A0);  // giảm khi ánh sáng tăng
  // ánh sáng càng mạnh thì bật sáng càng nhiều pixel
  delay(50);
}
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 Màn hình và cảm biến

Tự luyện tập: Playground Arduino