Aller au contenu


Photo
- - - - -

Connexion de 2 AX-12A à un Arduino Uno


17 réponses à ce sujet

#1 basesim

basesim

    Membre

  • Membres
  • 13 messages

Posté 10 mai 2012 - 05:08

Bonjour,
J'aimerais savoir comment connecté 2 servomoteur AX-12A à un arduino Uno.

Je possède ce circuit : http://www.robotshop.com/ca/productinfo.aspx?pc=RB-Dfr-142&lang=fr-CA.
Avec ce dernier, je serais supposé pouvoir connecté directement les AX-12A à mon arduino, mais,
après avoir consulté d'autres sites, je n'en suis pas entièrement certain.

Je dois pouvoir les contrôler par ordinateur (les communications serial avec l'ordinateur doivent être possible)

Alors pouvez-vous m'aider, SVP, en me disant comment connecté mes AX-12 à mon arduino et
comment programmé celui-ci pour les contrôler.



Merci d'avance!

#2 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 10 mai 2012 - 06:56

Il n'y a besoin de rien d'autre que d'une liaison série et d'une Lib dont j'avais mis le lien voilà quelsques temps sur le forum.

Fais une recherche tu trouvera.

En fait il faut aussi shunter RX et TX la Lib fait le reste.

 


#3 basesim

basesim

    Membre

  • Membres
  • 13 messages

Posté 11 mai 2012 - 01:05

Il n'y a besoin de rien d'autre que d'une liaison série et d'une Lib dont j'avais mis le lien voilà quelsques temps sur le forum.

Fais une recherche tu trouvera.

En fait il faut aussi shunter RX et TX la Lib fait le reste.


J'ai cherché sur le forum et je n'ai pas trouvé le lien en question.
Quel est le nom de la lib?

et quand tu dis shunter, tu veux dire connecter ensemble?
Il me semble que si j'utilise le RX et le TX du arduino
pour connecter mes servo, je ne pourrai plus communiqué avec l'ordinateur, non?

En tout cas, merci de ta réponse rapide !

#4 basesim

basesim

    Membre

  • Membres
  • 13 messages

Posté 11 mai 2012 - 07:46

J'ai trouvé cette lib :
http://savageelectronics.blogspot.ca/2011/08/actualizacion-biblioteca-dynamixel.html
--> Dynamixel SoftSerial

Celle-ci semble être exactement ce que j'ai besoin, mais lorsque je tente de compiler
un programme avec, voici ce que j'obtiens dans l'IDE de arduino :

C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h: In member function 'void DynamixelClass::begin(long int, unsigned char, unsigned char)':
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h:76: error: 'void SoftwareSerial::setRX(uint8_t)' is private
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:128: error: within this context
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h:75: error: 'void SoftwareSerial::setTX(uint8_t)' is private
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:129: error: within this context
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h: In member function 'void DynamixelClass::begin(long int, unsigned char, unsigned char, unsigned char)':
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h:76: error: 'void SoftwareSerial::setRX(uint8_t)' is private
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:138: error: within this context
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h:75: error: 'void SoftwareSerial::setTX(uint8_t)' is private
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:139: error: within this context

Où est l'erreur ?

#5 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 11 mai 2012 - 07:48

J'ai trouvé cette lib :
http://savageelectro...-dynamixel.html
--> Dynamixel SoftSerial

Celle-ci semble être exactement ce que j'ai besoin, mais lorsque je tente de compiler
un programme avec, voici ce que j'obtiens dans l'IDE de arduino :

C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h: In member function 'void DynamixelClass::begin(long int, unsigned char, unsigned char)':
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h:76: error: 'void SoftwareSerial::setRX(uint8_t)' is private
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:128: error: within this context
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h:75: error: 'void SoftwareSerial::setTX(uint8_t)' is private
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:129: error: within this context
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h: In member function 'void DynamixelClass::begin(long int, unsigned char, unsigned char, unsigned char)':
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h:76: error: 'void SoftwareSerial::setRX(uint8_t)' is private
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:138: error: within this context
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\SoftwareSerial/SoftwareSerial.h:75: error: 'void SoftwareSerial::setTX(uint8_t)' is private
C:\Users\Admin.09-067\Documents\arduino-1.0\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:139: error: within this context

Où est l'erreur ?


salut

montre nous ton programme !

#6 basesim

basesim

    Membre

  • Membres
  • 13 messages

Posté 11 mai 2012 - 08:22

Ah oui, désolé c'est un oubli de ma part.
Alors c'est un des programmes qui venait en exemple :

#include <DynamixelSoftSerial.h>
#include <SoftwareSerial.h>

void setup(){
Dynamixel.begin(9600,2,3,4);  // Inicialize the servo at 1Mbps and Pin Control 2
delay(1000);
}

void loop(){

  Dynamixel.move(1,random(200,800));  // Move the Servo radomly from 200 to 800
  delay(1000);
  Dynamixel.moveSpeed(1,random(200,800),random(200,800));
  delay(2000);
  Dynamixel.setEndless(1,ON);
  Dynamixel.turn(1,RIGTH,1000);
  delay(3000);
  Dynamixel.turn(1,LEFT,1000);
  delay(3000);
  Dynamixel.setEndless(1,OFF);
  Dynamixel.ledStatus(1,ON);
  Dynamixel.moveRW(1,512);
  delay(1000);
  Dynamixel.action();
  Dynamixel.ledStatus(1,OFF);
 
delay(1000);

}


#7 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 11 mai 2012 - 08:50

Ah oui, désolé c'est un oubli de ma part.Alors c'est un des programmes qui venait en exemple :

#include <dynamixelsoftserial.h>#include <softwareserial.h>void setup(){Dynamixel.begin(9600,2,3,4);  // Inicialize the servo at 1Mbps and Pin Control 2delay(1000);}void loop(){  Dynamixel.move(1,random(200,800));  // Move the Servo radomly from 200 to 800  delay(1000);  Dynamixel.moveSpeed(1,random(200,800),random(200,800));  delay(2000);  Dynamixel.setEndless(1,ON);  Dynamixel.turn(1,RIGTH,1000);  delay(3000);  Dynamixel.turn(1,LEFT,1000);  delay(3000);  Dynamixel.setEndless(1,OFF);  Dynamixel.ledStatus(1,ON);  Dynamixel.moveRW(1,512);  delay(1000);  Dynamixel.action();  Dynamixel.ledStatus(1,OFF); delay(1000);}

<br><br>je dis juste comme le le comprends (qui n'est pas forcement le bon raisonnement! ^^ )<br><br>a mon avis il y as un souci entre la lib que tu utilise et l'arduino IDE version 1.0<br><br>prends une version plus ancienne de IDE arduino pour tester<br><br></softwareserial.h></dynamixelsoftserial.h>

Modifié par julkien, 11 mai 2012 - 08:52 .


#8 basesim

basesim

    Membre

  • Membres
  • 13 messages

Posté 11 mai 2012 - 09:09

C'est encore pire avec les versions plus ancienne.
La preuve :

C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp: In member function 'int DynamixelClass::read_error()':
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:103: error: 'class SoftwareSerial' has no member named 'available'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:108: error: 'class SoftwareSerial' has no member named 'available'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:110: error: 'class SoftwareSerial' has no member named 'peek'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp: In member function 'void DynamixelClass::begin(long int, unsigned char, unsigned char)':
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:128: error: 'class SoftwareSerial' has no member named 'setRX'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:129: error: 'class SoftwareSerial' has no member named 'setTX'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp: In member function 'void DynamixelClass::begin(long int, unsigned char, unsigned char, unsigned char)':
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:138: error: 'class SoftwareSerial' has no member named 'setRX'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:139: error: 'class SoftwareSerial' has no member named 'setTX'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp: In member function 'void DynamixelClass::end()':
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:148: error: 'class SoftwareSerial' has no member named 'end'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp: In member function 'int DynamixelClass::reset(unsigned char)':
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:156: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:157: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:158: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:159: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:160: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:161: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp: In member function 'int DynamixelClass::ping(unsigned char)':
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:173: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:174: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:175: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:176: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:177: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:178: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp: In member function 'int DynamixelClass::setID(unsigned char, unsigned char)':
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:190: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:191: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:192: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:193: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:194: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:195: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:196: error: 'class SoftwareSerial' has no member named 'write'
C:\Users\Admin.09-067\Downloads\arduino-0023\arduino-0023\libraries\DynamixelSoftSerial\DynamixelSoftSerial.cpp:197: error: 'class SoftwareSerial' has no member named 'write'

[et ainsi de suite, il y en a d'autres semblables]

#9 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 11 mai 2012 - 09:28

Bonjour,

Si j'ai bien compris tu veux communiquer de ton PC avec l'arduino grâce au câble qui sert à programmer la carte ?
Si c'est bien cela, pas besoin de librairie tu utilise la fonction "Serial", petit exemple :
const int PinBouton = 4;

void setup
{
  Serial.begin(9600);
}

void loop
{
  Bouton = digitalRead(PinBouton);
  if (Bouton == 1)
  {
    Serial.println("Bonjour");
  }
}

Tu envoi ton code, tu appui sur "Serial Monitor" en haut à droite dans le logiciel Arduino et quand tu appuis sur le bouton (qui est pour moi sur l'entrée digitale 4) et bien le message "Bonjour" apparaît. Et ça marche dans l'autre sens aussi tu peux envoyé des valeurs que tu auras tapé dans le "Serial Monitor" mais il faudrait chercher comment car je ne m'en souviens plus.

#10 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 11 mai 2012 - 10:10

Bonjour,

Si j'ai bien compris tu veux communiquer de ton PC avec l'arduino grâce au câble qui sert à programmer la carte ?
Si c'est bien cela, pas besoin de librairie tu utilise la fonction "Serial", petit exemple :

const int PinBouton = 4;

void setup
{
  Serial.begin(9600);
}

void loop
{
  Bouton = digitalRead(PinBouton);
  if (Bouton == 1)
  {
    Serial.println("Bonjour");
  }
}

Tu envoi ton code, tu appui sur "Serial Monitor" en haut à droite dans le logiciel Arduino et quand tu appuis sur le bouton (qui est pour moi sur l'entrée digitale 4) et bien le message "Bonjour" apparaît. Et ça marche dans l'autre sens aussi tu peux envoyé des valeurs que tu auras tapé dans le "Serial Monitor" mais il faudrait chercher comment car je ne m'en souviens plus.


non c'est pas ça il veut communiquer avec des servo (cela communique par serie )

#11 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 11 mai 2012 - 10:32

Je ne comprend pas ce qu'il veut faire alors. Je croyais qu'il voulait piloter son servo à partir de son PC

#12 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 11 mai 2012 - 11:06

Je ne comprend pas ce qu'il veut faire alors. Je croyais qu'il voulait piloter son servo à partir de son PC



oui c'est bien ça!^^ mais ces servo sont pilotable par port serie renseigne toi sur la ref (c'est des super servo!)

#13 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 11 mai 2012 - 11:19

A d'accord, je ne savais pas que tu pouvais directement les pilotés. Dans ce cas la je ne peux pas t'aider, je n'ai jamais utilisé

#14 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 11 mai 2012 - 12:04

je n'ai jamais utilisé



moi nonplus c'est ça qui est interréssant ! ^^

#15 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 11 mai 2012 - 12:14

Je viens de regardé le fichier .ZIP que fournissait RobotShop et il y a une librairie, peut être que c'est cela. Il faudrait regarder

#16 basesim

basesim

    Membre

  • Membres
  • 13 messages

Posté 11 mai 2012 - 04:32

Je veux pouvoir envoyer des données via l'ordinateur par le cable usb (serial virtuel)
et que ceux-ci soit traité par le arduino pour redistribué la bonne information au bon
servomoteur. Par contre, 2 de mes 4 servo fonctionne aussi en serial (AX-12).
Et lorsque j'utilise les port hardware serial de ma carte (rx,tx), je ne peux plus
communiquer avec mon arduino depuis mon ordinateur ( J'ai un arduino UNO rev3)

lestephanoi, j'ai testé la librairie dans le fichier zip et à première vue ce n'est
pas concluent : aucune réponse des servo.

Merci de vos réponses en tout cas,
On va finir par trouver une solution !

#17 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 11 mai 2012 - 06:34

Je veux pouvoir envoyer des données via l'ordinateur par le cable usb (serial virtuel)
et que ceux-ci soit traité par le arduino pour redistribué la bonne information au bon
servomoteur. Par contre, 2 de mes 4 servo fonctionne aussi en serial (AX-12).
Et lorsque j'utilise les port hardware serial de ma carte (rx,tx), je ne peux plus
communiquer avec mon arduino depuis mon ordinateur ( J'ai un arduino UNO rev3)

lestephanoi, j'ai testé la librairie dans le fichier zip et à première vue ce n'est
pas concluent : aucune réponse des servo.

Merci de vos réponses en tout cas,
On va finir par trouver une solution !


si cela peut te rassurer ne ce compila pas chez moi aussi

#18 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 14 mai 2012 - 08:32

si cela peut te rassurer ne ce compila pas chez moi aussi



tien regarde ce lien
le code me parrait plus comprehensible



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users