Présentation et Apprentissage l'Arduino Uno et des servo-moteurs La carte Arduino uno peut gérer 8 servos-moteurs. |
// Sweep // by BARRAGAN <http://barraganstudio.com> // This example code is in the public domain. #include <Servo.h> Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created int pos = 0; // variable to store the servo position void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } } |
#include <Servo.h> Servo myservo; // crée l'objet servomoteur pour contrôler le servomoteur int pos = 0; // variable pour sauvegarder la position du servomoteur int etat = 0; // variable permettant de connaître la position du servomoteur //création des variables de gestion du capteur int trig = 12; int echo = 11; long lecture_echo; long cm; void setup() { pinMode(trig, OUTPUT); //gestion du capteur digitalWrite(trig, LOW); pinMode(echo, INPUT); myservo.attach(9); // On précise que le servomoteur utilise la broche 9 } void loop() { //récupération de la distance séparant un obstacle du capteur digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); lecture_echo = pulseIn(echo, HIGH); cm = lecture_echo / 58; if((cm>25)&&!(etat==0)) { // si cette distance est plus grand que 25 cm et que le servomoteur n'est pas dans sa position 0 myservo.write(0); etat = 0; delay(1000); //On le met à la position 0 degrés } else if((cm>20)&&(cm<=25)&&!(etat==45)) { //si la distance est entre 20 et 25 cm et que le servomoteur n'est pas en position 45 degrés etat = 45; for(pos = 0; pos < 45; pos += 1) { myservo.write(pos); delay(15); } //on le met en position 45 degrés delay(1000); } else if((cm>15)&&(cm<=20)&&!(etat==90)) { //si la distance est entre 15 et 20 cm et que le servomoteur n'est pas à 90 degrés etat = 90; for(pos = 45; pos < 90; pos += 1) { myservo.write(pos); delay(15); } //On le met à 90 degrés delay(1000); } else if((cm>10)&&(cm<=15)&&!(etat==135)) { //Si la distance est entre 10 et 15 cm et que le servomoteur n'est pas à 135 degrés etat = 135; for(pos = 90; pos < 135; pos += 1) { myservo.write(pos); delay(15); } //On le met à 135 degrés delay(1000); } else if((cm<=10)&&!(etat==180)) { //Si la distance est inférieur à 10 cm et que le servomoteur n'est pas 180 degrés etat = 180; for(pos = 135; pos < 180; pos += 1) { myservo.write(pos); delay(15); } //On le met à 180 degrés delay(1000); } delay(1000); } |