Độ sáng NeoPixel
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 16 trên 24.
NeoPixel phát sáng rực rỡ. ring.setBrightness(level) giảm độ sáng của tất cả cùng lúc: 0 là tắt, 255 là độ sáng tối đa.
Cách hoạt động là điều chỉnh tỷ lệ màu được lưu trong bộ nhớ của bo mạch. Ở độ sáng 64, tức khoảng một phần tư, màu đỏ có giá trị 255 sẽ được lưu thành 64. Có một điều cần lưu ý: việc điều chỉnh tỷ lệ làm mất chi tiết. Giảm độ sáng xuống 0 thì mọi màu được lưu đều trở thành 0, nên khi tăng độ sáng trở lại, không còn gì để điều chỉnh tỷ lệ và vòng đèn vẫn tối.
Vì vậy, mỗi khi độ sáng thay đổi, hãy đặt lại màu sau đó:
ring.setBrightness(level);
ring.fill(white); // lưu ở mức độ sáng mới
ring.show();Màu được đặt sau setBrightness() sẽ được điều chỉnh tỷ lệ khi lưu.
Thử thách
Trung bìnhNúm xoay nối với A0 dùng để điều chỉnh độ sáng của vòng đèn:
- chuyển giá trị đọc được thành độ sáng từ 0 đến 255 bằng
map() - đặt độ sáng bằng
ring.setBrightness() - sau đó tô trắng vòng đèn và hiển thị màu đó trong mỗi lần chạy
loop()
Nhấn Chạy rồi xoay núm, sau đó nhấn Kiểm tra.
Tự làm thử
#include <Adafruit_NeoPixel.h>
// 16 điểm ảnh, dữ liệu truyền qua chân 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);
uint32_t white = ring.Color(255, 255, 255);
void setup() {
ring.begin();
}
void loop() {
int reading = analogRead(A0);
// Đặt độ sáng theo núm xoay, rồi cho cả vòng sáng màu trắng
delay(50);
}
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