Нам понадобится:
- Arduino х 1шт.
- Trema-модуль цифрового датчика влажности и температуры I2C х 1шт.
- Trema-модуль Четырехразрядный LED индикатор х 1шт.
- Trema Shield х 1шт.
Для реализации проекта нам необходимо установить библиотеки:
- Библиотека iarduino_AM2320 (для работы с датчиком влажности и температуры I2C).
- Библиотека iarduino_4LED (для работы с четырёхразрядным LED индикатором).
- Библиотека Wire входит в стандартный набор IDE Arduino.
О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki - Установка библиотек в Arduino IDE.
Видео:
Схема подключения:
LED индикатор подключается к любым двум выводам Arduino (как цифровым, так и аналоговым), номера указываются в скетче. Trema-модуль цифрового датчика влажности и температуры подключается к аппаратной шине I2C.
В данном уроке, LED индикатор подключён к цифровым выводам 2 и 3.
Алгоритм работы:
- Читаем показания датчика обращаясь к функции read библиотеки iarduino_AM2320 (объект sensor)
- Читаем количество миллисекунд прошедших с момента старта скетча обращаясь к функции millis()
- Обращаясь к функции print библиотеки iarduino_4LED (объект dispLED), поочередно выводим:
- температуру из переменной tem библиотеки iarduino_AM2320 (объект sensor)
- влажность из переменной hum библиотеки iarduino_AM2320 (объект sensor)
- время из переменной j
- Вместо вывода времени прошедшего с момента старта скетча, можно выводить реальную дату и время, используя модуль реального времени, как это сделано в уроке 21.1.
Код программы:
#include <Wire.h> // подключаем библиотеку для работы с шиной I2C #include <iarduino_AM2320.h> // подключаем библиотеку для работы с модулем влажности и температуры AM2320 #include <iarduino_4LED.h> // подключаем библиотеку для работы с четырёхразрядным LED индикатором iarduino_AM2320 sensor; // объявляем объект для работы с функциями библиотеки iarduino_AM2320 iarduino_4LED dispLED(2,3); // объявляем объект для работы с функциями библиотеки iarduino_4LED, с указанием выводов дисплея ( CLK , DIO ) int i=0, j=0, k=5; // объявляем 3 переменные, i показывает какую информацию выводить, j хранит время прошедшее со старта скетча, k длительность отображения информации void setup(){ sensor.begin(); // инициируем работу с модулем AM2320 dispLED.begin(); // инициируем LED дисплей } void loop(){ sensor.read(); // читаем показания датчика j=(uint32_t)millis()/1000%3600; // преобразуем миллисекунды в секунды и получаем остаток от деления на 1 час i++; if(i>=k*3){i=0;} // увеличиваем переменную i на единицу, при каждом проходе цикла loop. Достигнув 3k, сбрасываем значение в 0 if(i< k*1){dispLED.print(sensor.tem,1,TEMP );}else // выводим температуру (1 знак после запятой, с символом градуса) if(i< k*2){dispLED.print(sensor.hum,1,RIGHT);}else // выводим влажность (1 знак после запятой, со сдвигом числа вправо от старшего разряда) if(i< k*3){dispLED.print((j/60),(j%60),TIME); // выводим время, прошедшее со старта скетча (целое число минут, целое число секунд, с двоеточием между ними) dispLED.point(0,(j%2)); } // стираем двоеточие при выводе каждой чётной секунды delay(1000); // приостанавливаем выполнение скетча на 1 секунду }
Обсуждение