Однако, постойте. Имеет ли это смысл? Ведь даже самое небольшое повышение температуры, воспринимаемое терморезистором, будет включать светодиод, а незначительное понижение будет выключать его. Система будет все время включаться и выключаться.
Обычный термостат не реагирует на небольшие изменения температуры, когда кто-то открывает или закрывает дверь. Когда он включается, он остается включенным до тех пор, пока температура не станет чуть выше установленного значения. Затем, когда он прекращает нагрев, он остается выключенным, пока температура не опустится немного ниже указанного значения.
Такое поведение называется
Как мы можем реализовать гистерезис в программе для микроконтроллера? Нам необходим более широкий диапазон значений, чем числа от 469 до 471. Программа могла бы описывать следующее: «Если светодиод включен, пусть он остается в этом состоянии, пока значение температуры не превысит 490. Затем его следует выключить». А также: «Если светодиод выключен, пусть он будет в таком состоянии, пока значение температуры не упадет ниже 460. Затем его надо включить».
Сможем ли мы это сделать? Да, очень легко. Программа, представленная в листинге 5.1, функционирует именно так. Протестировав эту программу, я сделал снимок экрана в среде Arduino IDE, и поэтому у меня есть веские основания полагать, что она работает.
Листинг 5.1
Листинг 5.1
Эта программа содержит также некоторые новые понятия – но для начала введите ее в среду IDE. Не обязательно включать все строки комментариев, которые я добавил только для пояснения.
В более коротком варианте программы (листинг 5.2) строки комментариев опущены.
Листинг 5.2
Листинг 5.2
Выполните проверку/компиляцию вашей программы и при необходимости исправьте опечатки (возможно, вы где-либо пропустили точку с запятой – это самая распространенная ошибка).
Подключите плату Arduino, загрузите программу, и если температура вашего терморезистора ниже 30 °C, должен зажечься желтый светодиод.