Arduino Ultra Sonic Capteur renvoie toujours 0
Je suis en train de faire un projet de base dans Arduino UNO de la connexion d'un Ultra Sonic capteur (HC-SR04) qui doivent s'imprimer dans le moniteur de série de la distance de l'objet le plus proche, mais il a toujours l'impression de 0.
C'est mon code:
long distance;
long time;
void setup(){
Serial.begin(9600);
pinMode(4, OUTPUT);
pinMode(2, INPUT);
}
void loop(){
digitalWrite(2,LOW);
delayMicroseconds(5);
digitalWrite(2, HIGH);
delayMicroseconds(10);
time = pulseIn(4, HIGH);
distance = int(0.017*time);
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm.");
delay(1000);
}
Et c'est la planche à pain:
juste par curiosité, avez-vous une
Non, je ne. Devrais-Je?
votre calcul
Ici, instructables.com/id/... trop
Si je supprime le
int()
fonction définie quelque part?Non, je ne. Devrais-Je?
votre calcul
distance = int(.0.017*time)
suggère. voir arduino.cc/en/Tutorial/Ping?from=Tutorial.UltrasoundSensor pour un exemple de code.Ici, instructables.com/id/... trop
Si je supprime le
int
fonction le problème persiste. J'ai essayé de suivre ce post, mais l'auteur utilise un autre capteur (il a 3 broches). J'ai aussi essayé avec différents morceaux de codes que j'ai trouvé dans les blogs et le problème est le même.OriginalL'auteur ianaya89 | 2015-06-29
Vous devez vous connecter pour publier un commentaire.
Le principal problème que je vois c'est que votre code ne correspond à votre schéma de câblage.
Par exemple, le diagramme montre Trig connecté à la broche 4. Le Trig devrait être la sortie de votre Arduino, mais vous l'avez définie comme une entrée.
La Echo est connecté à la broche 2 et il devrait être une entrée, mais vous l'avez définie comme une sortie.
Enfin, dans votre
loop()
, vous n'êtes même pas en utilisant la broche 2 ou 4 broches, mais les broches 9 et 8. Un autre problème est le calendrier que vous utilisez dans le réglage de l'impulsion de déclenchement - il ne correspond pas au mode feuille de données. Je voudrais faire quelque chose comme ceci (en supposant que vous êtes bien connecté sur les broches indiqué dans le diagramme):Noter que
pulseWidth
est juste la quantité de temps qu'il faut, dès le début de la Echo d'impulsion allant de haut à la fin de la même impulsion (lorsqu'il passe au niveau bas). Vous auriez encore de calculer la distance à partir de la valeur depulseWidth
.MISE À JOUR SUR LA BASE DES RÉCENTES MODIFIER À LA QUESTION
Si vous modifiez une partie de votre
loop()
code pour cela, il convient de travail:Je peux téléchargé sans erreurs, mais maintenant, rien n'est imprimé dans le moniteur de série :s
C'est juste une suggestion, mais il aide si vous ne modifiez pas le code dans votre question initiale, si il peut être aidé. Vous avez apporté des modifications à votre code qui ont créé une cible en mouvement quand il s'agit de répondre à votre question.
Oui, je sais, mais j'ai changé le code, parce que je l'ai copié de mal. C'est mon code d'origine et le problème est le même. Désolé pour ça!
J'ai essayé et le problème est le même: la largeur d'impulsion est toujours 0
OriginalL'auteur embedded_guy
Essayez de connecter votre VCC du capteur 3V3 au lieu de 5V. Cela peut sembler étrange, mais j'ai essayé et ça a bien fonctionné. Aussi, assurez-vous que votre echo et trig pin corresponde au code.
OriginalL'auteur Rachen