final projects

Maksym Kukharenko and Jake Gelb

cover for the shoe

Maksym Kukharenko and Jake Gelb

tinker unit

Jake Gelb and Maksym Kukharenko
Brave Rottis.stl
Brave Rottis (1).stl

final code

Maksym Kukharenko and Jake Gelb

#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

}

almost final code improved

Maksym Kukharenko and Jake Gelb
#include <Stepper.h>
const int stepsPerRevolution = 2048;Stepper myStepper(stepsPerRevolution, 8111012);
const int waterSensorPin = A1;   // analog water sensor pinconst int threshold = 300;
void setup() {  Serial.begin(9600);  Serial.println("Stepper motor water direction demo starting...");
  myStepper.setSpeed(10); // RPM}
void loop() {  int sensorValue = analogRead(waterSensorPin);
  Serial.print("Water sensor value: ");  Serial.println(sensorValue);
  unsigned long startTime = millis();
  if (sensorValue > threshold) {    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");  delay(1000); // pause before next reading}

almost final code

Maksym Kukharenko and Jake Gelb

#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

  }

}



almost final

Maksym Kukharenko and Jake Gelb

third code

Maksym Kukharenko and Jake Gelb

#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);

}



Mini Aurdino setup

Maksym Kukharenko and Jake Gelb

Actual thing

Maksym Kukharenko and Jake Gelb