Die "const int Entprellzeit;" wäre etwas, was als Argument in den Konstruktor eines Objekts gehört.
Die "const int Entprellzeit;" wäre etwas, was als Argument in den Konstruktor eines Objekts gehört.
falls es dich interessiert, wie ich es gelöst habe (sicher noch suboptimal):
https://github.com/dsyleixa/Arduino/...es/ButtonClass
PS
ich habe alle Funktionen samt Code in das .h file geschrieben, nicht nur die Prototypen - das ist zwar nicht ganz regeltypisch, aber deutlich einfacher zu warten![]()
Geändert von HaWe (29.04.2020 um 21:00 Uhr)
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 - - -
Moin HaWe - ist mir derzeit noch zu kompliziert...
__________________________________________________ _
| Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |
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 |
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.
Ein Objekt ist prinzipiell nichts anderes, nur dass noch zusätzlich Funktionen drin gekapselt sind.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;
Ich halte daher deinen bisherigen Ansatz für mindestens suboptimal wenn nicht für sogar für nicht zielführend.
uiuiui, da hast du mich vollkommen falsch verstanden.
Es geht darum aus einer Funktion mehrere Werte zurück zu geben.
Hier werden in Kontak01() bei jedem Durchlauf, aktuelle Var-Werte für den Kontakt01 zwischengespeichert.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... }
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 |
sry, deine Konstruktion verstehe ich nicht, ich würde es ganz anders machen - da muss dann jemand anders 'ran![]()
Lesezeichen