#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Initialize the pins
int moisture = A0;
int manual = A2;
int relay = 8;
//Setup
void setup() {
pinMode(relay, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(2, 0);
lcd.print("Initializing");
lcd.setCursor(0, 1);
lcd.print("STYRERIUM MODULE");
Serial.begin(9600);
delay(10000);
}
void loop() {
lcd.clear();
//Convert to percentage
int moistureValue = analogRead(moisture);
int moisturePercent = map(moistureValue, 0, 1023, 100, 0);
int manualValue = analogRead(manual);
int manualPercent = map(manualValue, 0, 1023, 0, 100);
//Relay control
if (moisturePercent < 13 || moisturePercent < manualPercent) {
digitalWrite(relay, HIGH);
} else { //Turn off relay
digitalWrite(relay, LOW);
}
//Displaying the stats
lcd.setCursor(0, 0);
lcd.print("Moisture: ");
lcd.setCursor(12, 0);
lcd.print(moisturePercent);
lcd.print("%");
//Manual watering display
lcd.setCursor(0, 1);
lcd.print("Manual: ");
lcd.setCursor(12, 1);
lcd.print(manualPercent);
lcd.print("%");
delay(100);
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter