Borrar filtros
Borrar filtros

Arduino Uno with Matlab and Stepper

2 visualizaciones (últimos 30 días)
Sven Lo
Sven Lo el 26 de Jul. de 2015
Comentada: Geoff Hayes el 26 de Jul. de 2015
Hey guys!
I use an Arduino Uno with a Rev3 Motor Shield and a bipolar stepper.
So I want to create a program with Matlab in which i can change the stepper speed with a slider and when i click the button matlab give the variable to the arduino which uses it as speed.The speed value is between 1 and 200.I hope that you can help me and find the error :) Thanks a lot to everyone who tries!
If I try to use the following code the stepper stops and still have the old speed.
So here is my Matlab code:
A = get(handles.slider1,'Value');
A = int2str(A);
disp(['A= ',A]);
pause on;
s = serial('COM3','BaudRate',9600);
pause(3);
fopen(s);
pause(2);
fprintf(s,A,'uint8','sync');
pause(2);
fclose(s);
and here is my Arduino Code:
#include <Stepper.h>
const int pwmA = 3;
const int pwmB = 11;
const int brakeA = 9;
const int brakeB = 8;
const int dirA = 12;
const int dirB = 13;
const int stepsPerRevolution = 200;
int a;
Stepper myStepper(stepsPerRevolution, 12,13);
void setup() {
// put your setup code here, to run once:
myStepper.setSpeed(10);
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
pinMode(brakeA, OUTPUT);
pinMode(brakeB, OUTPUT);
digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
digitalWrite(brakeA, LOW);
digitalWrite(brakeB, LOW);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available()>0)
{
//int a=Serial.read();
int a=Serial.parseInt();
myStepper.setSpeed(a);
Serial.flush();
}
myStepper.step(1);
}
  1 comentario
Geoff Hayes
Geoff Hayes el 26 de Jul. de 2015
Sven - shouldn't the format for the data come before the command/variable (unless you are using a different version of MATLAB)? If I look at http://www.mathworks.com/help/matlab/ref/serial.fprintf.html then I tend to think that your call
fprintf(s,A,'uint8','sync');
is a little off and should have the data type (format) before the A variable. I may even do something like
fprintf(s,'%u',A,'sync');

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Arduino Hardware en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by