Controlling a stepper motor using some serial command

Hi, 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!

stepper_oneRevolution.ino (723 Bytes)

Tests such as IF must use == rather than =

Also single characters are identified with single quotes

Change this

if (incomingByte = "1")

to

if (incomingByte == '1')

...R
Serial Input Basics - simple reliable non-blocking ways to receive data.
Stepper Motor Basics
Simple Stepper Code