PulseIn wird falsch gemessen bzw. falsch abgefragt. (PPM) (Anfänger)

Hallo und guten Abend,

Bräuchte Hilfe bei der PulseIn Messung.

Und zwar sieht mein PWM/PPM wie im Bild aus.
Dadurch misst der PulsIn 109 anstatt 1500, also er scheint nur die erste Positive flanke zu messen sehe ich das richtig?

Wie könnte ich das einfach aber der 2ten Positiven Flanke Messen?

//ANFANG Variablen Deklarieren
//---------------------------------------------------------------------

unsigned int GAS;      //Variable GAS
//unsigned int AUX;      //Variable AUX
int AUX1 = 0;
int AUX = 0;
int AUX3 = 0;
//int GAS = 0;

// ENDE Variablen Deklarieren
//---------------------------------------------------------------------


//Anfang Grundeinstellungen
//---------------------------------------------------------------------

void setup()   {
  
  pinMode( 9, OUTPUT);        //PIN 9 PWM Bremslicht ROT LED
  pinMode( 3 , OUTPUT);      //PIN 3 PWM Licht Vorne 
  pinMode( 5 , INPUT);
  pinMode( 6 , INPUT);
  

  
  //ENDE
  
  
  const int IN_pin    = A0;    //Eingangspin D5 GAS
  const int IN_pin1   = 6;    //Eingangspin D6 AUX
  
  Serial.begin(9600);         // aktivieren des Seriellen Monitors, um sehen zu können, was der Code macht
  
}                            

//ENDE Grundeinstellungen
//---------------------------------------------------------------------



//SCHLEIFE Programm START
//---------------------------------------------------------------------
 
void loop() {           
  
//---------------------------------------------------------------------
//Bremse Anfang
  
GAS = pulseIn(A0, HIGH, 25000);             // Pulslänge messen  GAS

 //GAS = analogRead(A0) ;
    if (GAS < 1450) {                      // IST GAS Kleiner als WERT dann nächste Zeile!
     analogWrite(9 , 255);                 // ANALOG AUSGANG auf 255 (MAX) Schalten (0-255)
    }
        if (GAS > 1450) {                  // IST GAS Größer als WERT dann nächste Zeile!
     analogWrite(9 , 60);                  // ANALOG AUSGANG auf 60 (gedimmt) Schalten (0-255) 
     }
     
//Bremse ENDE
//---------------------------------------------------------------------


//---------------------------------------------------------------------
// Licht Dimmen Vorne Anfang

    AUX1 = pulseIn(6, HIGH, 25000);                               // Pulslänge messen AUX     
AUX3 = (AUX1 / 3);                                                //Analoges Signal durch 3teilen
    AUX = 0.7 * AUX + 0.3 * AUX3;                                 //Analog glätten
    
    
            if ( 496 < AUX ) {                                    // IST AUX GRÖßER ALS WERT dann nächste Zeile                                     
     analogWrite(3 , map ( AUX , 496 , 628 , 0 , 255 )) ;           // WERT AUX zuordnen 1495-1900 auf 0-255
      }
      
       else if (495 > AUX){    
      analogWrite(3 , map ( AUX , 362 , 495 , 255 , 0 )) ;           // WERT AUX zuordnen 1495-1900 auf 0-255
     
      }
        else {                                                              // Werte dazwischen dann nächste Zeile
      analogWrite(3 , 0);                                                 // Analogausgang Ausmachen 0 AUS - 255 MAX  
              
      Serial.print("AUS");                                                // AUS Aktiv Anzeige
      Serial.println();                                                    // Neue Zeile
      } 
     
      Serial.print(AUX1);
      Serial.print("\t");                                                    // TAB Taste
     Serial.print(AUX);
        Serial.print("\t");                                                  // TAB Taste
     Serial.print(AUX3);
     Serial.print("\t");    
    Serial.println(GAS);
     
   }

werte.png

20190310_203318.jpg

Hi

Wenn die Werterfassung so zeitkritisch ist, solltest Du in erster Linie die Werte erfassen und dann, wenn die Zeit dafür vorhanden ist, Diese auswerten.

Zwei pulseIn direkt hintereinander sollten Dir Das abfangen - bei Beiden ein Timeout benutzen, sonst kommst Du durcheinander, wenn mit dem langen Impuls angefangen wird.

MfG

Was ist das überhaupt für ein Signal?

Hallo
ist von einem RC Empfänger , leider wird das Signal bein anschliessen des ESC so verfälscht.
ich habe jetzt 2x pulseIn eingefügt . aber im GAS1 steht jetzt abwechselnd 1300 / 109
wenn er mir nur die letzte welle anzeigen würde wäre gut. Weil die verändert sich beim Gasgeben.

so habe ich das eingefügt
GAS = pulseIn(A0, HIGH, 25000);
GAS1 = pulseIn(A0, HIGH, 25000);

GAS = 109
GAS1 = 1300 / 109 abwechselnd

LG

Keine Ahnung wieso das Signal so aussieht.
Grüße Uwe