Advertisement
fuccpuff

Untitled

Mar 26th, 2024
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.94 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <DHT.h>
  4.  
  5. // определяем пины и константы
  6. #define DHTPIN A1 // пин для dht11, подключаю датчик температуры и влажности к аналоговому пину A1
  7. #define DHTTYPE DHT11 // указываю тип датчика DHT, использую dht11
  8. #define LED_PIN 13 // пин для светодиода, подключаю светодиод к цифровому пину 13
  9. #define MOVEMENT_SENSOR_PIN 2 // пин для датчика движения, подключаю его к цифровому пину 2
  10. #define LIGHT_SENSOR_PIN A0 // пин для фоторезистора, подключаю фоторезистор к аналоговому пину A0
  11. #define MQ135_PIN A2 // пин для mq135, подключаю датчик качества воздуха к аналоговому пину A2
  12.  
  13. // инициализация компонентов
  14. DHT dht(DHTPIN, DHTTYPE); // создаю объект dht для работы с датчиком температуры и влажности
  15. LiquidCrystal_I2C lcd(0x27, 16, 2); // создаю объект lcd для работы с дисплеем. адрес 0x27 может отличаться, проверяй его
  16.  
  17. unsigned long previousMillis = 0; // для хранения времени последней операции. использую для реализации микрозадержек
  18. const long interval = 2000; // интервал времени между обновлениями данных с датчиков в миллисекундах, выбираю 2 секунды
  19.  
  20. void setup() {
  21. pinMode(LED_PIN, OUTPUT); // настраиваю пин светодиода как выход
  22. pinMode(MOVEMENT_SENSOR_PIN, INPUT); // настраиваю пин датчика движения как вход
  23. dht.begin(); // инициализирую датчик DHT11
  24. lcd.init(); // инициализирую LCD дисплей
  25. lcd.backlight(); // включаю подсветку дисплея
  26. }
  27.  
  28. void loop() {
  29. unsigned long currentMillis = millis(); // получаю текущее время в миллисекундах
  30.  
  31. // если прошло больше времени, чем заданный интервал, то обновляю данные с датчиков
  32. if (currentMillis - previousMillis >= interval) {
  33. previousMillis = currentMillis; // обновляю время последней операции
  34.  
  35. float h = dht.readHumidity(); // читаю влажность с DHT11
  36. float t = dht.readTemperature(); // читаю температуру с DHT11
  37. int lightLevel = analogRead(LIGHT_SENSOR_PIN); // читаю уровень освещенности с фоторезистора
  38. int airQuality = analogRead(MQ135_PIN); // читаю уровень качества воздуха с MQ135
  39.  
  40. // проверяю наличие движения
  41. if (digitalRead(MOVEMENT_SENSOR_PIN) == HIGH) {
  42. digitalWrite(LED_PIN, HIGH); // если движение обнаружено, включаю светодиод
  43. } else {
  44. digitalWrite(LED_PIN, LOW); // если движения нет, выключаю светодиод
  45. }
  46.  
  47. // вывод данных на LCD
  48. lcd.clear(); // очищаю экран перед выводом новых данных
  49. lcd.setCursor(0, 0); // устанавливаю курсор в начало первой строки
  50. lcd.print("Temp:"); lcd.print(t); lcd.print("C");
  51. lcd.setCursor(0, 1); // устанавливаю курсор в начало второй строки
  52. lcd.print("Hum:"); lcd.print(h); lcd.print("%");
  53.  
  54. // здесь можно добавить больше кода для вывода остальных измерений
  55. }
  56. }
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement