Version 1.00
Mise à jour le 27/08/2016
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
/* * * * *RedOhm * * *Programme pour piloter separement chaque moteur du support *trois axes * *le 27/08/2016 * H-Mazelin */ // Cette librairie permet à une carte Arduino de contrôler des servomoteurs #include <Servo.h> // Crée un objet de type "Servo" pour la rotation de la base, nommé -> servobase Servo servobase; // Crée un objet de type "Servo" pour l'elevation du bras, nommé -> servobras Servo servobras; // Crée un objet de type "Servo" pour la rotation de la tete, nommé -> servotete Servo servotete; // broche sur lequel est branche le potentiometre servant a piloter le servobase int brochepotar_de_position_servobase=0; // variable contenant la valeur du potentiometre pour le servobase int valeur_potar_position_du_servobase; // broche sur lequel est branche le potentiometre servant a piloter le servobras int brochepotar_de_position_servobras=2; // variable contenant la valeur du potentiometre pour le servobras int valeur_potar_position_du_servobras; // broche sur lequel est branche le potentiometre servant a piloter le servotete int brochepotar_de_position_servotete=4; // variable contenant la valeur du potentiometre pour le servotete int valeur_potar_position_du_servotete; /* * Un programme Arduino doit impérativement contenir cette fonction * Elle ne sera exécuter une seule fois au démarrage du microcontroleur * Elle sert à configurer globalement les entrées sorties * */ void setup() { // initialisation de la connexion série // IMPORTANT : la fenêtre terminal côté PC doit être réglée sur la même valeur Serial.begin(9600); // associe le servomoteur servobase a la broche 3 servobase.attach(3); // associe le servomoteur servobras a la broche 4 servobras.attach(4); // associe le servomoteur servotete a la broche 5 servotete.attach(5); Serial.println("**********************************"); Serial.println("* *"); Serial.println("*support 3 axes *"); Serial.println("* operationnel *"); Serial.println("* *"); Serial.println("**********************************"); Serial.println(" "); //pause presentation delay (5000); } // Le programme principal s’exécute par une boucle infinie appelée Loop () void loop() { /* * * traitement pour la position de la base */ // lecture de la valeur du potentiomètre (valeur entre 0 et 1023) valeur_potar_position_du_servobase=analogRead( brochepotar_de_position_servobase); // mise a l'échelle (valeur entre 5 et 180) // Ré-étalonne un nombre d'une fourchette de valeur vers une autre fourchette. // Ainsi, une valeur basse source sera étalonnée en une valeur basse de destination valeur_potar_position_du_servobase=map(valeur_potar_position_du_servobase,0,1023,5,180); // définit la position d'asservissement du servomoteur // en fonction de la valeur à l'échelle servobase.write(valeur_potar_position_du_servobase); // affiche le texte d'information sans retour a la ligne Serial.print("position actuelle de la base -> "); // affiche la valeur de la position de la base avec retour a la ligne Serial.println(valeur_potar_position_du_servobase); // Réalise une pause dans l'exécution du programme pour une durée // de 20 millisecondes // permettant au servomteur d'atteindre sa position delay(20); /* * * traitement pour la position du bras */ // lecture de la valeur du potentiomètre (valeur entre 0 et 1023) valeur_potar_position_du_servobras=analogRead(brochepotar_de_position_servobras); // mise a l'échelle (valeur entre 5 et 180) // Ré-étalonne un nombre d'une fourchette de valeur vers une autre fourchette. // Ainsi, une valeur basse source sera étalonnée en une valeur basse de destination valeur_potar_position_du_servobras=map(valeur_potar_position_du_servobras,0,1023,54,120); // définit la position d'asservissement du servomoteur // en fonction de la valeur à l'échelle servobras.write(valeur_potar_position_du_servobras); // affiche le texte d'information sans retour a la ligne Serial.print("position actuelle du bras -> "); // affiche la valeur de la position du bras avec retour a la ligne Serial.println(valeur_potar_position_du_servobras); // Réalise une pause dans l'exécution du programme pour une durée // de 20 millisecondes // permettant au servomteur d'atteindre sa position delay(20); /* * * traitement pour la position de la tete */ // lecture de la valeur du potentiomètre (valeur entre 0 et 1023) valeur_potar_position_du_servotete=analogRead(brochepotar_de_position_servotete); // mise a l'échelle (valeur entre 5 et 180) // Ré-étalonne un nombre d'une fourchette de valeur vers une autre fourchette. // Ainsi, une valeur basse source sera étalonnée en une valeur basse de destination valeur_potar_position_du_servotete=map( valeur_potar_position_du_servotete,0,1023,5,180); // définit la position d'asservissement du servomoteur // en fonction de la valeur à l'échelle servotete.write( valeur_potar_position_du_servotete); // affiche le texte d'information sans retour a la ligne Serial.print("position actuelle de la tete -> "); // affiche la valeur de la position de la tete avec retour a la ligne Serial.println( valeur_potar_position_du_servotete); // Réalise une pause dans l'exécution du programme pour une durée // de 20 millisecondes // permettant au servomteur d'atteindre sa position delay(20); } |