#include <Stepper.h>
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 11, 10, 12);
const int waterSensorPin = A1;
const int threshold = 300;
bool lastWetState = false; // remembers previous state
void setup() {
Serial.begin(9600);
Serial.println("Stepper motor water direction demo starting...");
myStepper.setSpeed(10); // RPM
}
void loop() {
int sensorValue = analogRead(waterSensorPin);
bool isWet = sensorValue > threshold;
Serial.print("Water sensor value: ");
Serial.println(sensorValue);
// ✅ Detect state change
if (isWet != lastWetState) {
unsigned long startTime = millis();
if (isWet) {
Serial.println("Wet detected → Clockwise for 5 seconds");
while (millis() - startTime < 5000) {
myStepper.step(1); // clockwise
}
} else {
Serial.println("Dry detected → Counterclockwise for 5 seconds");
while (millis() - startTime < 5000) {
myStepper.step(-1); // counterclockwise
}
}
Serial.println("Motor stopped.\n");
// ✅ Update last state AFTER motor action
lastWetState = isWet;
}
delay(200); // small delay to reduce sensor noise
}
#include <Stepper.h>
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 11, 10, 12);
const int waterSensorPin = 2; // digital water sensor pin
void setup() {
Serial.begin(9600);
Serial.println("Stepper motor water demo starting...");
pinMode(waterSensorPin, INPUT);
myStepper.setSpeed(10); // RPM
}
void loop() {
int sensorState = digitalRead(waterSensorPin);
if (sensorState == HIGH) { // wet
Serial.println("Sensor wet! Motor spinning for 5 seconds...");
unsigned long startTime = millis();
while (millis() - startTime < 5000) { // spin for 5 seconds
myStepper.step(1); // one step at a time for smooth motion
}
Serial.println("Motor stopped.");
}
else { // dry
Serial.println("Sensor dry. Motor stopped.");
delay(500); // small delay to avoid flooding the serial monitor
}
}
#include <Stepper.h>
const int stepsPerRevolution = 2048;
// IN1, IN3, IN2, IN4
Stepper myStepper(stepsPerRevolution, 8, 11, 10, 12);
void setup() {
Serial.begin(9600);
Serial.println("Stepper motor test starting...");
myStepper.setSpeed(10); // RPM
}
void loop() {
Serial.println("Turning clockwise");
myStepper.step(2048);
delay(1000);
Serial.println("Turning counterclockwise");
myStepper.step(-2048);
delay(1000);
}