Метеостанция с дисплеем
Проекты на Arduino Uno и Slot Shield
Метеостанция должна не только измерять температуру воздуха и относительную влажность, но и выводить результаты измерений на экран. Самый простой вариант — использовать четырёхразрядный индикатор Quad Display.
Управляющая плата в метеостанции это оригинальная Arduino Uno. За температуру и влажность отвечает цифровой метеосенсор.
- Язык программирования: Arduino (C++)
Что потребуется
Полный сет компонентов проекта. В сет входят:
- цифровой метеодатчик
- четырёхразряный индикатор Quad Display
Видеоинструкция
Как собрать
Установите Troyka Slot Shield на Arduino Uno
Подключите метеодатчик к пинам I²C разъёма A
.
Вставьте Quad Display в разъёмы E
и F
. Пин CS
подключите к 10
пину Arduino.
Скетч
Прошейте контроллер скетчем через Arduino IDE.
- weather-station-display.ino
// библиотека для работы I²C #include <Wire.h> // библиотека для работы с метеосенсором #include <TroykaMeteoSensor.h> // Подключаем библиотеку для работы с дисплеем #include <QuadDisplay2.h> // создаём объект для работы с метеосенсором TroykaMeteoSensor meteoSensor; // создаём объект класса QuadDisplay и передаём номер пина CS QuadDisplay qd(10); // создаем объект класса long для хранения счетчиков unsigned long respite_Time = 0; unsigned long respite_Meteo = 0; // создаем объект для регулировки времени показа значений на экране int slowdown_qd = 1000; void setup() { // инициализация дисплея qd.begin(); // инициализируем метеосенсор meteoSensor.begin(); } void loop() { // запускаем бесконечный счетчик. Его содержимое будет обрабатываться каждые 1000 миллисекунд if (millis() - respite_Time > slowdown_qd) { // запускаем функции вывода температуры и влажности по очереди if (millis() - respite_Meteo < 2 * slowdown_qd) { showTemperatureC(); } else if (millis() - respite_Meteo < 3 * slowdown_qd ) { showHumidity(); } // гасим экран и обнуляем цикл else if (millis() - respite_Meteo < 4 * slowdown_qd ) { qd.displayDigits(QD_NONE, QD_NONE, QD_NONE, QD_NONE); respite_Meteo = millis(); } respite_Time = millis(); } } // функция работы датчика температуры void showTemperatureC() { // считываем данные с датчика int stateSensor = meteoSensor.read(); // проверяем состояние данных switch (stateSensor) { // выводим показания температуры на дисплей case SHT_OK: qd.displayTemperatureC(meteoSensor.getTemperatureC()); break; // выводим сообщение "Errd", если ошибка данных или сенсор не подключён case SHT_ERROR_DATA: qd.displayDigits(QD_E, QD_r, QD_r, QD_d); // выводим сообщение "ErrC", если ошибка контрольной суммы case SHT_ERROR_CHECKSUM: qd.displayDigits(QD_E, QD_r, QD_r, QD_C); break; } } // функция работы датчика влажности void showHumidity() { // считываем данные с датчика int stateSensor = meteoSensor.read(); // проверяем состояние данных switch (stateSensor) { // выводим показания влажности на дисплей case SHT_OK: qd.displayHumidity(meteoSensor.getHumidity()); break; // выводим сообщение "Errd", если ошибка данных или сенсор не подключён case SHT_ERROR_DATA: qd.displayDigits(QD_E, QD_r, QD_r, QD_d); // выводим сообщение "ErrC", если ошибка контрольной суммы case SHT_ERROR_CHECKSUM: qd.displayDigits(QD_E, QD_r, QD_r, QD_C); break; } }
Часто задаваемые вопросы
Где скачать необходимые библиотеки и как их установить?
У моего модуля QuadDisplay всего три ноги и расположены они слева. Можно ли использовать его в этом проекте?
У вас предыдущая версия модуля. Она снята с производства пару лет назад. С этим скетчем, библиотекой и схемой сборки модуль работать не будет.