Что бы человек ни начинал делать на Arduino, всё равно в конце концов получается погодная станция. |
Народная мудрость. |
Предыстория:
( Давным-давно, в далёкой-далёкой галактике… )Большинство дешёвых гигрометров крайне плохо измеряют влажность, если она вне диапазона 20—80%. Я посмотрел на те гигрометры, что достаточно хороши технически, оценил их дизайн и сказал, что буду делать погодную станцию сам. Попутно научусь работе с сенсорами и с часами.
( Технические подробности (можно безболезненно пропустить) )Поскольку я всё-таки системный программист, я подошёл к вопросу с поистине системным размахом:
( Два скриншота )Получение данных с сенсоров и выведение их на экран не составили вообще никакой проблемы. А вот с кнопками и с выставлением времени пришлось подумать. Для начала, я познакомился с таким замечательным явлением, как дребезг контактов. Потом пришлось научиться отличать короткое нажатие от долгого, а это означает работу с прерываниями таймера. Потом — научиться воспринимать удерживаемую кнопку, как многократно нажимаемую, что, в принципе, решается
поллингом. И вот сегодня я наконец добился того, чтобы все кнопки нормально воспринимались, чтобы кнопка Set поначалу реагировала только на долгое нажатие, и только потом на короткие, а кнопки Plus и Minus делали разные вещи в зависимости от того, удерживалась ли кнопка Set до их нажатия чётное или нечётное количество раз.
Осталось скомпоновать конечный автомат, прописать работу с часами, структурировать код, отладить всё это счастье (вот тут, например, человек жалуется на то, что DS1307 завешивает ему микроконтроллер, — надо будет принять меры заранее), добавить пару потенциометров на яркость и на контрастность подсветки экранчика, — и можно будет запиливать коробочку для корпуса.