Garmaine Staff asked 2 years ago

I am also in quarantine like you and I thought to move it a bit with my Arduino.

I would like to create an Arduino program that receives (via serial) only two commands: "1" and "2". Through these commands, I would like Arduino to operate a stepper motor like this:

  • If I write "1" on the serial, the motor must move clockwise
  • If I write "2" on the serial, the motor must move counterclockwise

I have already written a code that only works halfway:

#include <Stepper.h>

const int stepsPerRevolution = 1500;
int incomingByte;
Stepper myStepper(stepsPerRevolution, 11, 9, 10, 8);

void setup() {
  myStepper.setSpeed(20);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial.read();
    Serial.print("I received: ");
    Serial.println(incomingByte);
      if (incomingByte = "1") {
        Serial.println("Moving clockwise...");
        myStepper.step(stepsPerRevolution);
        delay(500);
      }
      if (incomingByte = "2") {
        Serial.println("Moving counterclockwise...");
        myStepper.step(-stepsPerRevolution);
        delay(500);
      }
   }
}

When active, the program waits for the commands on the serial port and manages to read them. The problem is that in both cases (1 and 2) the motor moves first clockwise and then subsequently anticlockwise and it is not the result I would like to achieve.

Can you give me a hand in this endeavor? You would do me a huge favor!