Show Posts
Pages: [1]
1  Topics / Robotics / Re: Controlling 30 servos.. on: March 15, 2011, 10:03:49 am
Hi PaulS,

I'm using standards servos, 0 to 180. I just need to control 30 servos, by USB. The speed is not to important...

I have this code working with 6 servos, "a" to "f" is the identifier servo and "0" to "180" is the position value.
But I don't know how to "scale" this to up 30 servos..

#include <Servo.h>
#define SERVO_2_PIN 2
#define SERVO_3_PIN 3
#define SERVO_4_PIN 4
#define SERVO_5_PIN 5
#define SERVO_6_PIN 6
#define SERVO_7_PIN 7

Servo g_servo2,g_servo3,g_servo4,g_servo5,g_servo6,g_servo7;

void setup()
{
  pinMode(SERVO_2_PIN, OUTPUT);
  pinMode(SERVO_3_PIN, OUTPUT);
  pinMode(SERVO_4_PIN, OUTPUT);
  pinMode(SERVO_5_PIN, OUTPUT);
  pinMode(SERVO_6_PIN, OUTPUT);
  pinMode(SERVO_7_PIN, OUTPUT);
  g_servo2.attach(SERVO_2_PIN);
  g_servo3.attach(SERVO_3_PIN);
  g_servo4.attach(SERVO_4_PIN);
  g_servo5.attach(SERVO_5_PIN);
  g_servo6.attach(SERVO_6_PIN);
  g_servo7.attach(SERVO_7_PIN);
  Serial.begin(9600);
 }

void loop()
{
  static int val = 0;

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

    switch(ch)
    {
      case '0'...'9':
        val = val * 10 + ch - '0';
        break;
        case 'a':
        g_servo2.write(val);
        val = 0;
        break;
        case 'b':
        g_servo3.write(val);
        val = 0;
        break;
        case 'c':
        g_servo4.write(val);
        val = 0;
        break;
        case 'd':
        g_servo5.write(val);
        val = 0;
        break;
        case 'e':
        g_servo6.write(val);
        val = 0;
        break;
        case 'f':
        g_servo7.write(val);
     
       val = 0;
        break;
    }
  }
  //Servo::refresh();  // Should try to call this every 20 ms to insure servo stays set
}

Thank you!
Rafael.
2  Topics / Robotics / Controlling 30 servos.. on: March 15, 2011, 06:27:18 am
Hello!

I'm new here ...
I have a small project in which I need control up to 30 servos using
an application, through the serial port (USB).

I have a Mega Arduino, I know that you can control up to 48 servos, but do not know
how to make an optimal code for that .. can control up to 6 servos (by PWM) without
problem using the instruction "case" to get the handle of the servo
and then the value of the position servo ..
But he liked to take it more simply, get a string with 30
identifiers over the respective values ​​of position ..

Any ideas'?

Thanks,
Rafael.
3  International / Portugues / Controlar 30 servos! on: March 14, 2011, 01:59:37 pm
Olá!

Sou novato por aqui...
Tenho um pequeno projecto no qual preciso controlar até 30 servos através de uma aplicação, ou seja, através da porta série (USB).

Tenho um Arduino Mega, sei que poderá controlar até 48 servos, mas não sei como fazer um código optimizado para isso.. consigo controlar até 6 servos sem problema, utilizando a instrucção "case" para receber o identificador do servo e em seguida o valor da posição do servo..
Mas gostava de ter isso mais simple, receber uma string com os 30 identificadores mais os respectivos valores de posição..

Alguma ideia'??

Obrigado,
Rafael.
Pages: [1]