Hallo,
erstmal danke für eure Antworten.
Aktuell bin ich mir unsicher, was die Hardware betrifft. Ich habe nochmal alle Belegungen durchgetestet. Je sechs Schalter bilden bei mir einen Block (via 6 poligem Kabel an die Arduino Pins angeschlossen).
Bei dem zweiten Block kann ich ein "normales" Prellverhalten feststellen. D.h. bei einem Tastendruck wird bis zu 12 mal wiederholt in circa 0,5 Sek. Bei den Blöcken 1 und 3 tritt das nicht nachvollziehbare Verhalten auf. Ich drücke einen Schalter und mehrere reagieren oder sekundenlang wird wiederholt (für den jeweiligen Schalter).
Ich habe die Platine gerade noch einmal ausgebaut und durchgemessen. Es sind alle Werte identisch.
Nun habe ich die Vermuttung, dass die Schalter entweder so schlecht sind, dass Sie sich festfressen, wogegen aber spricht, dass mehrere signale eingehen, oder mein Testscatch ist Müll.
Ich habe in meinem Testscatch die Schalter initialisiert
const int CH1_On = 27;
const int CH1_Lamp = 29;
const int CH1_Lamp100 = 31;
const int CH1_Powermode = 33;
const int CH1_Beep = 35;
const int CH1_Test = 37;
const int CH2_On = 34;
const int CH2_Lamp = 36;
const int CH2_Lamp100 = 38;
const int CH2_Powermode = 40;
const int CH2_Beep = 42;
const int CH2_Test = 44;
const int CH3_On = 51;
const int CH3_Lamp = 49;
const int CH3_Lamp100 = 47;
const int CH3_Powermode = 45;
const int CH3_Beep = 43;
const int CH3_Test = 41;
Im Setup als Input festgelegt
pinMode(CH1_On, INPUT);
pinMode(CH1_Lamp, INPUT);
pinMode(CH1_Lamp100, INPUT);
pinMode(CH1_Powermode, INPUT);
pinMode(CH1_Beep, INPUT);
pinMode(CH1_Test, INPUT);
pinMode(CH2_On, INPUT);
pinMode(CH2_Lamp, INPUT);
pinMode(CH2_Lamp100, INPUT);
pinMode(CH2_Powermode, INPUT);
pinMode(CH2_Beep, INPUT);
pinMode(CH2_Test, INPUT);
pinMode(CH3_On, INPUT);
pinMode(CH3_Lamp, INPUT);
pinMode(CH3_Lamp100, INPUT);
pinMode(CH3_Powermode, INPUT);
pinMode(CH3_Beep, INPUT);
pinMode(CH3_Test, INPUT);
Und frage sie per If ab
void Schalteranschluss ()
{
//if (digitalRead(CH1_On) == HIGH){ Serial.println("Ch1_On"); }
if (digitalRead(CH1_Lamp) == HIGH){ Serial.println("Ch1_Lamp"); }
if (digitalRead(CH1_Lamp100) == HIGH){ Serial.println("Ch1_Lamp100"); }
if (digitalRead(CH1_Powermode) == HIGH){ Serial.println("Ch1_Powermode"); }
if (digitalRead(CH1_Beep) == HIGH){ Serial.println("Ch1_Beep"); }
if (digitalRead(CH1_Test) == HIGH){ Serial.println("CH1_Test"); }
if (digitalRead(CH2_On) == HIGH){ Serial.println("Ch2_On"); }
if (digitalRead(CH2_Lamp) == HIGH){ Serial.println("Ch2_Lamp"); }
if (digitalRead(CH2_Lamp100) == HIGH){ Serial.println("Ch2_Lamp100"); }
if (digitalRead(CH2_Powermode) == HIGH){ Serial.println("Ch2_Powermode"); }
if (digitalRead(CH2_Beep) == HIGH){ Serial.println("Ch2_Beep"); }
if (digitalRead(CH2_Test) == HIGH){ Serial.println("CH2_Test"); }
if (digitalRead(CH2_On) == HIGH){ Serial.println("Ch3_On"); }
if (digitalRead(CH3_Lamp) == HIGH){ Serial.println("Ch3_Lamp"); }
if (digitalRead(CH3_Lamp100) == HIGH){ Serial.println("Ch3_Lamp100"); }
if (digitalRead(CH3_Powermode) == HIGH){ Serial.println("Ch3_Powermode"); }
if (digitalRead(CH3_Beep) == HIGH){ Serial.println("Ch3_Beep"); }
if (digitalRead(CH3_Test) == HIGH){ Serial.println("CH3_Test"); }
}
Die Debourncer Methode habe ich mit einem einzelnen Schalter auf einem Breadboard probiert. Das läuft. Ebenso würde es mit einem Interupt Timer gehen.
Das seltsame Verhalten der Schalter macht mir allerdings Sorgen.
Die Anschlusskabel habe ich auch nochmal auf Durchgang gemessen. Ebenso jeden einzelnen Schalter. Nun bin ich langsam ratlos und hoffe auf eure Tipps.
Ich häng nochmal ein Bild der Platine im Ganzen ran.