Menu
CoddyTech

Máy đo ánh sáng

Thuộc phần Đầu vào trong hành trình Arduino của Coddy. Bài học 22 trên 22.

Bài học này ghép các phần lại với nhau: một thiết bị đo ánh sáng, in ra mức ánh sáng theo phần trăm và hiển thị mức đó trên một thanh gồm ba đèn LED, giống như các vạch tín hiệu trên điện thoại.

Chia công việc thành các hàm (function), mỗi hàm đảm nhận một nhiệm vụ, để loop() trông như một bản mô tả:

void loop() {
  int percent = lightPercent();
  showLevel(percent);
  // in ra phần trăm
}

lightPercent() đọc AO của mô-đun ánh sáng và trả về giá trị từ 0 (tối) đến 100 (sáng). Giá trị AO giảm khi ánh sáng tăng, vì vậy hãy ánh xạ theo chiều ngược lại: map(reading, 0, 1023, 100, 0) chuyển 1023 thành 0 và 0 thành 100.

showLevel(int percent) đặt ngưỡng riêng cho mỗi đèn LED trên thanh: đèn thứ nhất sáng khi mức vượt quá 25, đèn thứ hai khi vượt quá 50, đèn thứ ba khi vượt quá 75. Mỗi đèn cần có else riêng để thanh có thể thu nhỏ lại khi ánh sáng yếu đi.

challenge icon

Thử thách

Trung bình

Chân AO của mô-đun cảm biến ánh sáng nối với A0, còn các đèn LED trên thanh nối với chân 10, 11 và 12:

  • int lightPercent(): 0 khi trời tối, 100 khi ánh sáng mạnh
  • void showLevel(int percent): chân 10 sáng khi giá trị trên 25, chân 11 sáng khi giá trị trên 50, chân 12 sáng khi giá trị trên 75
  • trong loop(), gọi cả hai hàm, in ra phần trăm và chờ 200 ms

Nhấn Chạy, di chuyển thanh trượt ánh sáng, rồi nhấn Kiểm tra.

Tự làm thử

const int lowPin = 10;
const int midPin = 11;
const int highPin = 12;

// viết hàm (function) int lightPercent() ở đây

// viết hàm void showLevel(int percent) ở đây

void setup() {
  pinMode(lowPin, OUTPUT);
  pinMode(midPin, OUTPUT);
  pinMode(highPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // đọc mức ánh sáng theo phần trăm, hiển thị trên thanh, in ra, rồi đợi 200 ms
}
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 vào

Tự luyện tập: Playground Arduino