Индикатор уровня освещённости
Часть раздела Дисплеи и датчики путешествия по Arduino на Coddy. Урок 22 из 24.
Кольцо может отображать число в виде полосы: чем больше число, тем больше пикселей горит. Здесь число обозначает уровень освещённости.
Как и в уроке о ночнике, показания датчика освещённости на A0 уменьшаются, когда света становится больше. Сначала разверни их, чтобы большее число означало больше света:
int light = 1023 - analogRead(A0);
int count = map(light, 0, 1023, 0, 16);Затем очисти кольцо и зажги пиксели от 0 до count минус 1:
ring.clear();
for (int i = 0; i < count; i++) {
ring.setPixelColor(i, yellow);
}
ring.show();Вызов clear() позволяет полосе уменьшаться: без него пиксели, горевшие при ярком свете, останутся гореть, когда стемнеет.
Задание
СреднеДатчик освещённости подключён к A0, а кольцо — к выводу 6. Сделай световую шкалу:
- инвертируй показание, чтобы при большем количестве света получалось большее число
- преобразуй его в диапазон от 0 до 16 пикселей
- очисти кольцо, зажги нужное количество пикселей, начиная с пикселя 0, и отобрази их
Нажми Run, измени освещённость платы, затем нажми Check.
Попробуйте сами
#include <Adafruit_NeoPixel.h>
// 16 светодиодов, данные передаются через вывод 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); // уменьшается при увеличении освещённости
// чем ярче свет, тем больше светодиодов зажигать
delay(50);
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Дисплеи и датчики
Потренируйтесь самостоятельно: Песочница Arduino