control stepper motor using MATLAB and Arduino

11 views (last 30 days)
I am trying to set up a stepper motor connected to an Arduino Uno with motor shield mounted on it.
The motor works through Arduno IDE.
I am trying to translate the code in MATLAB ...without success
here is my arduino code:
// Include the Stepper library<br>#include
#include <Stepper.h>
// Declare the used pins
int dirA = 12;
int dirB = 13;
int pwmA = 3;
int pwmB = 11;
// Declare a Stepper motor with 200 steps
Stepper stepper1(200, dirA, dirB);
void setup() {
// PWM pins require declaration when used as Digital
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
// Set PWM pins as always HIGH
digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
// Set stepper motor speed
void loop(){
// Turn the stepper 100 steps which means 180 degrees
// Wait half second
// Turn the stepper 100 steps back which means 180 degrees
// Wait half second
and here is my MATLAB code:
clear all
global a;
% a = arduino('COM3','Uno');
a = arduino('COM3','Uno','Libraries','Adafruit\MotorShieldV2'); % load arduino package including motor shield
%% create shield object to control the motor
shield = addon(a,'Adafruit\MotorShieldV2');
sm = stepper(shield,1,200);
%% specify speed and movement direction
for i = 1:5
sm.RPM = 30;
move(sm, 200);
move(sm, -200);
any idea why it does not move ? the code per se should be correct (I do not get any error).
Thanks !
  1 Comment
Ernest Arranz Pasqual
Ernest Arranz Pasqual on 31 Oct 2022
Hi, I'm also working on a stepper matlab arduino project. From what I undersand here:
it seems the problem is the pause function which can't operate with values low enough.

Sign in to comment.

Answers (0)


Find more on Instrument Control Toolbox in Help Center and File Exchange




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!