Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* подключение библиотек */
- #include <MQ2.h> // подключение библиотеки для датчика газов
- #include <TroykaDHT.h> // подключение библиотеки для датчика температуры и влажности
- #include <Wire.h> // подключение библиотеки для обмена данными по i2c
- #include <LiquidCrystal_I2C.h> // подключение библиотеки для ЖК-экрана 20х4 i2c
- /* объявление переменных */
- #define motionPin 12 // объявление переменной, где указано куда подключен датчик движения
- #define gasPin A0 // объявление переменной, где указано куда подключен датчик углекислого газа
- #define dhtPin 4 // объявление переменной, где указано куда подключен датчик температуры и влажности
- #define intervalGetData 2000 // объявление переменной, которая указывает интервал измерений в МС (1000 мс = 1 секунда)
- #define minimalValueGas 220 // объявление переменной, которое указывает минимальное значение газов
- #define maximumValueGas 900 // объявление переменной, которое указывает максимальное значение газов
- unsigned long millis_int = 0; // объявление переменной для интервала измерений
- /* объявление классов */
- LiquidCrystal_I2C lcd(0x27, 20, 4); // объявление класса ЖК экрана
- DHT dht(dhtPin, DHT11); // объявление класса датчика температуры и влажности DHT11
- MQ2 mq2(gasPin); // объявление класса датчика углекислого газа
- /* процедура настройки */
- void setup() {
- pinMode(motionPin, INPUT); // указываем, что будем считывать показания с датчика движения
- Serial.begin(9600); // открываем последовательный порт для мониторинга действий в программе
- dht.begin(); // запускаем датчик температуры и влажности
- mq2.begin(); // запускаем датчик углекислого газа
- lcd.init(); // инициализируем дисплей
- lcd.backlight(); // включаем подсветку на экране
- lcd.setCursor(0, 0); // устанавливаем курсор на дисплее на 0 строку и 0 столбец
- lcd.print("Temperature:"); // выводим в первую строку слово "Temperature"
- lcd.setCursor(0, 1); // устанавливаем курсор на дисплее на 1 строку и 0 столбец
- lcd.print("Humidity:"); // выводим во вторую строку слово "Humidity"
- lcd.setCursor(0, 2); // устанавливаем курсор на дисплее на 2 строку и 0 столбец
- lcd.print("Motion:"); // выводим в третью строку слово "Motion"
- lcd.setCursor(0, 3); // устанавливаем курсор на дисплее на 3 строку и 0 столбец
- lcd.print("Gas:"); // выводим в третью строку слово "Gas"
- }
- /* цикл */
- void loop() {
- /* вывод температуры на экран */
- if (millis() - millis_int >= intervalGetData) {
- float temp = getDataTemperature(); // получение данных с датчика температуры
- lcd.setCursor(12, 0); // устанавливаем курсор на 12 столбец в 0 строке
- lcd.print(temp); // выводим температуру на дисплей
- millis_int = millis(); // старт интервала отсчета
- }
- /* вывод влажности на экран */
- if (millis() - millis_int >= intervalGetData) {
- float hum = getDataHumidity(); // получение данных с датчика влажности
- lcd.setCursor(9, 1); // устанавливаем курсор на 9 столбец в 2 строке
- lcd.print(hum); // выводим влажность на дисплей
- millis_int = millis(); // старт интервала отсчета
- }
- /* вывод данных с датчика движения на экран */
- if (millis() - millis_int >= intervalGetData) {
- float mot = getDataMotion(); // получение данных с датчика движения
- lcd.setCursor(7, 2); // устанавливаем курсор на 7 столбец в 3 строке
- lcd.print(mot); // выводим движение на дисплей
- millis_int = millis(); // старт интервала отсчета
- }
- /* вывод данных с датчика газов на экран */
- if (millis() - millis_int >= intervalGetData) {
- float gasV = getDataGas(); // получение данных с датчика движения
- lcd.setCursor(4, 3); // устанавливаем курсор на 4 столбец в 4 строке
- lcd.print(gasV); // выводим значение на дисплей
- millis_int = millis(); // старт интервала отсчета
- }
- }
- /* функция для получения температуры */
- float getDataTemperature() {
- float temperature = dht.getTemperatureC(); // создание переменной для получения температуры
- return (float)temperature; // возврат значения в функцию
- }
- /* функция для получения влажности */
- float getDataHumidity() {
- float humidity = dht.getHumidity(); // создание переменной для получения влажности
- return (float)humidity; // возврат значения в функцию
- }
- /* функция для считывания данных с датчика движения */
- float getDataMotion() {
- float motion = digitalRead(motionPin); // создание переменной для получения данных с датчика движения
- return (int)motion; // возврат значения в функцию
- }
- /* функция для считывания данных с датчика углекислого газа и преобразования в проценты */
- float getDataGas() {
- int value = mq2.readCO(); // создание переменной для получения значения газов
- value = constrain(value, minimalValueGas, maximumValueGas); // масштабируем полученое значение в проценты
- int gasValue = map(value, minimalValueGas, maximumValueGas, 100, 0); // масштабируем полученое значение в проценты
- return (float)gasValue; // возврат значения в функцию
- }
Add Comment
Please, Sign In to add comment