- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 30

Thema: Bibliothek mit Referenzen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    148
    Zitat Zitat von Sisor Beitrag anzeigen
    Die "const int Entprellzeit;" wäre etwas, was als Argument in den Konstruktor eines Objekts gehört.
    DANKE, genau hierrüber war ich mir unsicher; welche Var gehören in den Global-Bereich, in die Funktion als static und in die Objekte?

    Ist es selbstverständlich, dass bei der Verwendung einer Bibliothek erst einmal dessen Parameter/const Variablen angepasst werden?
    Oder muss ein Objekt so universell sein, dass das Objekt nicht angefasst/angepasst wird?
    Bsp: LEDs werden angesteuert, steht sie Output-Zuordnung im Sketch oder im Objekt?

    - - - Aktualisiert - - -

    Zitat Zitat von HaWe Beitrag anzeigen
    falls es dich interessiert, wie ich es gelöst habe (sicher noch suboptimal):
    https://github.com/dsyleixa/Arduino/...es/ButtonClass
    Moin HaWe - ist mir derzeit noch zu kompliziert...
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  2. #2
    HaWe
    Gast
    Zitat Zitat von frabe Beitrag anzeigen
    - - - Aktualisiert - - -
    Moin HaWe - ist mir derzeit noch zu kompliziert...
    war auch vorwiegend zum einfach-Installieren und -Benutzen gedacht.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    148
    Zitat Zitat von HaWe Beitrag anzeigen
    war auch vorwiegend zum einfach-Installieren und -Benutzen gedacht.
    Danke! Möchte aber erst einmal meinen eigenen Weg finden.

    Zum Thema Bibliotheken habe ich nur sehr oberflächliche Infos im Netz gefunden.
    Veraltete, unpraktische Technik?

    (Den Klassen widme ich mich, sobald ich Bib und dessen Var verstanden habe - ist vermutlich der praxisnaheste Weg)

    Mich interessier primär, wie innerhalb einer Bib mit Variablen aus dem Sketch umgegangen wird.
    Kann die Bib überhaupt auf globale Var aus dem Sketch zugreifen?
    Oder auf static Var aus einer Funktion (innerhalb des Sketch), aus der die Bib aufgerufen wird?
    Somit käm ich mit die Frage nach "Variable als Referenz" (int &Zustand) innerhalb einer Bib schon mal weiter.

    derzeit Entprellung.h, Entprellung.cpp
    HTML-Code:
    int Entprellung(int KontaktPin, unsigned long &StartZeit, int &KontaktZustandAlt, int &EntprellStatus);
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  4. #4
    HaWe
    Gast
    1 globale Variable kann immer nur 1 Wert speichern, nicht verschiedene, und dasselbe gilt für jede lokale Variable.
    kA wie du das mit Referenzen für verschiedene Buttons lösen willst.
    Der einzige Weg geht mE über Strukturtypen, wobei du dann im Sketch davon je 1 als neue Strukturvariable pro Button im Sketch neu einzeln instanziierst.

    Code:
     // das gehört in die Lib
    typedef struct{
        int var1;
        int var2;
        int var3;
    }
    myBtnStruct;
    
    // das gehört in den Sketch
    myBtnStruct btn1, btn2, btn3;
    Ein Objekt ist prinzipiell nichts anderes, nur dass noch zusätzlich Funktionen drin gekapselt sind.
    Ich halte daher deinen bisherigen Ansatz für mindestens suboptimal wenn nicht für sogar für nicht zielführend.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    148
    Zitat Zitat von HaWe Beitrag anzeigen
    1 globale Variable kann immer nur 1 Wert speichern, nicht verschiedene, und dasselbe gilt für jede lokale Variable.
    uiuiui, da hast du mich vollkommen falsch verstanden.

    Zitat Zitat von HaWe Beitrag anzeigen
    kA wie du das mit Referenzen für verschiedene Buttons lösen willst.
    Es geht darum aus einer Funktion mehrere Werte zurück zu geben.

    Code:
    void loop() {
    if (Kontakt01 == 1){...mach was...}
    if (Kontakt02 == 0){...mach was...}
    }
    
    int Kontakt01(int KontPin) {  //Prüfung; gibt 4 Zustand zurück; 0...Entprellt+LOW, 1...Entprellt+HIGH, 2...IN Entprellung, 3...keine Zustandsänderung
      static unsigned long StartZeit = 0;   
      static int KontZustAlt = digitalRead(KontPin);  
      static int EntprellStatus = digitalRead(KontPin); 
      return Entpreller(KontPin, StartZeit, KontZustAlt, EntprellStatus); 
    }
    
    //Kontakt-Entprellung; gibt 4 Zustände zurück; 0...Entprellt+LOW, 1...Entprellt+HIGH, 2...derzeit in Entprellung, 3...keine Zustandsänderung
    int Entpreller(int KontPin, unsigned long &StartZeit, int &KontZustAlt, int &EntprellStatus) {
      int KontZustNeu = 0;
      if((KontZustNeu = digitalRead(KontPin)) == EntprellStatus) {
        return 3; 
      }
    //...usw...
    }
    Hier werden in Kontak01() bei jedem Durchlauf, aktuelle Var-Werte für den Kontakt01 zwischengespeichert.
    Die 3Stk "&Var" werden durch Entpreller() berechnet, dann die neuen Werte wieder in Kontakt01 gespeichert --- bis zum nächsten Durchlauf...
    Somit muss für jeden Eingangs-Kontakt/Taster eine eigene Funktion, als Zwischenspeicher(!), bestehen Kontakt01..0n() --- der einzige Wehrmutstropfen.
    Funktioniert aber sehr gut!


    --2--
    A| Nun möchte ich erst Entpreller() in eine Bib verschieben. Daher meine nervigen Fragen nach &Var (Referenz-Variablen).
    Und ob ich von einer Bib aus auf zB. die global Var zB. "KontPin" zugreifen kann.
    B| Danach bekommt jeder Kontakt0n() eine eigene Bib.
    C| Danach wollte ich mich mit Klassen, Objekten, Methoden beschäftigen. Sozusagen als Erweiterung und Verbesserung einer C-Bib.
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  6. #6
    HaWe
    Gast
    sry, deine Konstruktion verstehe ich nicht, ich würde es ganz anders machen - da muss dann jemand anders 'ran

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    148
    Wie wäre dein Prinzip um meherer Kontakte gleichzeitig auf Zustandsänderung, Entprellung und neuem Zustand (ohne delay) zu überprüfen?

    Hierbei wird bei jedem loop-Durchlauf,
    1. auf Zustandsänderung geprüft; if((KontZustNeu = digitalRead(KontPin)) == EntprellStatus) return 3;
    2. wenn sich der Kontaktzustand ändert, wird das bei jedem loop-Durchlauf neu geprüft
    3. sollte sich der Kontaktzustand innerhalb von 5ms ändern, wird die Startzeit resetet
    4. sollten dann >=5ms keine Zustandänderungen passieren, wird je nach Zustand 0(LOW) oder 1(HIGH) zurück gegeben.
    5. und das für beliebig viele Kontakte und ohne delay()

    PS: Entprellzeit = 5ms ist eine globale Variable und als Beispiel zu verstehen
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

Ähnliche Themen

  1. Arduino Bibliothek soll auf andere Bibliothek zugreifen
    Von RoboterSindCool im Forum Arduino -Plattform
    Antworten: 6
    Letzter Beitrag: 11.12.2016, 15:50
  2. C-Bibliothek für AVRs
    Von drew im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 23.04.2008, 17:52
  3. Referenzen, Parameter für TWI-Funktion
    Von Minifriese im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 11.01.2008, 20:54
  4. Referenzen
    Von JensSchyma im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.05.2007, 17:55
  5. DOS - Bibliothek
    Von hacker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 14.04.2006, 01:54

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test