Outils pour utilisateurs

Outils du site


wiki:ateliers:arduino:1

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
wiki:ateliers:arduino:1 [2018/02/21 14:54]
antoinem
wiki:ateliers:arduino:1 [2018/02/21 15:35] (Version actuelle)
antoinem
Ligne 9: Ligne 9:
 1*Arduino (UNO/Leonardo/Mega) 1*Arduino (UNO/Leonardo/Mega)
  
-2*Servomoteurs (type FS5115M)+2*Servomoteurs (type FS5115M) avec une course de 180°
  
 L'important si vous utilisez vos propres servos est d'avoir un couple suffisant pour manœuvrer votre bras et de l'alimenter correctement. L'important si vous utilisez vos propres servos est d'avoir un couple suffisant pour manœuvrer votre bras et de l'alimenter correctement.
Ligne 15: Ligne 15:
 1*Breadboard 1*Breadboard
  
-La structure du bras : +La structure du bras que j'utilise en CP peuplier 3mm:
- +
  
 +Vous pouvez refaire le votre à condition de ne pas dépasser le couple max de vos servos.
  
 ===== Le montage ===== ===== Le montage =====
Ligne 24: Ligne 23:
 Nous ne pouvons pas alimenter les servomoteurs en les branchant à la sortie 5V de l'arduino car ils utilisent trop de courant. Nous les alimentons donc avec une source d'alimentation indépendante, comme une alimentation d'atelier.   Nous ne pouvons pas alimenter les servomoteurs en les branchant à la sortie 5V de l'arduino car ils utilisent trop de courant. Nous les alimentons donc avec une source d'alimentation indépendante, comme une alimentation d'atelier.  
 N'oubliez pas de relier les masses entre elles:  borne négative de l'alimentation reliée à une des pins GND de l'Arduino. N'oubliez pas de relier les masses entre elles:  borne négative de l'alimentation reliée à une des pins GND de l'Arduino.
 +
 +===== Code =====
 +
 +Voici un code pour tester votre montage : 
 +
 +<code=cpp>
 +/* Code inspiré de celui proposé par le blog ElectroniqueEnAmateur */
 +
 +#include <Servo.h> //Attention : ne pas oublier d'inclure cette bibliothèque qui permet de controler les servomoteurs
 +
 +
 +  Servo myservo1, myservo2;//On créer nos objets servomoteurs
 +  String readString, servo1Str, servo2Str;
 +  int posCible1, posCible2; //PosCiblei sera la position ciblée par le servomoteur (de 0° à 180°)
 +
 +  
 +void setup() 
 +{
 +  Serial.begin(9600);
 +  myservo1.attach(9); //On attache nos Servos (fil jaune) aux PINs concernées (ici 9 et 10)
 +  myservo2.attach(10);
 +  Serial.println("Veuillez entrer un nombre de 6 chiffres.");
 +  Serial.println("Chaque groupe de 3 chiffres represente un nombre entre 0 et 180 degres, ce sera la position prises par nos servos.");
 +}
 +
 +void loop() 
 +{
 +  boolean fini = false ;//variable servant à savoir si nos servos ont fini le mouvement demandé
 +  int pos1, pos2;
 +
 +  while (Serial.available()) //Boucle pour récupérer nos entrées claviers
 +  {
 +    delay(1);  
 +    if (Serial.available() >0) 
 +    {
 +      char c = Serial.read();
 +      readString += c;
 +    } 
 +  }
 +
 +  if (readString.length() == 6)
 +  {
 +
 +    servo1Str = readString.substring(0, 3); 
 +    servo2Str = readString.substring(3, 6);
 +    
 +    Serial.println("Position demandee pour chaque servo");
 +
 +    Serial.print("Servo 1:  ");
 +    Serial.print(servo1Str);
 +    Serial.print(" ,  Servo 2:  ");
 +    Serial.print(servo2Str);
 +
 +
 +    char carray1[5];  
 +    servo1Str.toCharArray(carray1, sizeof(carray1));//on copie servo1Str dans un buffer
 +    posCible1 = atoi(carray1); //On convertit se buffer en int avec la fonction atoi()
 +
 +    char carray2[5];
 +    servo2Str.toCharArray(carray2, sizeof(carray2));
 +    posCible2 = atoi(carray2); 
 +
 +
 +    while (!fini) 
 +    {
 +      pos1 = myservo1.read();//read() nous permet de connaitre la position actuelle du servo
 +      pos2 = myservo2.read();
 +
 +
 +      if (pos1 < posCible1){
 +        myservo1.write(pos1 + 1);//write() définit la position à prendre par le servo, on incrémente de 1 pour pouvoir controler la vitesse
 +      }
 +      if (pos1 > posCible1){
 +        myservo1.write(pos1 - 1);       
 +      }
 +
 +      if (pos2 < posCible2){
 +        myservo2.write(pos2 + 1);       
 +      }
 +      if (pos2 > posCible2){
 +        myservo2.write(pos2 - 1);       
 +      }
 +
 +
 +      fini = ((pos1 == posCible1) && (pos2 == posCible2));
 +
 +      delay(15); // pour limiter la vitesse
 +    }  
 +    
 +    
 +    Serial.println("Position finale des servos:");
 +    Serial.print("Servo 1:  ");
 +    Serial.print(myservo1.read());
 +    Serial.print(" ,  Servo 2  : ");
 +    Serial.print(myservo2.read());
 +    
 +    readString="";
 +  } 
 +}
 +</code>
  
wiki/ateliers/arduino/1.1519224863.txt.gz · Dernière modification: 2018/02/21 14:54 de antoinem