SIK Motor Basics strange issue with serial monitor

I’m working the 5A Motor Basics in the SIK. It doesn’t always work correctly. Specifically, it will work as expected (at least how I understand) when I open the Serial Plotter, but not when I open the Serial Monitor. This is with SIK 4.1 and Arduin0 1.8.13. I compared the code with I have (pasted below) with that on github and it looks the same. It is odd that it works with the plotter but not the monitor. when i open the monitor and type 99, the motor runs for .5 sec and then shuts off again. the serial monitor shows the motor speed being set to 0 ( i guess after every loop). But the motor stays on when using the plotter instead of the monitor. The switch works as expected in that the motor stops/starts based on the position.

can anyone identify the issue ? Thanks

Dominik

/*
  SparkFun Inventor’s Kit
  Circuit 5A - Motor Basics

  Learn how to control one motor with the motor driver.

  This sketch was written by SparkFun Electronics, with lots of help from the Arduino community.
  This code is completely free for any use.

  View circuit diagram and instructions at: https://learn.sparkfun.com/tutorials/sparkfun-inventors-kit-experiment-guide---v41
  Download drawings and code at: https://github.com/sparkfun/SIK-Guide-Code
*/

//PIN VARIABLES
//the motor will be controlled by the motor A pins on the motor driver
const int AIN1 = 13;           //control pin 1 on the motor driver for the right motor
const int AIN2 = 12;            //control pin 2 on the motor driver for the right motor
const int PWMA = 11;            //speed control pin on the motor driver for the right motor

int switchPin = 7;             //switch to turn the robot on and off

//VARIABLES
int motorSpeed = 0;       //starting speed for the motor
bool input = false;

void setup() {
  pinMode(switchPin, INPUT_PULLUP);   //set this as a pullup to sense whether the switch is flipped

  //set the motor control pins as outputs
  pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT);
  pinMode(PWMA, OUTPUT);

  Serial.begin(9600);                       //begin serial communication with the computer

  Serial.println("Enter motor speed (0-255)... ");    //Prompt to get input in the serial monitor.
}

void loop() {
//  Serial.println(Serial.available());

  if (Serial.available() > 0) {         //if the user has entered something in the serial monitor
    motorSpeed = Serial.parseInt();     //set the motor speed equal to the number in the serial message

    Serial.print("Motor Speed: ");      //print the speed that the motor is set to run at
    Serial.println(motorSpeed);
  }

  if (digitalRead(7) == LOW) {          //if the switch is on...
    spinMotor(motorSpeed);
  } else {                              //if the switch is off...
    spinMotor(0);                   //turn the motor off
  }


}

/********************************************************************************/
void spinMotor(int motorSpeed)                       //function for driving the right motor
{
  if (motorSpeed > 0)                                 //if the motor should drive forward (positive speed)
  {
    digitalWrite(AIN1, HIGH);                         //set pin 1 to high
    digitalWrite(AIN2, LOW);                          //set pin 2 to low
  }
  else if (motorSpeed < 0)                            //if the motor should drive backward (negative speed)
  {
    digitalWrite(AIN1, LOW);                          //set pin 1 to low
    digitalWrite(AIN2, HIGH);                         //set pin 2 to high
  }
  else                                                //if the motor should stop
  {
    digitalWrite(AIN1, LOW);                          //set pin 1 to low
    digitalWrite(AIN2, LOW);                          //set pin 2 to low
  }
  analogWrite(PWMA, abs(motorSpeed));                 //now that the motor direction is set, drive it at the entered speed
}

Greetings. Thanks for writing in.

It looks like the SIK v4.1 code was written in the Arduino version 1.8.10. Have you tried reverting to this version? Does the code behave the same?

I wonder if 1.8.13 broke something. Let me know what happens after you test 1.8.10.

Cheers.

Unfortunately 1.8.10 gives me the same issue. Additionally, the serial plotter does not have an input field to provide a motor speed for this example.

I’m on Windows 10, 1909. I can try this on a mac too to see what happens.

Have you had a chance to possibly switch out the switch?

what do you mean “switch out the switch”?

this issue is also happening on my mac running 10.15.5 with arduino 1.8.13 and 1.8.10

@Brandon I also commented out the if statement for the switch and I see the same behavior. please advise. thanks

My apologies. I meant the physical switch on the breadboard

Well i physcially removed the switch and it didn’t help.