[Erledigt] Ultraschallsensor in Zentimeter, mit Komastelle ausgeben

Hallo Zusammen

Ich möchte mit einen Ultraschallsensor denn Abstand in Zentimeter mit Komastelle ausgeben, leider finde ich dazu nur Bibliotheken die mir Zentimeter erlauben.

Hab zwar einen Code gefunden, der ist aber leider nicht passend, da ich die Werte später in einer if-else Verzweigung wieder überprüfen muss.

Ist es möglich mit diesem Code? Denn int hab ich schon auf float geändert, hat leider nicht geholfen.

#include <Ultrasonic.h>
Ultrasonic ultrasonic(12, 13);
int distance;

void setup() {

 Serial.begin(9600);
}

void loop() {

    distance = ultrasonic.read();
    Serial.println(distance);   

}

Denn anderen Code sieht so aus:

#define trigPin 12
#define echoPin 13
 
float duration, distance;
 
void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}
 
void loop() {
     
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration / 2) * 0.0343;
   Serial.print("Distance = ");
  Serial.println(distance);
  
}

Hier muss ich denn halben Code wieder in die Schleife packen und das gefällt mir nicht.

Danke für die Hilfe :slight_smile:

Warum fängst du einen neuen Thread an und machst nicht im ersten weiter ?

Zudem wurde dir schon geschrieben, das Teil heißt "Ultraschallsensor", nicht Ultrasensor.

Liest du unsere Antworten nicht ?

Denn int hab ich schon auf float geändert, hat leider nicht geholfen.

Kann nicht sein.

long duration = pulseIn(echoPin, HIGH);
int  distance = (duration / 2) * 0.0343;
float dist_f = (duration/2) * 0.0343; 
Serial.print("Distance = ");
Serial.println(distance);
Serial.println (dist_f);

gibt dir zwei verschiedene Zahlen aus.

Übrigens: Code hat man nicht, sondern macht ihn sich nach Bedarf.

Oder versuche mal dies (ungetestet):

float distance = ultrasonic.read(1) * 0.0343;

michael_x:
Kann nicht sein.

Hab mich falsch ausgedrückt sorry. Mit float hab ich zwar Kommastelle, die zeigen mir aber 0 an.

agmue:
Oder versuche mal dies (ungetestet):

float distance = ultrasonic.read(1) * 0.0343;

Leider auch nur Nullen. Noch einen anderen Vorschlag? :slight_smile:

waffi:
Leider auch nur Nullen.

Nun habe ich es probiert und bekomme als Ausgabe, wenn ich auf eine Stelle hinter dem Komma begrenze:

19.2
19.1
19.1
19.1

waffi:
Hier muss ich denn halben Code wieder in die Schleife packen und das gefällt mir nicht.

Den Satz verstehe ich nicht :confused:

Möchtest Du möglicherweise eine Funktion?

Hi

Dann lasse die Schleife weg und packe den ganzen Code in loop() - DAS ist bereits eine Schleife.

MfG

agmue:
Nun habe ich es probiert und bekomme als Ausgabe, wenn ich auf eine Stelle hinter dem Komma begrenze:

19.2

19.1
19.1
19.1



Den Satz verstehe ich nicht :confused:

Ich habs im Setup deklariert anstatt im Loop. Danke dir tausendmal :slight_smile:

So ändert sich auch der Wert, auch wenn ich in einer for Schleife bin und dazu brauche ich nur denn Code: float distance=... Mit dem zweiten Beispiel im ersten Post, wäre es zu gross geworden.

Kann geschlossen werden. :slight_smile:

waffi:
Kann geschlossen werden. :slight_smile:

Das gibt es hier im Forum nicht, Du könntest aber in #0 ein [erledigt] vor das Titelthema setzen.

Danke für die Rückmeldung :slight_smile: