UART communication with RMCS-220X servo motor.

So i just bought one of these motor:

http://www.robokits.co.in/documentation/RMCS220x_DCServo+Driver.pdf

I am now trying to use an Arduino Mega 2560 to control it through UART using the terminal. The motor are connected as desribed in the above PDF under UART communication, using the TX1 and RX1 on the Arduino. So i would like to be able to write commands in the arduino IDE terminal to make the motor move. I am using this code, but can't get it to work. Can anyone spot my mistake?

void setup() {

  Serial.begin(9600);
  Serial1.begin(9600);
  Serial.println("Serial conection started, waiting for instructions...");

}

void loop() {

  String serDataStr;
  String serDataStr1;

  while(Serial1.available()) {   // Check to see if there are any availeble communication
    char recievedChar1 = Serial1.read();
    serDataStr1 += recievedChar1;  // Puttes the serial communication together to one string.
    delay(5);    // Neccesary on fast boards as chipkit, else it will put one serial com into two.
  }

  while(Serial.available()) {   // Check to see if there are any availeble communication
    char recievedChar = Serial.read();
    serDataStr += recievedChar;  // Puttes the serial communication together to one string.
    delay(5);    // Neccesary on fast boards as chipkit, else it will put one serial com into two.
  }

  if (serDataStr != "") {  // If the datastring are not empty, then proceed.
    Serial.print("Command: ");
    Serial.println(serDataStr);
    Serial1.print(serDataStr);
    Serial1.print('\r');
    serDataStr = "";    //Empty the data string from the Serial
  } 

  if (serDataStr1 != "") {  // If the datastring are not empty, then proceed.
    Serial.print("Returned from motor: ");
    Serial.println(serDataStr1);
    serDataStr1 = "";    //Empty the data string from the Serial
  } 
}
  1. Never use the String class on an Arduino. Use the string (Null terminated array of char).

  while(Serial1.available()) {   // Check to see if there are any availeble communication
    char recievedChar1 = Serial1.read();
    serDataStr1 += recievedChar1;  // Puttes the serial communication together to one string.
    delay(5);    // Neccesary on fast boards as chipkit, else it will put one serial com into two.
  }

  while(Serial.available()) {   // Check to see if there are any availeble communication
    char recievedChar = Serial.read();
    serDataStr += recievedChar;  // Puttes the serial communication together to one string.
    delay(5);    // Neccesary on fast boards as chipkit, else it will put one serial com into two.
  }

The while's are not needed your already in a loop. That's what loop() is. Nor do you need the delay()'s

  if (serDataStr != "") {  // If the datastring are not empty, then proceed.
    Serial.print("Command: ");
    Serial.println(serDataStr);

If your going to do this kind of thing you need to wait until the command is complete! You can not just assume that it's complete because you got the first bit (it wont be).

Mark

I think i see what you mean, but i don't know how too proceed. Can you give me some direction? Or maybe point me to a code that basically just parses the information on from serial0 to serial1 and vice versa?

You not "parses" ing anything. look the term up.

Why not (if data) is available just copy it to the other serial. eg

Serial1.write(Serial.read()); I'll leave the rest to you. Set the serial monitor so that it does not send a line ending.

Mark

Sorry for that mistake. So i tried to just use your idea with

Serial1.write(Serial.read());

But it didn't move at all :0

So I tried to listen to the device, using this:

Serial.write(Serial1.read());

But all i got back was this:

"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ" in a continuing row.

carriage return was on and i tried writting G6000 and other commands, but nothing happens. Anyone has any idea how to get it to work?

void setup() {

  Serial.begin(9600);
  Serial1.begin(9600);
  Serial.println("Serial conection started, waiting for instructions...");

}

void loop() {

Serial1.write(Serial.read());

Serial.write(Serial1.read());
}

(if data) is available just

This is a big clue, you can't read data if its not there.

Mark

You need to use serial.println function or send \r\n after each command. Wait for completion of each command by using delay or taking feedback from motor (UART input). You also need to set max. speed of motor to get it running.

This is a working code to check most serial commands.

/*

Arduino Code for running RMCS-220X Encoder DC Servo Motors.
RMCS-220X series motors are high torque DC motors with inbuilt encoder and drive. They can be easily controlled by using any MCU such as Arduino or raspberry pi. 
These motors can be controlled through UART, I2C or PPM (Servo signal) and Analog Input (potentiometer control) which makes it versatile servo motor.
Encoder is inbuilt so perfect speed control can be achieved. Shaft stays locked when no command is given.
This code uses UART interface to control the motors. There are some commented commands, use them after looking at datasheet.
If more than one motor is to be controlled use I2C interface, make sure that every motor has different address.


Connections
---------------
+12 to 15VDC (Min 5A is recommended) - Motor Green, Arduino VIN
GND of power supply- Motor Black, Arduino GND
Arduino TXD - Motor Yellow - Thats it only 3 wires connected from motor and arduino

Optional - Arduino RXD - Motor Orange, Not implemented in this code but can be used to read parameters from motor.
*/

int led = 13;

void setup() {
  Serial.begin(9600);    //Initiate serial port
  while (!Serial) {      //For leonardo only - wait for connection
  }
  delay(3000);           //Wait for motor to finish initiation routine - If you give commands to motor on power on it may behave irratically
  pinMode(led, OUTPUT);    //Setup LED pin as output
  digitalWrite(led, 1);    //LED On
  /*
  Serial.println("X");    //Auto Calibration command, Required only once when using motor for the first time, after running onces parameters are stored in motor controller.
  delay(5000);            //Wait for 5 Seconds for calibration
  
  Serial.println("E125");    //Set I2C slave address for motor. If more than one motor is to be controlled on I2C bus every motor needs different address which can be set using this command. 
                             //Required only once when using motor for the first time, after running onces parameters are stored in motor controller.
  delay(500);                //Allow to store setting
  */
  
  digitalWrite(led, 0);
  Serial.println("M255");  //Set maximum speed of motor, useful when using G command for going to specific encoder position.
  delay(500);              //Allow to store setting
  Serial.println("D100");  //Set damping - acceleration and decceleration
  delay(500);              //Allow to store setting
}


void loop() {

  Serial.println("M255");  //Set maximum speed
  Serial.println("G3600");  //Go to Encoder Position 3600 - 2 rotations
  digitalWrite(led, 1);
  delay(3000);
  
  Serial.println("M50");  //Set slow speed
  Serial.println("G0");     //Go back to encoder position 0
  digitalWrite(led, 0);
  delay(5000);
  
  Serial.println("M255");  //Set maximum speed
  Serial.println("R1800");  //Go to Current Encoder Position + 1800 counts (relative position - go +1800 counts from current position)
  digitalWrite(led, 1);
  delay(3000);
  
  Serial.println("M50");    //Set slow speed
  Serial.println("R-1000"); //Go to Current Encoder Position - 100 counts (relative position - go -1000 counts from current position)
  digitalWrite(led, 0);
  delay(5000);
  
  
  /*
  //Following commands (S) run motor at constand speed at with given acceleration-decceleration without position control, however it uses encoder to regulate speed. 
  Serial.println("S255");    //Run motor at max speed - 255 in forward direction
  digitalWrite(led, 1);
  delay(5000);
  
  Serial.println("S-50");    //Run motor in rever at 50 speed
  digitalWrite(led, 0);
  delay(5000);
  
  Serial.println("S0");    //Speed 0, stop motor
  delay(100);
  
  Serial.println("P0");    //Set current encoder position as 0
  delay(2000);
  
  */

  
}

Sweet thank you :slight_smile:

Two hours ago i managed to write a code that accepts command from the serial monitor. But i will sniff your code for useful tips.

Do you own one of these motors?

This code worked for me!

#include <SoftwareSerial.h>

#define rxPin 3
#define txPin 4

//SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);

SoftwareSerial mySerial(3, 4); // RX, TX

//**************THIS ONE WORKS//

void setup()
{
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
Serial.begin(9600);
while (!Serial) {
;
}
Serial.println("Issue servo Commands");

// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
delay(250);

mySerial.println("S255");
delay(20000);
mySerial.println("S0");
delay(2000);
Serial.println("Stop and reset P0?");
mySerial.println("P0");
Serial.println("Go to G900");
mySerial.println("G900");

}

void loop() // run over and over
{

}

Anyone managed to get the I2C code working, i have tried but can't get the commands to work.
I have used the wire library but as soon as i issue the wire.begin() the command starts the motor but not at the right speed or the encoder position.
.

I2C demo code is here. Pull up your RX and TX pins of motor, keeping it floating may not let it enter in I2C mode. Turn on your serial terminal on 9600 baud to see what's happening.

/*

Arduino Code for running RMCS-220X Encoder DC Servo Motors.
RMCS-220X series motors are high torque DC motors with inbuilt encoder and drive. They can be easily controlled by using any MCU such as Arduino or raspberry pi. 
These motors can be controlled through UART, I2C or PPM (Servo signal) and Analog Input (potentiometer control) which makes it versatile servo motor.
Encoder is inbuilt so perfect speed control can be achieved. Shaft stays locked when no command is given.
This code uses I2C interface to control the motors.
If more than one motor is to be controlled use I2C interface, make sure that every motor has different address. Address can only be set from UART interface.



Connections
---------------
+12 to 15VDC (Min 5A is recommended) - Motor Green, Arduino VIN
GND of power supply- Motor Black, Arduino GND
+5V from Arduino - Motor Yellow, Motor Orange
Pull Up with 10K resistor to +5 - Arduino A4, A5 pins
Arduino A4 - SDA-Motor Red
Arduino A5 - SCL-Motor Brown

*/

#include <Wire.h>
#define dc_servo1 8
#define led 13

long CurPos;

void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
    Serial.begin(9600);    //Initiate serial port
  while (!Serial) {      //For leonardo only - wait for connection
  }
  SetMaxSpeed(dc_servo1,255);
  SetDamping(dc_servo1,0);
  SpeedRun(dc_servo1,0);
  Serial.println("Motor Stopped");
  delay(1000);  
  pinMode(led, OUTPUT);    //Setup LED pin as output
  digitalWrite(led, 1);    //LED On
}



void loop()
{
 Demo();
}

void SpeedRun(byte Address, int Speed)
{
  Wire.beginTransmission(Address);
  Wire.write(1);
  Wire.write(Speed         & 0xff);
  Wire.write((Speed >>  8) & 0xff);
  Wire.endTransmission();    // stop transmitting
}

void SetMaxSpeed(byte Address, byte Speed)
{
  Wire.beginTransmission(Address);
  Wire.write(0);
  Wire.write(Speed);
  Wire.write(0);
  Wire.endTransmission();
}

void SetDamping(byte Address, byte Damping)
{
  Wire.beginTransmission(Address);
  Wire.write(2);
  Wire.write(Damping);
  Wire.write(0);
  Wire.endTransmission();
  delay(50);    //Required to store settings
}

void MoveAbs(byte Address, long Position)
{
  Wire.beginTransmission(Address);
  Wire.write(4);
  Wire.write(Position         & 0xff);
  Wire.write((Position >>  8) & 0xff);
  Wire.write((Position >> 16) & 0xff);
  Wire.write((Position >> 24) & 0xff);
  Wire.endTransmission();
}

void MoveRel(byte Address, long Position)
{
  Wire.beginTransmission(Address);
  Wire.write(8);
  Wire.write(Position         & 0xff);
  Wire.write((Position >>  8) & 0xff);
  Wire.write((Position >> 16) & 0xff);
  Wire.write((Position >> 24) & 0xff);
  Wire.endTransmission();
}

void SetPos(byte Address, long Position)
{
  Wire.beginTransmission(Address);
  Wire.write(3);
  Wire.write(Position         & 0xff);
  Wire.write((Position >>  8) & 0xff);
  Wire.write((Position >> 16) & 0xff);
  Wire.write((Position >> 24) & 0xff);
  Wire.endTransmission();
}

long ReadPos(void)
{
  
}

void Demo(void)
{
 //---------Speed Mode tesing
  Serial.println("Speed Control Mode");
  int i;
  SetDamping(dc_servo1,100);  
  Serial.println("Motor Running at Speed -255 Damping 100");
  SpeedRun(dc_servo1,-255);
  delay(3000);
  digitalWrite(led, 0);
  Serial.println("Motor Running at Speed -255 Damping 100");
  SetDamping(dc_servo1,0);  
  for(i=-255;i<=255;i++)
  {
    SpeedRun(dc_servo1,i);
    Serial.println(i);
    delay(30);
  }
  digitalWrite(led, 1);
  SetDamping(dc_servo1,200);  
  SpeedRun(dc_servo1,0);
  Serial.println("Motor Running at Speed 0 Damping 200");
  delay(3000);
  digitalWrite(led, 0);
  SetDamping(dc_servo1,0);  
//----------Position Mode testing

  Serial.println("Position Mode, Set current position to 0");
  SetPos(dc_servo1,0);
  delay(3000);
  digitalWrite(led, 1);    //LED On
  Serial.println("Position Mode, Move half rotaiton : 900 steps");
  MoveAbs(dc_servo1, 900);
  delay(3000);
  Serial.println("Position Mode, Go to 0 Position");
  MoveAbs(dc_servo1, 0);
  delay(3000);
  Serial.println("Position Mode Relative Move, Go to +2000 Counts");
  MoveRel(dc_servo1, 2000);
  delay(500);
  Serial.println("Position Mode Relative Move, Go to +1000 Counts");
  MoveRel(dc_servo1, 1000);
  delay(500);
  Serial.println("Position Mode Relative Move, Go to +500 Counts");
  MoveRel(dc_servo1, 500);
  delay(500);
  Serial.println("Position Mode Relative Move, Go to -200 Counts");
  MoveRel(dc_servo1, -200);
  delay(500);
  Serial.println("Position Mode Absolute Move, Go to 0 Position");
  MoveAbs(dc_servo1, 0);
  Serial.println("End Program, Strating over...");
  delay(3000);
  digitalWrite(led, 0);
}

Functions :

SetDamping : Sets acceleration and deceleration for speed mode
SpeedRun : Run motor at given speed (-255 to +255, 0 is stop)
SetMaxSpeed : Set maximum speed while moving in Absolute or Relative Position Control Mode (0-255)
SetPos : Set current encoder position to specified value
MoveAbs : Absolute move to specified position
MoveRel : Relative move from current position

I looked at the servo data sheet and basic communication with the servo using the serial monitor should be easy. I suggest you load a dummy program on the mega that doesn't have any serial functions (like the blink example). Connect the servo tx wire to the mega tx0 pin, the servo rx wire to the mega rx0 pin, and connect the grounds of the servo and mega together. Open the serial monitor and set the baud rate to 9600, and select the carriage return/line feed option. Start typing in and sending commands from the serial monitor (look at the command examples in the picture on page 5 of the data sheet). You also should be able to the servo library with the servo.

vaidyasp:
I2C demo code is here. Pull up your RX and TX pins of motor, keeping it floating may not let it enter in I2C mode. Turn on your serial terminal on 9600 baud to see what's happening.

/*

Arduino Code for running RMCS-220X Encoder DC Servo Motors.
RMCS-220X series motors are high torque DC motors with inbuilt encoder and drive. They can be easily controlled by using any MCU such as Arduino or raspberry pi.
These motors can be controlled through UART, I2C or PPM (Servo signal) and Analog Input (potentiometer control) which makes it versatile servo motor.
Encoder is inbuilt so perfect speed control can be achieved. Shaft stays locked when no command is given.
This code uses I2C interface to control the motors.
If more than one motor is to be controlled use I2C interface, make sure that every motor has different address. Address can only be set from UART interface.

Connections

+12 to 15VDC (Min 5A is recommended) - Motor Green, Arduino VIN
GND of power supply- Motor Black, Arduino GND
+5V from Arduino - Motor Yellow, Motor Orange
Pull Up with 10K resistor to +5 - Arduino A4, A5 pins
Arduino A4 - SDA-Motor Red
Arduino A5 - SCL-Motor Brown

*/

#include <Wire.h>
#define dc_servo1 8
#define led 13

long CurPos;

void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
    Serial.begin(9600);    //Initiate serial port
  while (!Serial) {      //For leonardo only - wait for connection
  }
  SetMaxSpeed(dc_servo1,255);
  SetDamping(dc_servo1,0);
  SpeedRun(dc_servo1,0);
  Serial.println("Motor Stopped");
  delay(1000); 
  pinMode(led, OUTPUT);    //Setup LED pin as output
  digitalWrite(led, 1);    //LED On
}

void loop()
{
Demo();
}

void SpeedRun(byte Address, int Speed)
{
  Wire.beginTransmission(Address);
  Wire.write(1);
  Wire.write(Speed         & 0xff);
  Wire.write((Speed >>  8) & 0xff);
  Wire.endTransmission();    // stop transmitting
}

void SetMaxSpeed(byte Address, byte Speed)
{
  Wire.beginTransmission(Address);
  Wire.write(0);
  Wire.write(Speed);
  Wire.write(0);
  Wire.endTransmission();
}

void SetDamping(byte Address, byte Damping)
{
  Wire.beginTransmission(Address);
  Wire.write(2);
  Wire.write(Damping);
  Wire.write(0);
  Wire.endTransmission();
  delay(50);    //Required to store settings
}

void MoveAbs(byte Address, long Position)
{
  Wire.beginTransmission(Address);
  Wire.write(4);
  Wire.write(Position         & 0xff);
  Wire.write((Position >>  8) & 0xff);
  Wire.write((Position >> 16) & 0xff);
  Wire.write((Position >> 24) & 0xff);
  Wire.endTransmission();
}

void MoveRel(byte Address, long Position)
{
  Wire.beginTransmission(Address);
  Wire.write(8);
  Wire.write(Position         & 0xff);
  Wire.write((Position >>  8) & 0xff);
  Wire.write((Position >> 16) & 0xff);
  Wire.write((Position >> 24) & 0xff);
  Wire.endTransmission();
}

void SetPos(byte Address, long Position)
{
  Wire.beginTransmission(Address);
  Wire.write(3);
  Wire.write(Position         & 0xff);
  Wire.write((Position >>  8) & 0xff);
  Wire.write((Position >> 16) & 0xff);
  Wire.write((Position >> 24) & 0xff);
  Wire.endTransmission();
}

long ReadPos(void)
{
 
}

void Demo(void)
{
//---------Speed Mode tesing
  Serial.println("Speed Control Mode");
  int i;
  SetDamping(dc_servo1,100); 
  Serial.println("Motor Running at Speed -255 Damping 100");
  SpeedRun(dc_servo1,-255);
  delay(3000);
  digitalWrite(led, 0);
  Serial.println("Motor Running at Speed -255 Damping 100");
  SetDamping(dc_servo1,0); 
  for(i=-255;i<=255;i++)
  {
    SpeedRun(dc_servo1,i);
    Serial.println(i);
    delay(30);
  }
  digitalWrite(led, 1);
  SetDamping(dc_servo1,200); 
  SpeedRun(dc_servo1,0);
  Serial.println("Motor Running at Speed 0 Damping 200");
  delay(3000);
  digitalWrite(led, 0);
  SetDamping(dc_servo1,0); 
//----------Position Mode testing

Serial.println("Position Mode, Set current position to 0");
  SetPos(dc_servo1,0);
  delay(3000);
  digitalWrite(led, 1);    //LED On
  Serial.println("Position Mode, Move half rotaiton : 900 steps");
  MoveAbs(dc_servo1, 900);
  delay(3000);
  Serial.println("Position Mode, Go to 0 Position");
  MoveAbs(dc_servo1, 0);
  delay(3000);
  Serial.println("Position Mode Relative Move, Go to +2000 Counts");
  MoveRel(dc_servo1, 2000);
  delay(500);
  Serial.println("Position Mode Relative Move, Go to +1000 Counts");
  MoveRel(dc_servo1, 1000);
  delay(500);
  Serial.println("Position Mode Relative Move, Go to +500 Counts");
  MoveRel(dc_servo1, 500);
  delay(500);
  Serial.println("Position Mode Relative Move, Go to -200 Counts");
  MoveRel(dc_servo1, -200);
  delay(500);
  Serial.println("Position Mode Absolute Move, Go to 0 Position");
  MoveAbs(dc_servo1, 0);
  Serial.println("End Program, Strating over...");
  delay(3000);
  digitalWrite(led, 0);
}





Functions :

SetDamping : Sets acceleration and deceleration for speed mode
SpeedRun : Run motor at given speed (-255 to +255, 0 is stop)
SetMaxSpeed : Set maximum speed while moving in Absolute or Relative Position Control Mode (0-255)
SetPos : Set current encoder position to specified value
MoveAbs : Absolute move to specified position
MoveRel : Relative move from current position

Sir , i am using exactly same code but motor is not running , i have exactly followed all your steps and pulled up the RX and TX lines using 4.7 k resistance and same for the SCL and SDA lines using 4.7 k resistance . firstly i set the I2C address using UART and and then run the I2C code given by you....but still the motor didn't worked.

There is nothing much complicated in this. Everything is simple and code is as per datasheet. Make sure that you are setting the I2C address properly through UART. Use your PC instead of arduino if possible to confirm that the address is stored properly.

hello everyone..,

i am trying to run the rmcs - 2203 servo motor with Arduino Due board, but till now i am unable to do it. I refereed the above discussion and it gave me a good start too, but with no success. I am communicating the motor with UART of sue board and directly sending the data to the motor.

I am trying to sun the following code snippet with settings as default shown in the UART code section,

Serial.println("S250"); //Run motor at max speed - 255 in forward direction
Serial.println("D100");
digitalWrite(led, 1);
delay(500);

Serial.println("S-50"); //Run motor in rever at 50 speed
Serial.println("D-100");
digitalWrite(led, 0);
delay(500);

Serial.println("S0"); //Speed 0, stop motor
delay(100);

Serial.println("P0"); //Set current encoder position as 0
delay(200);

But, motor shows no sign of movement. Please can somebody shed a light on this issue. Will be of great help...

Thank You

Have you tried switching the RX/TX connections? So: Motor TX - Arduino RX & Motor RX - Arduino TX ? That worked for me.

If not try this code i use for testing and tunning purposes:

/* 
 Written by Kristoffer P. Sminge
 2014-02-05
 
 The servo i bought had switched TX and RX terminal, so if the motor does not respond, try switching them.
 
 */
void setup() {

  Serial.begin(9600);
  Serial1.begin(9600);
  Serial.println("Serial conection started, waiting for instructions...");

}

void loop() {

  String serDataStr0;
  String serDataStr1;
  
  
 // Reads the input from the serial prompt and gives it to the motor
  while(Serial.available()) {   // Check to see if there are any availeble communication
    char recievedChar0 = Serial.read();
    serDataStr0 += recievedChar0;  // Puttes the serial communication together to one string.
    delay(5);    // Neccesary on fast boards as chipkit, else it will put one serial com into two.
  }

  if (serDataStr0 != "") {  // If the datastring are not empty, then proceed.
    Serial1.println(serDataStr0);
    serDataStr0 = "";    //Empty the data string from the Serial
  }  
  
  // Reads the input from the motor and return it to the serial prompt  
  while(Serial1.available()) {   // Check to see if there are any availeble communication
    char recievedChar1 = Serial1.read();
    serDataStr1 += recievedChar1;  // Puttes the serial communication together to one string.
    delay(5);    // Neccesary on fast boards as chipkit, else it will put one serial com into two.
  }

  if (serDataStr1 != "") {  // If the datastring are not empty, then proceed.
    Serial.println(serDataStr1);
    serDataStr0 = "";    //Empty the data string from the Serial
  }
 
}

Go to seriel monitoring and remember to select carriage return and the other one i can't remember from the drop down curtain. Then you can write commands directly in the prompt to the motor, try G5000 and you should se the motor go to position 5000. You can confirm by just writting a "P" and it should return P5000 to the prompt. Also if the seriel monitor and arduino is powered on before you power up the motor, you should se a text saying something like welcome tho Rhino motor something (i can't remember the exact text).

Hope this help.

Oh and remember to connect Motor GND - Arduino GND (in case you are not powering the arduino from the same power supply).

I should also note that i bought 5 of these motor and one of them i simply can not communicate with... probably a defect one.

Thanks for the quick reply Palmhoej ........

but everything u suggested has been done by me. I interchanged rx and tx of motor in order to check if the motor works, but no result. TX motor<->RX of arduino and vice versa.

Even when I switch on the supply to the motor, it doesn't prints anything on the terminal like motor name or any introductory message. I am unable to communicate with the motor, for reasons unknown to me. Only once, the motor rotated (accidentally or with some purpose) , but don't know how and after that the motor has decided not to obey my commands and stand still.

What could be done in order to solve this issue.

Thanks...please help :zipper_mouth_face: