Hallo,
ich experimentiere gerade mit einem Ultraschallsensor.
Wenn der Befehl pulseIn in diesem Hauptprogramm ist, funktioniert alles gut.
Code:double Ent;
void setup() {
Serial.begin(250000);
while (!Serial);
pinMode (13, OUTPUT); // Ausgang für das US-Triggersignal
}
void loop() {
delay (20);
digitalWrite (13, LOW); //negative Flanke für Triggersignal
Ent = pulseIn(4, HIGH);
Serial.print ("Ent = ");
Serial.println(Ent);
delay (20);
digitalWrite (13, HIGH); // Triggersignal zurück auf High setzen
}
Versuche ich die US Bearbeitung aber in einem eigenen TAB laufen zu lassen, klappt das nicht:
Das Unterprogramm wird durchlaufen, aber die Variable Ent ist immer nur 0.00Code:double Entfernung ()
{
static double Ent;
Serial.println ("ich bin im UP");
delay (20);
digitalWrite (13, LOW); //negative Flanke für Triggersignal
Ent = pulseIn(4, HIGH);
Serial.print ("Ent = ");
Serial.println(Ent);
return Ent; // gibt die Pulslänge in Mikrosekunden zurück
// während der Messung geht der Programmlauf **** nicht ***** weiter
// sondern wird real für 15, theoretisch für 20 ms angehalten
delay (20);
digitalWrite (13, HIGH); // Triggersignal zurück auf High setzen
} // >>>>> ENDE int Entfernung
Kann es sein, dass der pulseIn in einem Tab nicht funktioniert?
Gruß
fredyxx