Мониторинг за влажностью почвы цветка в горшке с помощью емкостного датчика влажности и ардуино уно с выводом данных на дисплей ssd1306

Пример кода для мониторинга влажности почвы в горшке с использованием емкостного датчика влажности и дисплея SSD1306 на Arduino Uno:

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// Пин для емкостного датчика влажности
#define MOISTURE_SENSOR_PIN A0

// Пины для I2C-шин
#define SDA_PIN A4
#define SCL_PIN A5

// Создаем объект дисплея SSD1306
Adafruit_SSD1306 display(128, 64, &Wire);

// Интервал времени между считываниями данных с датчика (в миллисекундах)
#define READ_INTERVAL 600000

void setup() {
  // Инициализируем серийный порт
  Serial.begin(9600);

  // Инициализируем I2C-шину
  Wire.begin(SDA_PIN, SCL_PIN);

  // Инициализируем дисплей SSD1306
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();

  // Устанавливаем опорное напряжение для аналогового входа на 1.1 В
  analogReference(INTERNAL);

  // Ждем, пока емкостной датчик влажности не стабилизируется
  delay(1000);
}

void loop() {
  // Считываем уровень влажности с емкостного датчика
  int moisture_level = analogRead(MOISTURE_SENSOR_PIN);

  // Конвертируем уровень влажности в проценты (от 0 до 100%)
  int moisture_percent = map(moisture_level, 1023, 300, 0, 100);
  if (moisture_percent > 100) {
    moisture_percent = 100;
  } else if (moisture_percent < 0) {
    moisture_percent = 0;
  }

  // Выводим уровень влажности на серийный порт
  Serial.print("Уровень влажности: ");
  Serial.print(moisture_percent);
  Serial.println("%");

  // Отображаем уровень влажности на дисплее SSD1306
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 0);
  display.print("Влажность:");
  display.setCursor(80, 0);
  display.print(moisture_percent);
  display.print("%");
  display.display();

  // Ждем заданный интервал времени
  delay(READ_INTERVAL);
}

Этот код использует библиотеку Adafruit_SSD1306 для управления дисплеем SSD1306 через I2C-шину. Кроме того, используется аналоговый вход A0 для чтения уровня влажности с емкостного датчика.

В функции setup() происходит инициализация серийного порта, I2C-шин и аналогового входа A0. Также инициализируется дисплей SSD1306 .

В функции loop() происходит чтение уровня влажности с емкостного датчика с помощью функции analogRead(). Затем значение уровня влажности конвертируется в проценты и выводится на серийный порт.

Оставьте комментарий