Matlab - mover un servo motor

   
Vista:

mover un servo motor

Publicado por mariana (7 intervenciones) el 22/02/2017 16:06:48
hola
estoy haciendo un programa en donde muevo un servomotor en sentido horario y sentido antihorario
estoy haciendo lectura de datos con arduino y pues los debo trabajar desde matlab para esto uso la libreria escargable de arduino para el puerto serial.

siendo mas puntual debo hacer lo siguiente :

En este laboratorio se tendrá dos pulsadores (S1 y S2) conectados a un
microcontrolador para gobernar el movimiento de un servomotor.
Se debe diseñar un circuito y programar el microcontrolador para cumplir las siguientes condiciones:

1. Al pulsar S1 el servomotor deberá girar 15° en sentido horario.
2. Al pulsar S2 el servomotor deberá girar 20° en sentido anti-horario.


Nota: para mover el servomotor 30° en sentido horario se debe pulsar dos veces S1, mantener presionado S1 solo se deberá mover el servomotor 15°.

por ahora solo tengo lo siguiente para moverlo
a=arduino('COM3');
%%
a.pinMode(2,'input')

a.pinMode(3,'input')

servoAttach(a,9)
b=15
c=20
while (true)
if a.digitalRead(2) == 1 %0-> LOW 1-> HIGH
a.servoWrite(9,b);
pause(1)
b=b+15

end
if a.digitalRead(3) == 1 %0-> LOW 1-> HIGH
a.servoWrite(9,c);
pause(1)
c=c+20

end
end

esto solo hace que se mueva en sentido horario cada 15 o cada 20 desde el angulo 0 pero necesito que se mueva 15 o 20 desde done este

necesito ayuda para e sentido anti horario tambien x_x


gracias:D
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Royeth

mover un servo motor

Publicado por Royeth jesus.royeth@gmail.com (1216 intervenciones) el 22/02/2017 18:58:22
te recomiendo que crees un servo

1
2
a = arduino();
s = servo (a, 3);

verifica bien si el valor de b y c están incrementando o se resetean

en arduino las funciones serían algo como esto :

1
2
3
4
5
6
7
8
9
10
#include <Servo.h>
Servo myservo;//create servo object to control a servo
 
void setup()
{
  myservo.attach(9);// pin 9 para el servo
  myservo.write(0);// 0 grados 
  delay(1000);// esperar 1 segundo
 
}


para el sentido antihorario debes restar pero debes verificar y hacer una modulación pero lo que te digo debes verificar antes de continuar con el código , tanto el valor de b que entra antes de escribir en el servo como el valor que sale después

espero te sea de ayuda
saludos
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar