Измеритель освещённости
Часть раздела Входные сигналы путешествия по Arduino на Coddy. Урок 22 из 22.
В этом уроке мы объединяем всё в одну схему: измеритель освещённости, который выводит уровень света в процентах и отображает его на полоске из трёх светодиодов, как индикатор уровня сигнала на телефоне.
Разбей задачу на функции, каждая из которых выполняет одну задачу, чтобы loop() читалась как описание:
void loop() {
int percent = lightPercent();
showLevel(percent);
// вывести процент
}lightPercent() считывает показания с модуля освещённости через AO и возвращает значение от 0 (темно) до 100 (светло). Значение AO уменьшается при усилении освещения, поэтому выполняй обратное преобразование: map(reading, 0, 1023, 100, 0) преобразует 1023 в 0, а 0 — в 100.
showLevel(int percent) задаёт для каждого светодиода индикатора свой порог: первый загорается при значении выше 25, второй — выше 50, третий — выше 75. Для каждого нужен свой else, чтобы индикатор снова уменьшался, когда свет тускнеет.
Задание
СреднеВывод AO модуля освещённости подключён к A0, а светодиоды шкалы — к контактам 10, 11 и 12:
int lightPercent(): 0 в темноте, 100 при ярком светеvoid showLevel(int percent): контакт 10 загорается при значении выше 25, контакт 11 — выше 50, контакт 12 — выше 75- в
loop()вызови обе функции, выведи процент и подожди 200 мс
Нажми Run, передвинь ползунок освещённости, затем нажми Check.
Попробуйте сами
const int lowPin = 10;
const int midPin = 11;
const int highPin = 12;
// напишите здесь int lightPercent()
// напишите здесь void showLevel(int percent)
void setup() {
pinMode(lowPin, OUTPUT);
pinMode(midPin, OUTPUT);
pinMode(highPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// считайте уровень освещённости в процентах, отобразите его на индикаторе, выведите его, подождите 200 ms
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Входные сигналы
Потренируйтесь самостоятельно: Песочница Arduino