Re: Zeitdauer eines HIGH-Signals ermitteln

Hallo zusammen,

ich will die Zeitdauer eines HIGH-Pegels von 0 - 999 µs ermitteln und habe die oben gezeigte Software benutzt.

Es funktioniert alles, bloß habe ich ab 600 - 999 µs nur noch den Wert 600 µs stehen.

Weiß jemand woran das liegt?

Vielen Dank im Voraus.

di_mar:
Hallo zusammen,

ich will die Zeitdauer eines HIGH-Pegels von 0 - 999 µs ermitteln und habe die oben gezeigte Software benutzt.

Es funktioniert alles, bloß habe ich ab 600 - 999 µs nur noch den Wert 600 µs stehen.

Weiß jemand woran das liegt?

Vielen Dank im Voraus.

Dann mach am besten einen neuen Thread auf, und poste Deinen Sketch in Code-Tags.
Ich sehe hier ca 4-5 Sketche.

Wenn du nur einen Turm verwendest, ist die Messung auch auf 600 µs begrenzt?
Falls ja, mach doch einen entsprechenden kleineren Sketch, der noch das Problem zeigt.

( Ich sehe den Fehler nicht, unsigned long für die µs und float für den Abstand sollte ok sein )

Hallo zusammen,

hier mein Code, der auf 600 Mikrosekunden irgendwie begrenz ist :frowning:

hoffe ihr könnt mir helfen! :wink:

//
//
//  PWM-Signal einlesen
//
//
#include <Adafruit_NeoPixel.h>
#include <avr/power.h>

#define eingang 0

unsigned long start;
unsigned long zeit;

boolean state = LOW;
boolean laststate = LOW;

void setup() {

 pinMode(eingang, INPUT);
 Serial.begin(115200);

}

void loop() {

 state = digitalRead(eingang);
 if (state == HIGH && laststate == LOW) {
   start = micros();
 }

 else if (state == LOW && laststate == HIGH) {
   zeit = micros() - start;

   Serial.print("Time: ");
   Serial.print(zeit);
   Serial.println(" ms");
   delay(100);
 }

 laststate = state;

}

(deleted)

Diskussion abgespalten.
alte Diskussion Zeitdauer eines HIGH-Signals ermitteln - Deutsch - Arduino Forum
Grüße Uwe

Hallo Peter,

ich benutze ein Arduino UNO, wenn das die Frage war :slight_smile:

#define eigang 0 // Pin0 wo man PWM-Signal angeschlossen ist.

Gruß

Pin 0 und 1 sind für die Verbindung vom Controller (ATmega328) zum USB-Adapter (programmierter ATmega16U2) belegt. Wenn Du diese beiden pins verwendest kann das Upload der Sketche nicht funktionieren bzw das was Du machen willst mit dem Pin.
Benutze andere Pins.

Grüße Uwe

Okay danke probiere ich aus!

Hallo zusammen, es lag tatsächlich daran dass am Pin0 eingelesen haben, lese jetzt am Pin13 ein und kriege alle werte raus! Danke!

di_mar:
... Pin13 ...

Auch unglücklich, beim UNO hängt da die interne LED dran.

Beim UNO ist das LED über einen Operationsverstärker entkoppelt darum ist Pin 13 100% gleich wie die anderen Digitalen Pins.
Ältere Arduino-Modelle wie zB der 2009 aber auch der NANO oder der MINI haben am Pin 13 direkt die LED mit einem Vorwiderstand.

Grüße Uwe

uwefed:
Beim UNO ...

Beim Arduino UNO mag das stimmen, aber es soll, so hörte ich, auch andere geben, da weiß man dann nicht so genau ;D

Du hast vom UNO geschrieben.
Grüße Uwe

uwefed:
Du hast vom UNO geschrieben.

Kleines Mißverständnis, laß es mich mit einem abgeänderten Zitat erklären: "Arduino oder nicht Arduino, das ist hier die Frage!"

Bei nicht originalen Arduinos könnte der OP durch einen Widerstand ersetzt worden sein :slight_smile: