В этом уроке вы узнаете, как измерить интенсивность света с помощью аналогового
входа. Вы будете использовать урок 25 и
использовать уровень освещенности, чтобы контролировать количество светодиодов,
которые будут гореть.
В качестве фотоэлемента будем использовать фоторезистор. Как следует из
названия, эти компоненты действуют точно так же, как резистор, за исключением
того, что сопротивление изменяется в ответ на то, сколько света падает на них.
Этот имеет сопротивление около 50 ком в почти полной темноте и 500 Ом при ярком
свете. Чтобы преобразовать это изменяющееся значение сопротивления во что-то,
что мы можем подать на Аналоговый вход платы MEGA2560 R3, он должен быть
преобразован в напряжение. Самый простой способ сделать это - объединить его с
фиксированным резистором.
После подключения, пожалуйста, откройте программу в папке с кодом
Урок 26 и нажмите кнопку Загрузить, чтобы загрузить
программу. См. Урок 2 для
получения подробной информации о загрузке программы при наличии ошибок.
Первое, что следует отметить, это то, что мы изменили название аналогового
пина на"lightPin", а не "potPin", поскольку у нас больше нет подключенного
переменного резистора. Единственное другое существенное изменение в эскизе -
это строка, которая вычисляет, сколько светодиодов нужно зажечь:
int numLEDSLit = reading / 57; // all LEDs lit at 1kНа этот раз мы делим исходное значение на 57, а не на 114. Другими словами, мы делим его наполовину так же, как мы сделали с переменным резистором, чтобы разделить его на девять зон. Этот дополнительный фактор должен учитывать фиксированный резистор 1 ком. Это означает, что когда фотоэлемент имеет сопротивление 1 ком (такое же, как и фиксированный резистор), исходное значение будет равно 1023/2 = 511. Это будет приравниваться ко всем горящим светодиодам, а затем бит (numLEDSLit) будет равен 8.