Menu
CoddyTech

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

challenge icon

Thử thách

Trung bình

Nú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);
}
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