• Welcome to Forum des utilisateurs de Blockly(s). Please login or sign up.
 

Problème utilisation capteur de distance sharp 0A41SK (GP2Y0A41SK0F)

Démarré par Yoann, décembre 04, 2017, 03:51:15 pm

« précédent - suivant »

Yoann

Bonjour,

J'ai acheté des capteurs sharp GP2Y0A41SK0F pour avoir une information de distance pour un robot.

Le code qui est généré est le suivant :

#include <SharpIR.h>

int distance;

SharpIR toto(0, 430);

void setup() {
  Serial.begin(9600);

}

void loop() {
  distance = toto.distance();
  Serial.print("distance =");
   Serial.println(distance);

}


et j'obtiens le message d'erreur suivant :
"exit status 1
within this context"
Pour la ligne
distance = toto.distance();


Est-ce que l'erreur vient de moi ou du code généré par le block ?

Bzhtitude

Bonsoir,

1. Quel blockly utilise-tu ?
2. As tu bien installer la librairie requise "SharpIR.h" ? Elle n'est pas par défaut.
3. Dans les préférences, peux tu rendre le compilateur plus verbeux : afficher les détails pendant la compilation et avertissement du compilateur "tout".

Bon courage.


Yoann

Bonsoir,

1-J'utilise une version modifiée par un collègue que j'ai déposé sur un hébergement 1&1 : http://blockly.collegelusignan.fr

2-J'ai vu que le code appelait la library sharpIR.h, je l'ai installé

3-J'ai modifié le compilateur : j'obtiens le message orange suivant :

C:\Users\YGUYON~1.008\AppData\Local\Temp\arduino_modified_sketch_556685\sketch_dec05a.ino:5:20: warning: large integer implicitly truncated to unsigned type [-Woverflow]

SharpIR toto(0, 430);

                    ^

In file included from C:\Users\YGUYON~1.008\AppData\Local\Temp\arduino_modified_sketch_556685\sketch_dec05a.ino:1:0:

U:\Arduino\libraries\SharpIR\src/SharpIR.h: In function 'void loop()':

U:\Arduino\libraries\SharpIR\src/SharpIR.h:40:13: error: 'uint8_t SharpIR::distance' is private

     uint8_t distance;

             ^

sketch_dec05a:13: error: within this context

   distance = toto.distance();

                   ^

sketch_dec05a:13: error: expression cannot be used as a function

   distance = toto.distance();

                            ^

Utilisation de la bibliothèque SharpIR version 1.1.0 dans le dossier: U:\Arduino\libraries\SharpIR
exit status 1
within this context


Bzhtitude

Bonsoir,

je vois 2 pistes...

1) Renommer la variable "distance" en "distance1" ou "mydistance" de façon à ne pas avoir une variable et une fonction avec le même nom.

2) le type int n'a pas l'air d'être apprécier par le compilateur ... tu peux essayer ( sans garantie)  uint8_t distance ou byte distance ...

Je ne vois rien d'autre, tu peux faire quelques tests et non redire les résultats de compilation?

Bon courage.

SebCanet

décembre 06, 2017, 12:13:30 am #4 Dernière édition: décembre 06, 2017, 12:21:14 am par SebCanet
Mince, j'ai fait une faute de frappe...
Ce n'est pas la fonction 'distance()' mais 'getDistance()'.
Je corrige ça, merci de poursuivre les tests pour être sûr à propos de ce matériel.

Sinon elle a quoi de particulier ta version modifiée ?

Yoann

Ok ça fonctionne. J'ai les données sur le moniteur série.
La précision est moyenne (erreur : 5cm mesurés pour 7cm réels) mais c'est lié au composant. La documentation indique une courbe de mesure compliquée à faible distance. J'ai lu sur un forum qu'on pouvait retrouver l'équation de la courbe avec plusieurs points de mesures et une feuille de tableur. Pour l'instant c'est suffisant.

Merci pour le dépannage.

Un truc bizarre : si j'appel mon télémètre "toto" dans le setup, le bloc de mesure me propose "toto" ou "toto_1" si je configure l'ajout de nouveau blocs.

Cela me permet déjà d'offrir une alternative à mes élèves pour le capteur de distance (par rapport à l'ultrason).

Pour ce qui est de ma version par rapport à blockly.technologiecollege.fr, d'abord elle est obsolète  ;D et le lien que j'utilise sur mon site l'affiche en français avec les blocs que j'utilise le plus fréquemment (grove, sharp, arduino...)