Closed jnthbdn closed 2 years ago
Le paramètre samplePeriod
(commun à tous les object héritant de la classe Sensor
de codal), est initialisé à sa valeur par défaut SENSOR_DEFAULT_SAMPLE_PERIOD
(link) qui vaut 500ms (link).
Pour corriger le problème il suffit de remplacer le paramètre par defaut lors de l'appel du constructeur dans Makecode (link)
Un problème plus profonds semble rendre difficile l'utilisation du capteur de distance, pour une raison étrange, les tentatives de lecture prennent un temps considérable.
Le changement de prise de mesure (dans CODAL) "One shot" vers un prise en "continue" devrait régler une partie du problème.
Ceci étant, il reste à comprendre pourquoi sous MakeCode les valeurs de distances n'ont que peu de sens (grosse variation, voir valeur adhérentes)
Après investigation la lecture de la valeur de la distance est suffisamment rapide (<100ms), lors de son écriture sur le port série. Or dès l'écritures sur un écran (OLED ou LCD) alors les performances deviennent catastrophique...
Le problème vient du temps d'initialisation du VL53, en abaissant le samplePeriod
trop bas (100ms dans notre cas), cela a pour effet, de "mesurer" une distance (par le scheduler de Sensor
) avant la fin de l'initialisation du capteur.
En utilisant un samplePeriod
élevé (1000ms) lors de la construction de l'object Sensor
, puis dans le corps du constructeur de l'objet MakeCode WDistance
d'une mise à la période souhaitée (100ms) via sensor->setPeriod
, cela laisse le temps au capteur de terminer sa mise en service.
Cf le commit 0ecec56
D'après Manu, le capteur de distance ne change de valeur qu'après 500ms, or lors d'un relevé toutes les 100 ms, les valeurs ne changent qu'une fois tous les 5 mesures.