-         

Ergebnis 1 bis 5 von 5

Thema: Frage zu bounce

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    235

    Frage zu bounce

    Anzeige

    Hallo,

    in diesem kleinen Programm soll die Variable JustPin von Anfang an "1" bleiben. (Bitte nicht nach dem Sinn fragen)

    Code:
    #include <Bounce2.h>         // einbinden der Library  für die Unterdrückung des Kontaktentprellens
    Bounce debouncer = Bounce();
    
    
    int JustPin_roh = 53; 
    int JustPin;                            // diese Variable nimmt das Ergebnis nach der Prellunterdrückung an
    
    
    
    void setup() {
    
      Serial.begin (250000);    
      while (!Serial);
    
      pinMode (JustPin_roh, INPUT);   
      digitalWrite(JustPin_roh, HIGH);            //schaltet den PullUp-Widerstand ein
    
      debouncer.attach(JustPin_roh);              // für Prellunterdrückung von Pin 53
      debouncer.interval(1);                      //  interval in ms
    
    
      pinMode (52, OUTPUT);
      digitalWrite (52, LOW);
      JustPin = HIGH;
    
    }
    
    void loop() {
    
      Serial.print("JustPin   =   ");
      Serial.println(JustPin);
      Serial.println("");
    
      debouncer.update();             // aktualisiert den Bouncezustand
      JustPin = debouncer.read();    // übergibt den aktualisierten Wert an die Variable JustPin. 
      if (JustPin == HIGH)  {
        digitalWrite(52, HIGH);
      }
    
    }   //*************   ENDE  loop
    Mit "JustPin = debouncer.read();" ist das auch so.

    Ergebnis auf dem Monitor:
    Klicke auf die Grafik für eine größere Ansicht

Name:	read.jpg
Hits:	2
Größe:	9,2 KB
ID:	32045

    Mit "JustPin = debouncer.fell();" oder "JustPin = debouncer.rose(); ist das aber nicht der Fall.

    Ergebnis auf dem Monitor:
    Klicke auf die Grafik für eine größere Ansicht

Name:	fell.jpg
Hits:	2
Größe:	9,3 KB
ID:	32046

    Wie kann das sein? Wie kann ich das verhindern?

    vG

    fredyxx

  2. #2
    RN-Premium User Roboter-Spezialist
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    47
    Beiträge
    437
    Blog-Einträge
    15
    Zitat Zitat von fredyxx Beitrag anzeigen
    Mit "JustPin = debouncer.fell();" oder "JustPin = debouncer.rose(); ist das aber nicht der Fall.
    Das sind wohl Methoden für Flankenerkennung. Zitat aus der bounce2/wiki
    bool read()
    Reads the updated pin state.

    bool fell()
    Returns true if pin signal transitions from high to low.

    bool rose()
    Returns true if signal transitions from low to high.
    Gruß
    witkatz

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    235
    Zitat Zitat von witkatz Beitrag anzeigen
    Das sind wohl Methoden für Flankenerkennung. Zitat aus der bounce2/wiki


    Gruß
    witkatz
    Das ist mir klar, erklärt aber nicht das unterschiedliche Verhalten.

    Noch eine Ergänzung:

    bei nicht betätigtem Taster ist der Eingang HIGH

    vG
    fredyxx

  4. #4
    RN-Premium User Roboter-Spezialist
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    47
    Beiträge
    437
    Blog-Einträge
    15
    Doch, ich finde schon, dass das das unterschiedliche Verhalten erklärt:
    - read() gibt den entprellten Signalwert, also immer true wenn das signal immer HIGH ist.
    - fell() und rose() geben nur einmal true, wenn eine Flanke erkannt wurde, sonst immer false.
    Mich wundert nur das eine true am Anfang.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    235
    Zitat Zitat von witkatz Beitrag anzeigen
    Doch, ich finde schon, dass das das unterschiedliche Verhalten erklärt:
    - read() gibt den entprellten Signalwert, also immer true wenn das signal immer HIGH ist.
    - fell() und rose() geben nur einmal true, wenn eine Flanke erkannt wurde, sonst immer false.
    Mich wundert nur das eine true am Anfang.
    Dann ist doch alles klar:

    fell() und rose() geben nur einmal true, wenn eine Flanke erkannt wurde, sonst immer false
    Das war mir so nicht klar, aber logisch. Wenn es keine "1" zurückgeben kann, bleibt halt nur die "0". Eine Variable in diesem Befehl nicht zu verändern geht wohl nicht. War wohl eine naive Vorstellung!


    Mich wundert nur das eine true am Anfang.
    Das kommt doch daher, weil der 1. Serial.print vor dem

    Code:
       debouncer.update() ;   
       JustPin = debouncer.read();
    kommt und da ist JustPin aus dem Setup ja noch HIGH.

    Danke für die HIlfe!!

    vG

    fredyxx

Ähnliche Themen

  1. .:Anfänger Frage zu Sensoren:.(Neu! Frage zu meinem 1. Progr
    Von oceans94 im Forum Sensoren / Sensorik
    Antworten: 22
    Letzter Beitrag: 06.05.2008, 07:54

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •