Menu
CoddyTech

Яркость NeoPixel

Часть раздела Дисплеи и датчики путешествия по Arduino на Coddy. Урок 16 из 24.

NeoPixel очень яркие. ring.setBrightness(level) одновременно уменьшает яркость всех светодиодов: 0 — выключены, 255 — максимальная яркость.

Это работает за счёт масштабирования цветов, сохранённых в памяти платы. При яркости 64, то есть примерно на четверть, красный цвет со значением 255 сохраняется как 64. Но есть подвох: при масштабировании теряются детали. Уменьшите яркость до 0 — и каждый сохранённый цвет станет равен 0, поэтому при увеличении яркости больше нечего масштабировать, и кольцо останется тёмным.

Поэтому при каждом изменении яркости задавайте цвета заново после него:

ring.setBrightness(level);
ring.fill(white);   // сохранено с новым уровнем яркости
ring.show();

Цвета, заданные после setBrightness(), масштабируются при сохранении.

challenge icon

Задание

Средне

Регулятор на A0 управляет яркостью кольца:

  • преобразуй показание в яркость от 0 до 255 с помощью map()
  • установи её с помощью ring.setBrightness()
  • затем заполни кольцо белым цветом и отобрази его при каждом проходе loop()

Нажми Run и поверни регулятор, затем нажми Check.

Попробуйте сами

#include <Adafruit_NeoPixel.h>

// 16 светодиодов, данные на выводе 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);
  // установить яркость с помощью ручки, затем зажечь всё кольцо белым светом
  delay(50);
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Дисплеи и датчики

Потренируйтесь самостоятельно: Песочница Arduino