Expliquez moi ce code SVP...

Salut ! je suis dans une merde pas possible genre vraiment la.. :o et j'ai jamais autant eu besoins de vous..
En gros mon prof d'info du lycée veut que je lui explique le code d'un montage qui est le suivant :

Un détecteur a ultrason (HC-SR04) réagit a l'approche d'un obstacle a quelques centimètres, et actionne un servo-moteur (MOOKLIN sg90), sur un Arduino UNO. voici le code :

#include <Servo.h>   //servo library
Servo servo;     
int trigPin = 5;    
int echoPin = 6;   
int servoPin = 7;
int led= 10;
long duration, dist, average;   
long aver[3];   //array for average


void setup() {       
   Serial.begin(9600);
   servo.attach(servoPin);  
   pinMode(trigPin, OUTPUT);  
   pinMode(echoPin, INPUT);  
   servo.write(0);         //close cap on power on
   delay(100);
   servo.detach(); 
} 

void measure() {  
digitalWrite(10,HIGH);
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(15);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
dist = (duration/2) / 29.1;    //obtain distance
}
void loop() { 
 for (int i=0;i<=2;i++) {   //average distance
   measure();               
  aver[i]=dist;            
   delay(10);              //delay between measurements
 }
dist=(aver[0]+aver[1]+aver[2])/3;    

if ( dist<50 ) {
//Change distance as per your need
servo.attach(servoPin);
 delay(1);
servo.write(0);  
delay(3000);       
servo.write(150);    
delay(1000);
servo.detach();      
}
Serial.print(dist);
}

Voila , mdr si il y a un ange parmi vous qui peut m'aider en m'expliquant les balise, le but des lignes, ou même me faire un schémas, ça serait parfait. Merci a tous ceux qui répondrons :wink:

Edit jfs : balises code

Commence par faire ce qu'on te demande : faire supprimer les messages en double, respecter les règles du forum.
Aucune réponse tant que ce n'est pas fait.

Précision si tu veux de l'aide c'est le bon forum, si tu veux qu'on fasse ton travail il vaut mieux chercher ailleurs.
Si ton prof te demande d'expliquer ces quelques lignes c'est qu'il veut s'assurer que tu as travaillé sur les cours qu'il t'a dispensé.

NB : à 99,99 % ton prof est inscrit sur ce forum et y restera silencieux.
Donc si tu te fais mâcher le travail il le saura.

Normalement, ton prof est là pour faire en sorte que tu apprennes quelque chose.
Il a un objectif pédagogique.

Dans l'hypothèse bassement matérialiste où ton objectif prioritaire est d'avoir une bonne note (et non d'apprendre quelque chose), il vaut mieux avoir les idées claires sur ce que le prof attend de toi.

Donc à ton avis, quelle est objectif visé ?

a) que tu améliores ta capacité à récupérer des informations sur le net
b) que tu améliores ta capacité à comprendre un programme par toi-même

Même si dans certaines filières le a) est prédominant sur le b), là j'ai quand même l'impression qu'on est sur le b)

Donc commence par :

  1. expliquer ce que tu comprends
  2. lister ce que tu ne comprends pas en donnant des hypothèses d'explication

Et là tu trouveras peut-être quelqu'un qui aura la bienveillance de t'aider à combler les trous.

Allez on va l’encourager

La première ligne est déjà documentée; je commente généreusement la deuxième

Servo servo;     // crée une instance de la classe Servo appelée servo

Voilà le plus dur est fait, le reste c’est super simple. On vous écoute

:slight_smile:

c'est utile que echopin soit déclaré dans le setup et dans la fonction measure ?
pinMode(echoPin, INPUT);

@bricoleau : si tu maitrises le "a)" le "b)" arrive tout seul.....

des tutos arduino + hcsr04 çà pullule sur le net avec les schémas tout faits

C'est le problème des tutos, pas toujours documentés, le code n'est pas tout le temps commenté ou alors pas de bol c'est commenté en anglais et le français fait quand même un gros blocage sur l'anglais.
Et vu que le code présenté au #1 est commenté en anglais, je ne prend pas un gros risque en avançant qu'il a dû être copié sur le net sans chercher à comprendre.

Si j'étais le prof, je demanderais "pourquoi on attache et on détache le servo à chaque itération de loop()?"

fdufnews:
Si j'étais le prof, je demanderais "pourquoi on attache et on détache le servo à chaque itération de loop()?"

et aussi pourquoi a-t-on besoin de passer echoPin en INPUT à chaque fois dans la loop

J'hésite entre le rire et la pitié ...