Menu
CoddyTech

Индикатор уровня освещённости

Часть раздела Дисплеи и датчики путешествия по 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() позволяет полосе уменьшаться: без него пиксели, горевшие при ярком свете, останутся гореть, когда стемнеет.

challenge icon

Задание

Средне

Датчик освещённости подключён к 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);
}
quiz iconПроверьте себя

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

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

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