test — ESP32 simulation

test

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by 6830613003.

Components

Sketch code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define SOIL_PIN 34          
#define STATUS_LED_PIN 27    
#define BUZZER_PIN 14        

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() 
{
  Serial.begin(115200);
  pinMode(STATUS_LED_PIN, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  digitalWrite(STATUS_LED_PIN, LOW);
  noTone(BUZZER_PIN);

  Wire.begin(26, 25); 
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Smart Plant Mon");
  lcd.setCursor(0, 1);
  lcd.print("System Initializing");
  delay(2000);
  lcd.clear();
}

void loop() 
{
  int soilValue = analogRead(SOIL_PIN);
  int percentage = map(soilValue, 3449, 24, 0, 100);
  percentage = constrain(percentage, 0, 100);

  Serial.print("Soil ADC Value: ");
  Serial.print(soilValue);
  Serial.print(" | Moisture: ");
  Serial.print(percentage);
  Serial.println(" %");

  if (percentage < 15) 
  {
    Serial.println("Buzzer notify: DRY");
    lcd.setCursor(0, 0);
    lcd.print("Moisture: ");
    lcd.print(percentage);
    lcd.print("%   ");
    lcd.setCursor(0, 1);
    lcd.print("WARNING: TOO DRY!");

    for (int i = 0; i < 5; i++) 
    {
      digitalWrite(STATUS_LED_PIN, HIGH);
      tone(BUZZER_PIN, 1000); 
      delay(200);
      digitalWrite(STATUS_LED_PIN, LOW);
      noTone(BUZZER_PIN);     
      delay(200);
    }
    lcd.setCursor(0, 0);
    lcd.print("Moisture: ");
    lcd.print(percentage);
    lcd.print("%   ");
    lcd.setCursor(0, 1);
    lcd.print("NEED WATER!     ");

    for (int i = 0; i < 5; i++) 
    {
      digitalWrite(STATUS_LED_PIN, HIGH);
      tone(BUZZER_PIN, 1000);
      delay(200);
      digitalWrite(STATUS_LED_PIN, LOW);
      noTone(BUZZER_PIN);
      delay(200);
    }
  } 
  else if (percentage > 90) 
  {
    Serial.println("Buzzer notify: WET");
    lcd.setCursor(0, 0);
    lcd.print("Moisture: ");
    lcd.print(percentage);
    lcd.print("%   ");
    lcd.setCursor(0, 1);
    lcd.print("WARNING: TOO WET!");

    for(int i = 0; i < 2; i++) 
    {
      digitalWrite(STATUS_LED_PIN, HIGH);
      tone(BUZZER_PIN, 500);
      delay(500);
      digitalWrite(STATUS_LED_PIN, LOW);
      noTone(BUZZER_PIN);   
      delay(500);
    }

    lcd.setCursor(0, 0);
    lcd.print("Moisture: ");
    lcd.print(percentage);
    lcd.print("%   ");
    lcd.setCursor(0, 1);
    lcd.print("DRAIN SOIL!     ");

    for (int i = 0; i < 2; i++) {
      digitalWrite(STATUS_LED_PIN, HIGH);
      tone(BUZZER_PIN, 500);
      delay(500);
      digitalWrite(STATUS_LED_PIN, LOW);
      noTone(BUZZER_PIN);
      delay(500);
    }
  } 
  else 
  {
    lcd.setCursor(0, 0);
    lcd.print("Moisture: ");
    lcd.print(percentage);
    lcd.print("%   ");
    lcd.setCursor(0, 1);
    lcd.print("Status: Normal  ");

    digitalWrite(STATUS_LED_PIN, LOW);
    noTone(BUZZER_PIN); 
    delay(500); 
  }
}

More projects by 6830613003