#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Servo Motor
Servo rackServo;
#define SERVOPIN PA8
// Analog Pins
#define HUMIDITYPIN PA0
#define RAINPIN PA1
// Thresholds (percentage → analog)
const int humidityThreshold = 818; // 80% of 1023
const int rainThreshold = 512; // 50% of 1023
// LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
rackServo.attach(SERVOPIN);
lcd.begin(16, 2);
lcd.backlight();
}
void loop() {
int humidityValue = analogRead(HUMIDITYPIN); // 0–1023
int rainValue = analogRead(RAINPIN); // 0–1023
// Print to Serial
Serial.print("Humidity: ");
Serial.print(humidityValue);
Serial.print(" | Rain sensor: ");
Serial.println(rainValue);
// LCD display
lcd.setCursor(0, 0);
lcd.print("Hum: ");
lcd.print(humidityValue);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("Rain: ");
lcd.print(rainValue);
lcd.print(" ");
// Folding condition
if (humidityValue > humidityThreshold || rainValue > rainThreshold) {
rackServo.write(0); // Fold rack
} else {
rackServo.write(90); // Unfold rack
}
delay(2000);
}
Loading
stm32-bluepill
stm32-bluepill