Adafruit_VL53L0X problème de pointeur

Bonsoir,
J'utilise un capteur VL53L0X. J'arrive à le faire fonctionner, mais je voudrais créer une fonction qui puisse recevoir en paramètre le capteur à mesurer pour retourner la valeur mesurée en integer.

J'ai regardé le modèle Adafruit_VL53L0X.ino, et je pense qu'il faut utiliser les pointeurs, mais je débute en C et en arduino (je code dans d'autres languages).

Pourriez-vous me dire comment résoudre mon problème ?
Il doit se situer autour de la ligne

int MesureDistanceLaser(Adafruit_VL53L0X *CAPTEUR) {

Merci d'avance,

#include "Adafruit_VL53L0X.h"
#define LASER_AVANT_ADDRESS 0X2A

Adafruit_VL53L0X LASER_AVANT = Adafruit_VL53L0X();

void setup() {
  // initing LASER_AVANT
  if (!LASER_AVANT.begin(LASER_AVANT_ADDRESS)) {
    Serial.println(F("Failed to boot first VL53L0X"));
    while (1);
  }
}

void loop() {
  Serial.println(MesureDistanceLaser(&LASER_AVANT));//Ecrire la mesure dans la console
}

int MesureDistanceLaser(Adafruit_VL53L0X *CAPTEUR) {
  VL53L0X_RangingMeasurementData_t measure1;

  *CAPTEUR.rangingTest(&measure1, false);  // pass in 'true' to get debug data printout!

  // print sensor one reading
  Serial.println(F("1: "));
  if (measure1.RangeStatus != 4) {  // if not out of range
    Serial.println(measure1.RangeMilliMeter);
    return measure1.RangeMilliMeter;
  } else {
    return -1;
  }
}

Un pointeur s'utilise comme ceci :

  CAPTEUR->rangingTest(&measure1, false);  // pass in 'true' to get debug data priu!

L'appel est correct :

C'est parfait ça merci beaucoup.
:star_struck:

Bonjour,

Tu avais presque bon avec:
*CAPTEUR.rangingTest(&measure1, false); // pass in 'true' to get debug data printout!
Sauf que . est plus prioritaire que *

Il aurait fallu écrire
(*CAPTEUR).rangingTest(&measure1, false); // pass in 'true' to get debug data printout!
Qui est équivalent à
CAPTEUR->rangingTest(&measure1, false); // pass in 'true' to get debug data printout!

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.