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:

Code:
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
Das Unterprogramm wird durchlaufen, aber die Variable Ent ist immer nur 0.00

Kann es sein, dass der pulseIn in einem Tab nicht funktioniert?

Gruß
fredyxx