Besoin d'aide pour capteur SHARP

Bonnjour ! =)

Je viens d'acquérir un capteur IR SHARP GP2D150 (porté fixe : 15cm)
C'est la première fois que j'utilise la partie analogique de ma carte arduino, du coup je suis un peux perdu...

Quelqu'un pourrait me montrer le code d'un montage simple comme par exemple : si il y a un obstacle, j'allume la led...
C'est pas vraiment ce que je veux faire, mais ça serait une bonne base pour moi que je pourrais ensuite modifier...

Et sinon, existe t'il de la doc française sur le couple : arduino-sharp ?

Merci d'avance pour votre aide

Personne n'a déjà utiliser ce type de capteur ?

J'ai déjà utilisé un GP2D mais c'était le 120 : Capteur de distance infra-rouge (Sharp) - PoBot

De ce que je lis, le GP2D150 n'est pas analogique. En fait c'est le GP2D120 avec un seuil à 150 mm.

Donc branche le capteur à une entrée numérique (digital 2) par exemple et fais comme si c'était un simple interrupteur :

void setup()
{
   pinMode(2,INPUT);
   pinMode(13,OUTPUT);
   Serial.begin(9600);
}

void loop()
{
  if (digitalRead(2) == LOW) {
     // ce que tu veux faire ici quand l'obstacle est loin (> 15 cm)
     
     // par exemple : éteindre la led qui est sur la carte
     digitalWrite(13,LOW);  
  } else {
     // ce que tu veux faire ici quand l'obstacle est proche (< 15 cm)
     
     // par exemple : allumer la led qui est sur la carte
     digitalWrite(13,HIGH);
  } 
}

Je ferai (si c'est demandé) un article qui explique comment détecter un changement (il était loin il arrive dans la zone du capteur ou il était proche et il s'éloigne de la zone).

Merci pour ton code, mais malheureusement ça ne marche pas :s
Pour tester, j'ai envoyer des valeurs a la console : 0 si rien à - de 15 cm et 1 sinon...
Mais j'ai que des 0 :s

Qu'entends tu par "envoyé des valeurs à la console" ?

Qu'a fait la led ? elle est allumée par défaut ? elle s'allume et s'éteint quand tu passes la main devant le capteur ? Le capteur est bien connecté (GND, 5V, DIGITAL 2) ?

Autre astuce : bouge un peu le connecteur blanc, il est très sensible. Notamment il se casse rapidement si on enlève et remet le connecteur "comme un bourrin".

Non la led n'a rien fait...
Bin voila le code que j'ai maintenant :

void setup()
{
   pinMode(2,INPUT);
   pinMode(13,OUTPUT);
   Serial.begin(9600);
}

void loop()
{
  if (digitalRead(2) == LOW) {
     // ce que tu veux faire ici quand l'obstacle est loin (> 15 cm)
    
     // par exemple : éteindre la led qui est sur la carte
     Serial.println(0);
     digitalWrite(13,LOW);  
  } else {
     // ce que tu veux faire ici quand l'obstacle est proche (< 15 cm)
    
     // par exemple : allumer la led qui est sur la carte
     Serial.println(1);
     digitalWrite(13,HIGH);
  }
}

Pour le connecteur, tu va peux être rire lol, mais vu que j'ai oublier d'acheter le bout qui allait avec, je l'ai dessouder et j'ai directement souder 3 fils sur le CI

J'ai fait ça assez proprement je pense donc le problème ne devrais pas venir de la

Déjà je suis sur que mon capteur marche au moins en partie car, quand je le regarde avec un appareil photo, je vois que ma led IR est allumé :wink:

Fais une photo de tes branchements stp

voila :

Ajoute un "delay(200);" à la fin de la fonction loop()
La liaison série prend beaucoup trop de temps pour l'utiliser dans une boucle permanente, sans laisser le temps au buffer de s'afficher sur ton écran.

Que fais mon programme sans que tu le modifies ?

Et sinon, n'oublie pas de tester le capteur dans la zone 5 à 20 cm, pas en dessous (c'est ton pouce sur le récepteur qui m'y fait penser).

Enfin, il est possible que tu sois resté trop longtemps avec le fer à souder. Il n'y a pas que l'aspect de la soudure qu'il faut regarder, mais aussi la température et la durée de la soudure, il y a des tables de valeurs à ne pas dépasser dans les datasheets, quelques fois 5 secondes sont de trop, or pour souder un fil on a parfois la "main lourde".

Dernière idée, ne touche pas au capteur quand tu fais le test, pose le dans une zone dégagée : j'avais lu sur un forum que le boitier était conducteur (ce n'est pas tout à fait du plastique). Sur la photo je vois un doigt qui touche l'arrière du capteur, or sur ceux que j'ai manipulé, l'arrière n'est pas protégé, le typon et les soudures sont à l'air libre, donc ton doigt fait des court-jus

J'ai tout essayé, rien ne marche, j'espère que c'est pas la soudure :s

C'est bien ça que tu voulais que je face avec le delay ? :

void setup()
{
   pinMode(2,INPUT);
   pinMode(13,OUTPUT);
   Serial.begin(9600);
}

void loop()
{
  if (digitalRead(2) == LOW) {
     // ce que tu veux faire ici quand l'obstacle est loin (> 15 cm)
    
     // par exemple : éteindre la led qui est sur la carte
     Serial.println(0);
     digitalWrite(13,LOW);  
  } else {
     // ce que tu veux faire ici quand l'obstacle est proche (< 15 cm)
    
     // par exemple : allumer la led qui est sur la carte
     Serial.println(1);
     digitalWrite(13,HIGH);
  }
 delay(200);
}

Et ce capteur, tu est bien sur qu'il s'utilise comme ça ? je veux dire au niveau programmation ?

Personne n'a une autre solution ? :cry:

Utilise une résistance pull-down ou pull-up. Peut être déjà simplement la pull-up interne :

   // dans le setup
  pinMode(2,INPUT);
  digitalWrite(2,HIGH); // pull-up sur l'entrée

Essaie d'utiliser l'oscilloscope minimal sur port analogique pour visualiser ce qui se passe. C'est comme ça que je débogue la plupart de mes montages.

Je l'utilise ici : Transformer un capteur tout ou rien - PoBot

Mille merci !!
Ça venait effectivement du pull-up internet qu'il fallait activer !
Je ne te dit pas comment je suis heureux à allumer ma led la, jusqu'à ton message, j'étais dépité d'avoir surchauffé mon capteur x)

Tant mieux.

C'est étonnant que la pull-up ne soit pas dessus, puisqu'on fournit le 5V et le GND par les deux autres fils... double raison pour bien le documenter.

Dis-moi si tu le fais sur ton blog, sinon je ferai un article pour les prochains à rencontrer le problème.

tkt tu peux faire l'article, ça en aidera ainsi plus d'un :wink: