Адаптивная система освещения
В данном уроке вы научитесь использовать циклы с условиями, узнаете какие типы сигналов существуют и в чем их различия, научитесь использовать фоторезистор.
Цикл while
while(условие == истина) { //выполняемые операторы }
Цикл while называется циклом с условием. Пока условие в скобках истинно, операторы внутри скобок будут циклично выполняться. Важно! Программа не будет выполняться дальше, пока условие не станет ложным.

Цифровой сигнал - это такой тип сигнала, который может принимать только фиксированные значения. В нашем случае это значения 5В (HIGH или логическая 1), а также 0В (LOW, или логический 0).
Контроллер распознаёт в качестве логической единицы сигнал с напряжением в диапазоне от 3 до 5.5В. А в качестве логического нуля - сигнал с напряжением в диапазоне от 0 до 2 В. При использовании функции digitalRead() во время работы с сигналом в диапазоне от 2В до 3В вы можете получить непредсказуемое значение.

Аналоговый сигнал - такой тип сигнала, который может принимать любые значения (не только 0 и 1).


Обратите внимание: все сигналы в природе являются аналоговыми

analogRead() - функция, считывающая значение на аналоговом пине. Функция преобразует напряжение на пине в цифровое значение в диапазоне от 0 до 1023 (при том, значению 1023 соответствует напряжение 5В на аналоговом пине).

ШИМ (широтно-импульсная модуляция) - метод, используемый микроконтроллером для имитации аналогового сигнала. Как мы помним, контроллеры умеют работать только с цифровым сигналом.

Изменяя шрину импульсов цифрового сигнала, контроллер создаёт иллюзию аналогового сигнала. При помощи этого метода можно управлять работой аналоговых устройств (яркостью светодиодов, скоростью моторов и др

analogWrite(номерПина,значение) - команда отправляющая ШИМ-сигнал на указанный пин. Обратите внимание, хоть в имени команды фигурирует слово analog, данная команда применяется к цифровому пину обозначенному символом ~

Задание. Создайте устройство, изменяющее яркость светодиодной подсветки в зависимости от уровня внешней освещенности. Для получения данных об уровне освещенности, используйте фоторезистор.

Соберите электрическую схему устройства: светодиод подключается через резистор к ШИМ-пину. Из фоторезистора и резистора с сопротивлением до 5 КОм формируем «подстроечный» резистор, который будет реагировать на уровень освещенности. Подключаем эту сборку к аналоговому входу А0.

Рассмотрим некоторые элементы кода программы:
в переменную sensor записываются данные с аналогового порта. Экспериментально мы выяснили что при использовании резистора с номиналом 5 КОм, значения на аналоговом входе при максимальном и минимальном уровне освещенности изменяются в диапазоне от 28 до 929.

Логика работы устройства следующая: чем выше уровень освещенности, тем ярче должен включаться светодиод. Соответственно, нам необходимо «перевернуть» значение, полученное после использования команды analogRead().

Для этого, мы отнимаем от максимально возможного значения (929) значение полученное с датчика в конкретный момент времени (переменная sensor).

Как вы помните, команда analogWrite() использует значение аргумента для ШИМ в диапазоне от 0 до 255. Для того чтобы перевести значение в диапазоне от 0 до 929 к диапазону 0-255, мы разделим это самое значение на 4 и сохраним его в переменную PWM.

Таким образом, если уровень освещенности максимален. значение переменной sensor равно 929, а зачение переменной PWM = (929-929)/4 = 0. Светодиод отключен. Когда уровень освещенности минимален: PWM=(929-28)/4 = 225, светодиод горит.
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website