Pages: [1]   Go Down
Author Topic: Mover servomotores (4 ó más) con Autoit  (Read 2948 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas tardes chicos.

Acabo de entrar en el mundo de Arduino y la verdad es que es apasionante.
Lo que más me gustaría es poder mover servomotores a la posición que necesite en cada momento desde una aplicación hecha por mí en Autoit (viene a ser un derivado de visual basic, pero para novatos como yo).

Hasta ahora he conseguido mover 1 servo al ángulo que yo quiero pero cuando quiero mover más de uno choco con un muro (llamado ignorancia).

A la placa (una Arduino Uno) le subo este .pde:
#include <Servo.h>

Servo myServo;

const int servoPin = 9; // the pin the servo is connected to

int val = 0;    // a value accumulated from data on the serial port
int angle = 90; // the current angle of the servo



void setup()
{
  Serial.begin(9600);
  myServo.attach(servoPin);
  myServo.write(angle);  // center the servo
}


void loop()
{
  if ( Serial.available())
  {
    char ch = Serial.read();

    if(ch >= '0' && ch <= '9')        // is ch a number?
   val = val * 10 + ch - '0';        // yes, accumulate the value
    else if(ch == '-') // is this the minus sign?
    {
   angle = angle - val;
   if(angle < 0)
      angle = 0;
   myServo.write(angle);      // write the new angle
   val = 0;
    }
    else if(ch == '+') // is this the plus sign?
    {
   angle = angle + val;
   if(angle > 180)
      angle = 180;
   myServo.write(angle);      // write the new angle
   val = 0;
    }
  }
}


y desde mi programita hecho en Autoit le mando por el `puerto COM un par de comandos básicos que mueven el motor 90º a un lado o al otro

analogwrite(9, "+90")
analogwrite(9, "-90")


He probado a modificar mi programita para incluir botones que manden esta orden:
analogwrite(8, "+90")
analogwrite(8, "-90")


pero no me ha dado resultado  smiley-cry

También probé a tocar el .pde para crear un nuevo objeto servo:
#include <Servo.h>

Servo myServo;
Servo myServo2;

const int servoPin = 9; // the pin the servo is connected to
const int servoPin2 = 8; // the pin the servo is connected to

int val = 0;    // a value accumulated from data on the serial port
int angle = 90; // the current angle of the servo



void setup()
{
  Serial.begin(9600);
  myServo.attach(servoPin);
  myServo.write(angle);  // center the servo
  myServo2.attach(servoPin2);
  myServo2.write(angle);  // center the servo
}


void loop()
{
  if ( Serial.available())
  {
    char ch = Serial.read();

    if(ch >= '0' && ch <= '9')        // is ch a number?
   val = val * 10 + ch - '0';        // yes, accumulate the value
    else if(ch == '-') // is this the minus sign?
    {
   angle = angle - val;
   if(angle < 0)
      angle = 0;
   myServo.write(angle);      // write the new angle
     myServo2.write(angle);      // write the new angle
   val = 0;
    }
    else if(ch == '+') // is this the plus sign?
    {
   angle = angle + val;
   if(angle > 180)
      angle = 180;
   myServo.write(angle);      // write the new angle
   myServo2.write(angle);      // write the new angle
   val = 0;
      }
  }
}


pero como me temía esto hacía que los dos servos se movieran cada uno a la misma posición a la vez.

He estado buscando en foros pero no encuentro nada que me oriente, ya que la mayoría de los ejemplos que encuaentro son solo para un servo o para mover dos con potenciometros conectados también a la Arduino. Yo simplemente necesito poder decirle" Servo que estás en el pin 9 ves al ángulo 30, servo que estás en el pin 7 ves al ángulo 45, etc, etc...

Siempre voy a trabajar con la placa conectada a un PC, y no tengo problema en alimentar los servos ya que les doy 5V con cables usb cortados y conectados al PC  smiley-confuse

¿Alguien me puede echar una mano please?

Muchas gracias por haber leído hasta aquí, saludos
« Last Edit: April 29, 2012, 05:52:28 pm by coleoptero » Logged

Pages: [1]   Go Up
Jump to: