
Connexion de 2 AX-12A à un Arduino Uno
#1
Posté 10 mai 2012 - 05:08
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!
#3
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
Posté 11 mai 2012 - 07:46
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
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
Posté 11 mai 2012 - 08:22
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
Posté 11 mai 2012 - 08:50
<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>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);}
Modifié par julkien, 11 mai 2012 - 08:52 .
#8
Posté 11 mai 2012 - 09:09
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
Posté 11 mai 2012 - 09:28
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
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 )
#16
Posté 11 mai 2012 - 04:32
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
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
Répondre à ce sujet

0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users