![Zitat](images/misc/quote_icon.png)
Zitat von
HaWe
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](images/misc/quote_icon.png)
Zitat von
HaWe
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.
Lesezeichen