Sunlake
November 8, 2015, 10:47am
1
Bonjour,
J'ai créé un petit circuit pour tester mon capteur a ultrasons (HC-SR04), j'ai écrit le code qui va avec :
int DOUT_TRIGGER = 10;
int DIN_ECHO = 11;
unsigned long distance;
void setup()
{
pinMode(DOUT_TRIGGER, OUTPUT);
pinMode(DIN_ECHO, INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(DOUT_TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(DOUT_TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(DOUT_TRIGGER, LOW);
distance= pulseIn(DIN_ECHO, HIGH) / 58.0;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000);
}
Mais le problème c'est que le capteur me donne toujours 6 cm en distance et je ne comprend pas pourquoi. Si quelqu'un pourrait m'aider se serrait super. Merci
PS: Je suis un débutant.
pulseIn() retourne un unsigned long et tu fais la division avec un float (58.0).
Commence par remplacer 58.0 par 58L.
kamill
November 8, 2015, 11:51am
3
Bonjour,
Mets ton code entre balises (voir ici )
J'ai essayé ton code chez moi et je n'ai pas de problème. Es tu sur de ne pas avoir inversé les pins echo et trigger?
Le remarque de fdufnews est juste (mais ce n'est pas ça ton problème), mais au lieu d'utiliser 58L, je t'engage plutôt à déclarer distance comme un float.
Le problème étais créé par un faux contacte, je suis donc arriver a le faire fonctionner, et j'ai modifié le code, j'ai rajouté un écran lcd:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int DOUT_TRIGGER = 10;
int DIN_ECHO = 9;
float distance;
void setup()
{
lcd.begin(16, 2);
pinMode(DOUT_TRIGGER, OUTPUT);
pinMode(DIN_ECHO, INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(DOUT_TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(DOUT_TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(DOUT_TRIGGER, LOW);
distance= pulseIn(DIN_ECHO, HIGH) / 58.0;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Distance : ");
lcd.setCursor(4, 1);
lcd.print(distance);
lcd.print(" cm");
delay(1000);
}
Merci quand même pour vos réponse.