[conseil] soucis de programme (trop long ?) pour detection d'obstacle (sur 360°)

Benoit1121:
@Osaka

Ma question est : Est ce que je dois écrire ceci pour chaque pin (pour la lecture de la pin3, la lecture de la pin 5 ... la lecture de la pin11) ? ou cette partie me permet de venir lire toutes mes pin en meme temps ?

C'est à dire si ce programme permettant le clignotement de chaque LED doit être écrit pour chacune des LED ou non

Benoit

Je vois qu'il y a une grosse confusion avec les fonctions, pourquoi réécrire la fonction pour chaque pin différente alors qu'un paramètre est prévu pour.
Les paramètres sont prévu pour recevoir des valeurs donc pour ta fonction nous lui transmettrons la valeur de 'i' qui correspond à l'entrée analogique et au différentes valeurs correspondantes dans les tableaux, c'est la même fonction qui est appelé à chaque fois avec une valeurs en paramètre différent à chaque appel.
Les fonctions n'auraient pas grand intérêt si on doit les réécrire autemps de fois que le nombre de pin l'arduino.

lecture_val(i); //j'appel la fonction en lui donnant la valeur de 'i' en paramètre
void lecture_val(byte pinVal) //la fonction appelée prendra en paramètre la valeur transmise lors de l'appel donc 'i'

Un petit teste pour comprendre ce qui ce passe avec affichage dans le serial monitor.

byte i = 0;
byte tabPin[6] = {3,5,6,9,10,11}; //tableau de correspondance pin digitale en sortie
byte tabVal[6] = {0}; //tableau des valeurs correspondant au pin analogie 0,1,2,3,4,5,6
int tabInterval[6] = {0}; //tableau des intervalle correspondant au pin analogie 0,1,2,3,4,5,6
void setup()
{
    Serial.begin(9600);
    delay(1000);
}

void loop()
{
  if(i < 6) //si i < 6
  {
    Serial.print("i = ");
    Serial.println(i, DEC);
    lecture_val(i); //appel de la fonction avec en paramètre la valeur de i
    i++; 
  }
  else 
  {
     i = 0;
     delay(5000); //une petite pause pour laisser le temps de lire sur le monitor
  }
  Serial.println();
}

void lecture_val(byte pinVal) //fonction avec en paramètre le numéro de la pin analogique transmise via 'i' lors de l'appel de la fonction
{
  Serial.println("debut fonction lecture_val");
  Serial.print("pinVal : ");
  Serial.println(pinVal, DEC); //On affiche la valeur de pinVal pour chaque appel de la fonction

  tabVal[pinVal] = analogRead(pinVal); 
  Serial.print("Valeur relevee : ");
  Serial.println(tabVal[pinVal], DEC); // on affiche la valeur relevée
  tabInterval[pinVal] = tabVal[pinVal] * 2; 
  Serial.print("interval : ");
  Serial.println(tabInterval[pinVal] ,DEC); // on affiche l'intervalle calculé
  Serial.println("fin fonction lecture_val");
}

Entre () il y a une petite correction à faire dans mon prog, il y 6 entrées analogique et non 5 :sweat_smile: