ich will Dir noch mal etwas auf die Sprünge helfen.
Klar ist hier ein Array oder Struct oder sogar Classe besser geeignet, aber vermutlich überfordert Dich das im Moment noch . Das wären dann in der Reihenfolge die nächsten Übungen für Dich.
Nochmal zurück zu Deinem Eingangspost Eigendlich bist Du damit ja schon fast da. Es fehlen zwei Dinge
- das einlesen des Pins mit digitalRead() und die dazugehörigen bool Variablen
- die Übergabe der Parameter an die Function, so dass sie verändert und zurückgegeben werden können. Hier bietet sich an das als Referenz mit dem & symbol vor der entsprechende Variablen zu machen . Link dazu hast Du in #38 bekommen.
void counter_area( bool &dataStatusAlt, byte &counter, bool data)
data , ist ja der Pegel von dem Eingang der soll nicht verändert werden , also nur bool angeben. Den folgenden Code kannst Du sicher verstehen, wenn nicht fragen ![]()
Heinz
byte counter_1 = 0;
bool statusAltCounter_1; // kann ja nur true oder false sein
byte dataPin_1 = 6;
bool statusCounter_1; // kann ja nur true oder false sein
byte counter_2;
bool statusAltCounter_2;
byte dataPin_2 = 7;
bool statusCounter_2;
void setup()
{
Serial.begin(9600);
pinMode(dataPin_1, INPUT_PULLUP); // Eingang nach GND geschaltet bleibt Dir überlassen
pinMode(dataPin_2, INPUT_PULLUP);
}
void loop()
{
delay(20); // entprellen
statusCounter_1 = !digitalRead(dataPin_1); // pin invertiert einlesen da der nach GND liegt
statusCounter_2 = !digitalRead(dataPin_2); // pin invertiert einlesen
counter_area(statusAltCounter_1, counter_1, statusCounter_1);
counter_area(statusAltCounter_2, counter_2, statusCounter_2);
Serial.print(counter_1); Serial.print('\t');
Serial.println(counter_2);
}
// Function Counter Parameter als Referenz ubergeben
void counter_area( bool &dataStatusAlt, byte &counter, bool data)
{
if (dataStatusAlt != data)
{
if (data == 1)
{
counter++;
}
}
dataStatusAlt = data;
//counter = counter % 2;
return ;
}