Mais j’aimerais que ma pince robotique soit télécommandée à distance. Juste pour qu’elle effectue sa tache grâce à une télécommande
Je me tourne vers vous pour avoir des renseignements :
- Quels matériels utiliser ? pour que la pince devienne télécommandée
Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir
Posté 02 janvier 2017 - 06:34
Oui exactement.
Pour le principe de la télécommande tu pourras faire un petit programme pour que le bouton A contrôle ta pince numéro 1 et le bouton B contrôle ta pince numéro 2 .
2 modes possible ,
1) Un appuis, ouvre ou ferme la pince qui reste ensuite dans cet état
2) Rester appuyer pour se mettre dans une position et relacher pour se mettre dans l'autre position.
2 boutons sur la télécommande : l'un met le signal de sortie à 1, l'autre met le signal de sortie à 0.
L'avantage de la carte clone Arduino que tu as toi même choisis c'est que tu pourras si tu le souhaites utiliser les espaces de connecteurs supplémentaires pour y souder/ connecter directement les servomoteurs.
Après si tu veux une carte plus petite tu as aussi la arduino nano.
Il te faudra aussi de quoi alimenter l'ensemble ...
Si je ne me trompe pas, en suivant ce tutoriel, les servomoteurs ont chacun 3 câbles un qui correspond au GND (le marron), l’autre au VCC (le rouge) et le dernier pour le Control (le orange).
Et si j’ai bien compris le marron je le connecte au GND de la carte arduino, le rouge au 5v et l’orange à un digital le 6 par exemple.
Etant un néophyte, je me demandais pour le deuxième servomoteur je le connecte au même endroit que le premier à l’exception du câble orange ?
Pour l'alimentation n'étant pour une utilisation très limitée je préfère l'option pile. Avec cet adaptateur si cela est possible et si une seule pile suffit.
Par contre pour connecter la télécommande et la pile sur la carte programmable j’utilise quels ports ?
Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir
Posté 02 janvier 2017 - 07:52
En effet tu as bien compris comment connecter les servomoteurs . ( masse et 5V sont commun )
Par contre dans ces cas là avec l'arduino uno je recommande plutôt cet adaptateur pour l'alimenter. C'est directement adapté.
Et je recommande d'utiliser des piles 9V rechargeable ... ( pas encore sur le shop mais bientôt )
Ensuite je ne sais pas si le 5V du régulateur de la arduino en direct va aimer alimenter les deux servo.
1 je suis sûr que ça passe ... Deux c'est peut être trop, peut être pas ... à essayer ... ça dépend aussi de si ça serre quelque chose ou rien ...
Il faudrait mesurer le courant consommé pour être sûr ...
Pour la télécommande tu auras Masse 5V signal et un qui sert pas tu pourras relier le signal sur le port que tu veux.
Il faudra juste lire le port adéquate choisis avec un " digitalRead() "
Concernant l'utilisation de ces pinces.
En gros, je vais accrocher ces deux pinces à un support de toile de fond. Elles serviront à tenir un drap assez fin afin de cacher le dessin qui se trouve derrière.
Donc je pense pas que le tissu soit extrêmement dur à tenir.
Dans l’hypothèse, ou il ne support pas deux servo.
Quelle serait alternative ? Une carte programmable par servo ?
Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir
Posté 02 janvier 2017 - 10:14
Effectivement j'avais pas vu l'adaptateur. Merci.
Je pense qu'il faut que je retravail un peu l'organisation de la boutique ...
Concernant l'utilisation de ces pinces.
En gros, je vais accrocher ces deux pinces à un support de toile de fond. Elles serviront à tenir un drap assez fin afin de cacher le dessin qui se trouve derrière.
Donc je pense pas que le tissu soit extrêmement dur à tenir.
En effet vu ta problématique ça ne devrai pas poser de problème je pense mais je ne peux pas le garantir à 100% .
Dans l’hypothèse, ou il ne support pas deux servo.
Quelle serait alternative ? Une carte programmable par servo ?
L'alternative serait d'alimenter le système autrement .
Prendre un powerbank par exemple et d'alimenter les servo par le powerbank au lieu de la pile ...
Il n'y a pas encore de powerbank sur le shop mais bientôt il devrait y en avoir...
Je vais commander les pièces et je viendrais surement reposer des questions une fois que j'aurais tenté de faire fonctionner ces pinces, car je pense pas réussir du premier coup, cela serait trop beau...
J'ai cherché des tutoriels pour la télécommande et je suis tombé sur cette image. Elle ressemble énormément à votre télécommande avec deux boutons. Mais d'après l'image il doit y avoir 4 fils. Je pense que je suis un peu perdu avec cette télécommande. Je n'arrive pas à comprendre ou je dois les brancher exactement sur la carte...
J'ai enfin eu le temps de monter le système.
J'ai utilisé ce code pour tester mon montage (afin de voir si mes servo-moteur et mes pinces fonctionnent bien)
:
#include <Servo.h>
Servo myservo1;
Servo myservo2;
int pos = 0;
void setup()
{
myservo1.attach(6);
myservo2.attach(7);
}
void loop()
{
for(pos = 0; pos < 180; pos += 1)
{
myservo1.write(pos);
delay(15);
}
for(pos = 180; pos>=1; pos-=1)
{
myservo1.write(pos);
delay(15);
}
}
Et pour le moment cela marche plutôt pas mal. Il me reste plus qu'a intégrer la télécommande.
Par contre je ne sais pas comment la brancher sur la carte ni comment l’intégrer dans le code... Pouvez vous de nouveau m'aider ?
La télécommande provient de votre site (elle a 4 câbles 1 noir, 1 rouge, 1 vert et 1 blanc).
Branche le fil noir sur la masse, le fil rouge sur le 5V et les deux autres fils sur deux pin de ta arduino =)
Avec un digitalRead tu pourras lire les états des boutons sur la télécommande =)
Je vais te proposer un programme qui fonctionne pour ouvrir/fermer ta pince !
Mais d'abord, voyons voir ce que tu as fait :
Le début de ton programme est juste, par contre je pense qu'il y a des erreurs dans ta fonction loop.
for(pos1 = 0; pos1 < 180; pos1 += 180)
Quand tu fais pos1 +=180, la variable pos1 est incrémentée de 180 en 180. Mais ta boucle se termine lorsque pos1<180, donc ta boucle ne fonctionne que pour pos1=0. Je te propose donc de ne pas mettre de boucle à moins que tu changes la valeur de l'incrémentation.
for(pos1 = 180; pos1>=180; pos1-=180)
Dans ta deuxième boucle du décrémente pos1 de 180, mais ta condition d'arrêt est "pos1>=180", donc ta deuxième boucle ne va jamais s’arrêter.
Si tu veux aller de la position 180 à 0 : for(pos1=180, pos1=0, pos1-=180).
Par contre après vérification l'émetteur récepteur radio que tu as, ne fonctionne pas exactement comme ce que Mike a dit. Sur les deux fils de signal (blanc et vert) un seul est utile : le vert est une alimentation 5V et le blanc le fil qui permet de connaitre la position des boutons.
J'illustre ça avec quelques images (c'est plus facile )
Là c'est le signal lorsque le bouton A de l'émetteur est appuyé (la courbe jaune c'est le fil blanc et la courbe bleue c'est le fil vert (trop de couleurs :kez_11: ))
La courbe 1 est à 0V et la courbe 2 est à 5V.
Maintenant, c'est le bouton B qui est enfoncé : la courbe 1 est à 600mV et la courbe 2 est à 5V.
Bref, un seul signal change. Pour ton application sert toi uniquement du fil blanc.
Une petite remarque en plus, le signal du récepteur est de 600mV lorsque le bouton B est enclenché, c'est une tension trop faible pour qu'elle soit lue comme un état haut grâce au "digitalRead" d'arduino. Il faut que tu branche le fil sur une entrée analogique (A0 à A5) et que tu utilise un "analogRead".
#include <Servo.h>
#define bouton A2 //pin du siganl du récepteur radio
Servo myservo; // creation d'un objet servo pour le controler
void setup() {
pinMode(bouton,INPUT);
pinMode(3,OUTPUT);
myservo.attach(3); // le pin 3 est attribué au servo
myservo.write(145);
Serial.begin(9600);
}
void loop() {
if (analogRead(bouton)>0){ //lecture de la valeur du signal du récepteur
myservo.write(10); //position pince ouverte
Serial.println("HIGH");
}
if (analogRead(bouton)==0){
myservo.write(145); //position pince fermée
Serial.println("LOW");
}
}
Et le résultat en vidéo :
Et voilà ! J'espère que mes explications étaient assez claires, hésites pas à continuer de partager ton avancée .
Merci pour toutes tes explications c'est très clair et extrêmement bien expliqué.
J'ai pu comprendre mes erreurs. J'avais effectivement une boucle infini ^^'
Merci aussi pour la télécommande j'aurais jamais trouvé...
Je vais maintenant souder mes fils et faire le test
Et ensuite je ferais le tutoriel, comme dit au dessus.