(→L'expérience) |
(→L'expérience) |
||
Ligne 23 : | Ligne 23 : | ||
==='''La réalisation'''=== | ==='''La réalisation'''=== | ||
Mettre le code suivant dans l'Arduino : | Mettre le code suivant dans l'Arduino : | ||
- | <pre>// Contrôler la position de | + | <pre>// Contrôler la position de servomoteurs avec des potentiomètres (résistance variable) |
#include <Servo.h> | #include <Servo.h> | ||
Ligne 31 : | Ligne 31 : | ||
Servo myservo3; // create servo object to control a servo | Servo myservo3; // create servo object to control a servo | ||
- | int potpin1 = 0; // | + | int potpin1 = 0; // borne analogique pour connecter le potentiomètre 1 |
- | int potpin2 = 1; // | + | int potpin2 = 1; // borne analogique pour connecter le potentiomètre 2 |
- | int potpin3 = 2; // | + | int potpin3 = 2; // borne analogique pour connecter le potentiomètre 3 |
- | int val1; // variable | + | int val1; // variable pour stocker la valeur du potentiomètre 1 |
- | int val2; // variable | + | int val2; // variable pour stocker la valeur du potentiomètre 2 |
- | int val3; // variable | + | int val3; // variable pour stocker la valeur du potentiomètre 3 |
void setup() | void setup() | ||
{ | { | ||
- | myservo1.attach(9); // | + | myservo1.attach(9); // brancher le servomoteurs 1 sur l'entrée 9 |
- | myservo2.attach(10); // | + | myservo2.attach(10); // brancher le servomoteurs 2 sur l'entrée 10 |
- | myservo3.attach(11); // | + | myservo3.attach(11); // brancher le servomoteurs 3 sur l'entrée 11 |
} | } | ||
void loop() | void loop() | ||
{ | { | ||
- | + | val1 = analogRead(potpin1); // lire la valeur du potentiomètre 1 (valeur entre 0 et 1023) | |
- | val1 = analogRead(potpin1); | + | val1 = map(val1, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur (valeur entre 0 et 180) |
- | val1 = map(val1, 0, 1023, 0, 179); | + | val2 = analogRead(potpin2); // lire la valeur du potentiomètre 2 (valeur entre 0 et 1023) |
- | val2 = analogRead(potpin2); | + | val2 = map(val2, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur (valeur entre 0 et 180) |
- | val2 = map(val2, 0, 1023, 0, 179); | + | val3 = analogRead(potpin3); // lire la valeur du potentiomètre 3 (valeur entre 0 et 1023) |
- | val3 = analogRead(potpin3); | + | val3 = map(val3, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur (valeur entre 0 et 180) |
- | val3 = map(val3, 0, 1023, 0, 179); | + | myservo1.write(val1); // mettre le servomoteur 1 dans la bonne position |
- | myservo1.write(val1); | + | myservo2.write(val2); // mettre le servomoteur 2 dans la bonne position |
- | myservo2.write(val2); | + | myservo3.write(val3); // mettre le servomoteur 3 dans la bonne position |
- | myservo3.write(val3); | + | delay(5); // attendre que les servomoteurs aillent dans leur position |
- | delay(5); // | + | |
} </pre> | } </pre> | ||
==='''La manipulation'''=== | ==='''La manipulation'''=== | ||
- | 1) tourner un des potentiomètre dans un sens, le | + | 1) tourner un des potentiomètre dans un sens, le servomoteur correspondant fait bouger le bras ! |
- | 2) tourner le même | + | 2) tourner le même potentiomètre dans l'autre sens, le servomoteur correspondant fait bouger le bras dans l'autre sens ! |
==='''Pour aller plus loin'''=== | ==='''Pour aller plus loin'''=== | ||
- | Il est possible de rajouter autant de | + | Il est possible de rajouter autant de servomoteurs que l'on veut en ajustant le code à mettre dans l'arduino. |
- | Il est également possible de piloter autre chose que des | + | Il est également possible de piloter autre chose que des servomoteurs, comme un moteur continu par exemple. |
==='''Que voit-on ?=== | ==='''Que voit-on ?=== |
Sommaire |
Si vous aussi vous avez toujours eu envie de partir à la conquête du monde à la tête de votre propre armée de robots, il faut commencer par les bases. Voici comment fabriquer un bras robotisé simple à l'aide d'un Arduino !
Mettre le code suivant dans l'Arduino :
// Contrôler la position de servomoteurs avec des potentiomètres (résistance variable) #include <Servo.h> Servo myservo1; // create servo object to control a servo Servo myservo2; // create servo object to control a servo Servo myservo3; // create servo object to control a servo int potpin1 = 0; // borne analogique pour connecter le potentiomètre 1 int potpin2 = 1; // borne analogique pour connecter le potentiomètre 2 int potpin3 = 2; // borne analogique pour connecter le potentiomètre 3 int val1; // variable pour stocker la valeur du potentiomètre 1 int val2; // variable pour stocker la valeur du potentiomètre 2 int val3; // variable pour stocker la valeur du potentiomètre 3 void setup() { myservo1.attach(9); // brancher le servomoteurs 1 sur l'entrée 9 myservo2.attach(10); // brancher le servomoteurs 2 sur l'entrée 10 myservo3.attach(11); // brancher le servomoteurs 3 sur l'entrée 11 } void loop() { val1 = analogRead(potpin1); // lire la valeur du potentiomètre 1 (valeur entre 0 et 1023) val1 = map(val1, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur (valeur entre 0 et 180) val2 = analogRead(potpin2); // lire la valeur du potentiomètre 2 (valeur entre 0 et 1023) val2 = map(val2, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur (valeur entre 0 et 180) val3 = analogRead(potpin3); // lire la valeur du potentiomètre 3 (valeur entre 0 et 1023) val3 = map(val3, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur (valeur entre 0 et 180) myservo1.write(val1); // mettre le servomoteur 1 dans la bonne position myservo2.write(val2); // mettre le servomoteur 2 dans la bonne position myservo3.write(val3); // mettre le servomoteur 3 dans la bonne position delay(5); // attendre que les servomoteurs aillent dans leur position }
1) tourner un des potentiomètre dans un sens, le servomoteur correspondant fait bouger le bras ! 2) tourner le même potentiomètre dans l'autre sens, le servomoteur correspondant fait bouger le bras dans l'autre sens !
Il est possible de rajouter autant de servomoteurs que l'on veut en ajustant le code à mettre dans l'arduino. Il est également possible de piloter autre chose que des servomoteurs, comme un moteur continu par exemple.
On obtient un petit bras robotisé où chaque articulation est pilotée par un potentiomètre.
Quand on tourne un potentiomètre, on envoie une information à l'Arduino. Ce dernier utilise le code que l'on lui a envoyé via le câble USB pour traduire cette information en commande pour le servo-moteur. Le signal envoyé par le potentiomètre est un signal analogique (continu, c'est à dire constitué d'une infinité de valeurs). Le signal envoyé au servo-moteur est un signal numérique (discret, c'est à dire constitué d'un nombre limité de valeurs).
Ici je mets les questions soulevées par l'expérience, qui n'ont pas trouvé de réponses !!
Développons les concepts scientifiques associés. Ne pas hésiter à faire des liens avec Wikipédia.
Indiquer ici les expériences de Wikidébrouillard.
Autres expériences avec le même concept, recherche sur internet (indiquer les liens).
Robotique industrielle, exploration spatiale
Indiquer ici des lieux où tout le matériel nécessaire pour réaliser cette expérience est disponible.
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique