Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #include <DHT.h>
- // определяем пины и константы
- #define DHTPIN A1 // пин для dht11, подключаю датчик температуры и влажности к аналоговому пину A1
- #define DHTTYPE DHT11 // указываю тип датчика DHT, использую dht11
- #define LED_PIN 13 // пин для светодиода, подключаю светодиод к цифровому пину 13
- #define MOVEMENT_SENSOR_PIN 2 // пин для датчика движения, подключаю его к цифровому пину 2
- #define LIGHT_SENSOR_PIN A0 // пин для фоторезистора, подключаю фоторезистор к аналоговому пину A0
- #define MQ135_PIN A2 // пин для mq135, подключаю датчик качества воздуха к аналоговому пину A2
- // инициализация компонентов
- DHT dht(DHTPIN, DHTTYPE); // создаю объект dht для работы с датчиком температуры и влажности
- LiquidCrystal_I2C lcd(0x27, 16, 2); // создаю объект lcd для работы с дисплеем. адрес 0x27 может отличаться, проверяй его
- unsigned long previousMillis = 0; // для хранения времени последней операции. использую для реализации микрозадержек
- const long interval = 2000; // интервал времени между обновлениями данных с датчиков в миллисекундах, выбираю 2 секунды
- void setup() {
- pinMode(LED_PIN, OUTPUT); // настраиваю пин светодиода как выход
- pinMode(MOVEMENT_SENSOR_PIN, INPUT); // настраиваю пин датчика движения как вход
- dht.begin(); // инициализирую датчик DHT11
- lcd.init(); // инициализирую LCD дисплей
- lcd.backlight(); // включаю подсветку дисплея
- }
- void loop() {
- unsigned long currentMillis = millis(); // получаю текущее время в миллисекундах
- // если прошло больше времени, чем заданный интервал, то обновляю данные с датчиков
- if (currentMillis - previousMillis >= interval) {
- previousMillis = currentMillis; // обновляю время последней операции
- float h = dht.readHumidity(); // читаю влажность с DHT11
- float t = dht.readTemperature(); // читаю температуру с DHT11
- int lightLevel = analogRead(LIGHT_SENSOR_PIN); // читаю уровень освещенности с фоторезистора
- int airQuality = analogRead(MQ135_PIN); // читаю уровень качества воздуха с MQ135
- // проверяю наличие движения
- if (digitalRead(MOVEMENT_SENSOR_PIN) == HIGH) {
- digitalWrite(LED_PIN, HIGH); // если движение обнаружено, включаю светодиод
- } else {
- digitalWrite(LED_PIN, LOW); // если движения нет, выключаю светодиод
- }
- // вывод данных на LCD
- lcd.clear(); // очищаю экран перед выводом новых данных
- lcd.setCursor(0, 0); // устанавливаю курсор в начало первой строки
- lcd.print("Temp:"); lcd.print(t); lcd.print("C");
- lcd.setCursor(0, 1); // устанавливаю курсор в начало второй строки
- lcd.print("Hum:"); lcd.print(h); lcd.print("%");
- // здесь можно добавить больше кода для вывода остальных измерений
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement