05/02/2017

Arduino contrôler un servomoteur avec un capteur de distance


[[ une nouvelle version de cet article est disponible ici : http://smag0.blogspot.com/2017/06/arduino-barriere-lego.html ]]


Matériel :
- une carte Arduino
- un servomoteur (noir sur grd, rouge sur 5V, jaune sur pin 9)
- un capteur Ultrason HC-SR04 (noir sur grd, rouge sur 5V, trig sur pin 12, echo sur pin 11)

/* Utilisation du capteur Ultrason HC-SR04 pour contrôler un servomoteur*/
#include <Servo.h>
Servo myservo;  // create servo object to control a servo

// définition des broches utilisées 
int servo = 9;
int trig = 12; 
int echo = 11; 
long lecture_echo; 
long cm;
int val;
long lastCm = 0;

void setup() 
  myservo.attach(servo); 
  pinMode(trig, OUTPUT); 
  digitalWrite(trig, LOW); 
  pinMode(echo, INPUT); 
  Serial.begin(9600); 
}

void loop() 
  digitalWrite(trig, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trig, LOW); 
  lecture_echo = pulseIn(echo, HIGH); 
  cm = lecture_echo / 58; 
   int diff = int(abs(lastCm - cm)); // detection de grand saut
 if(diff < 30){ // seulement si diff est faible
  val = min(cm,179);
  if( val< 179){

   Serial.print(diff);
   Serial.print(" : ");
   Serial.println(val);
   myservo.write(val); 
 }
 }

  delay(10); 
      lastCm = cm; 
}