nach langem hin und her habe Ich mich an den Leonardo herangetraut, und nach etwas Einlesen ein kleines Programm geschrieben welches die Wichtigsten Funktionen mal als Taste versendet. Genommen dafür habe ich die ASCII Codes. Was mir Auffällt, sind zum einen wenn ich die Originalen PZB Tasten/Schalter Anschließe, dann besteht das Problem, dass entweder der Falsche oder eine ganz andere Taste betätigt wird.
Habe dann in ZUSI Selbst die Tasten, die der Arduino verschickt, angepasst in Form einer eigenen Tastatur.
Ich habe eher das Gefühl, dass mir Entweder im Programm selbst ein Fehler Unterlaufen ist mit den Zeiten, als aber auch ich beim Anschluss der PZB Tasten einen Fehler gemacht habe, hier in form des "Entprellens". Habe hier einen 10k Widerstand genommen...
Vielleicht habe Ich auch nur Irgendwo einen Denk-/Anschlussfehler. Kann da jemand vielleicht Helfen. Und mir netterweise nochmal den Richtigen Anschluss der Tasten Aufzeigen. Vielleicht habe Ich da etwas Missverstanden.
Anbei der Code:
Code: Alles auswählen
#include <Keyboard.h>
//Zugbeeinflussung PZB90
int buttonStateFrei = 0;
int buttonStateWach = 0;
int buttonStateBef = 0;
//Federspeicherbremse
int buttonStateFBA = 0;
int buttonStateFBL = 0;
//Mg-Bremse
int buttonStateMg = 0;
//Fahrtrichtung
int buttonStateFV = 0;
int buttonStateFR = 0;
//Füherraum
int buttonStateFRI = 0;
int buttonStateFRO = 0;
//Hauptschalter ET
int buttonStateHSE = 0;
int buttonStateHSA = 0;
//Stromabnehmer ET
int buttonStateSTH = 0;
int buttonStateSTS = 0;
//Sand
int buttonStateSand = 0;
//SIFA
int buttonStateSifa = 0;
void setup() {
pinMode(1, INPUT); //PZB90 Frei
pinMode(2, INPUT); //PZB90 Wachsam
pinMode(3, INPUT); //PZB90 Befehl 40
pinMode(4, INPUT); //Federspeicherbremse Anlegen
pinMode(5, INPUT); //Federspeicherbremse Lösen
pinMode(6, INPUT); //Mg-Bremse
pinMode(7, INPUT); //Fahrtrichtung Vorwärts
pinMode(8, INPUT); //Fahrtrichtung Rückwärts
pinMode(9, INPUT); //Führerpult Aktivieren
pinMode(10, INPUT); //Füherpult Deaktivieren
pinMode(11, INPUT); //Hauptschalter Einlegen
pinMode(12, INPUT); //Hauptschalter Auslegen
pinMode(13, INPUT); //Stromabnehmer Heben
pinMode(14, INPUT); //Stromabnehmer Senken
pinMode(15, INPUT); //Sanden
pinMode(16, INPUT); //SIFA
Keyboard.begin();
}
void loop() {
buttonStateFrei = digitalRead(1);
if (buttonStateFrei == HIGH) {
Keyboard.press(46);
delay(100);
Keyboard.releaseAll();
}
buttonStateWach = digitalRead(2);
if (buttonStateWach == HIGH) {
Keyboard.press(45);
delay(100);
Keyboard.releaseAll();
}
buttonStateBef = digitalRead(3);
if (buttonStateBef == HIGH) {
Keyboard.press(44);
delay(100);
Keyboard.releaseAll();
}
buttonStateFBA = digitalRead(4);
if (buttonStateFBA == HIGH) {
Keyboard.press(228);
delay(100);
Keyboard.releaseAll();
}
buttonStateFBL = digitalRead(5);
if (buttonStateFBL == HIGH) {
Keyboard.press(252);
delay(100);
Keyboard.releaseAll();
}
buttonStateMg = digitalRead(6);
if (buttonStateMg == HIGH) {
Keyboard.press(109);
delay(100);
Keyboard.releaseAll();
}
buttonStateFV = digitalRead(7);
if (buttonStateFV == HIGH) {
Keyboard.press(118);
delay(100);
Keyboard.releaseAll();
}
buttonStateFR = digitalRead(8);
if (buttonStateFR == HIGH) {
Keyboard.press(114);
delay(100);
Keyboard.releaseAll();
}
buttonStateFRI = digitalRead(9);
if (buttonStateFRI == HIGH) {
Keyboard.press(105);
delay(100);
Keyboard.releaseAll();
}
buttonStateFRO = digitalRead(10);
if (buttonStateFRO == HIGH) {
Keyboard.press(111);
delay(100);
Keyboard.releaseAll();
}
buttonStateHSE = digitalRead(11);
if (buttonStateHSE == HIGH) {
Keyboard.press(104);
delay(100);
Keyboard.releaseAll();
}
buttonStateHSA = digitalRead(12);
if (buttonStateHSA == HIGH) {
Keyboard.press(110);
delay(100);
Keyboard.releaseAll();
}
buttonStateSTH = digitalRead(13);
if (buttonStateSTH == HIGH) {
Keyboard.press(101);
delay(100);
Keyboard.releaseAll();
}
buttonStateSTS = digitalRead(14);
if (buttonStateSTS == HIGH) {
Keyboard.press(99);
delay(100);
Keyboard.releaseAll();
}
buttonStateSand = digitalRead(15);
if (buttonStateSand == HIGH) {
Keyboard.press(115);
delay(100);
Keyboard.releaseAll();
}
buttonStateSifa = digitalRead(16);
if (buttonStateSifa == HIGH) {
Keyboard.press(32);
delay(100);
Keyboard.releaseAll();
}
}
Kevin