Danke für Eure Antworten!
Das mit der Firmware hat jetzt wunderbar funktioniert.
Den Sketch muß ich nun halt mit dem ISP-Programmer raufladen, was gut funktioniert.
Den Arduino Mega 2560 hab ich genommen, weil er:
a) schon lange ungenutzt herumliegt
b) weil ich viele Eingang-Pins benötige
Das Projekt ist nämlich, einen alten Spielhallencomputer, in dem jetzt ein PC werkelt, anzusteuern.
Dafür braucht es 2x 4-Pins für die Joystick , 2x 6-Pins für die Taster, 2x Münzeinwurf, 2x Spielertaste und noch 1x Spezialtaste!
Insgesamt also 25 Eingang-Pins!!!
Erstmal verwende ich nachfolgenden Sketch zum Testen
uint8_t buf[8] = { 0 }; //Keyboard report buffer
#define PIN_W 4 // Pin for w
#define PIN_A 5 // Pin for a
#define PIN_S 6 // Pin for s
#define PIN_D 7 // Pin for d
void setup() {
Serial.begin(9600); // Setup Serial communication
//Set pinmode of Input pins
pinMode(PIN_W, INPUT);
pinMode(PIN_A, INPUT);
pinMode(PIN_S, INPUT);
pinMode(PIN_D, INPUT);
}
void loop() {
//When button representing W is pressed
if (digitalRead(PIN_W) == HIGH) {
buf[2] = 26; // W keycode
Serial.write(buf, 8); // Send keypress
releaseKey();
}
//When button representing A is pressed
if (digitalRead(PIN_A) == HIGH) { buf[2] = 4; // A keycode
Serial.write(buf, 8); // Send keypress
releaseKey();
}
//When button representing S is pressed
if (digitalRead(PIN_S) == HIGH) { buf[2] = 22; // S keycode
Serial.write(buf, 8); // Send keypress
releaseKey();
}
//When button representing D is pressed
if (digitalRead(PIN_D) == HIGH) { buf[2] = 7; // D keycode
Serial.write(buf, 8); // Send keypress
releaseKey();
}
}
// Function for Key Release
void releaseKey() {
buf[0] = 0;
buf[2] = 0;
Serial.write(buf, 8); // Send Release key
}
Es wird der zu sendende Wert immer nur auf buf[2] übermittelt.
Also immer nur ein Buchstabe nach dem anderen.
Wie kann ich aber mehrere Tasten gleichzeitig senden.
Der Code ist ja im Moment alles andere als elegant.
Dabei geht es mir erstmal nicht um die Erfassung der Inputs, sondern wie ich z.B. 6 gleichzeitig gedrückte Tasten in einem Wusch an den PC sende.
6 gleichzeitig gedrückte Tasten sind bei einem 2-Player Arcade Automaten eh schon untere Grenze.
Gewünscht wären schon eher 10 Tasten gleichzeitig. Klingt viel, aber z.B. bei Street Fighter kann das leicht gebraucht werden.
Ich hab nämlich noch nicht herausgefunden, für was die verschiedenen Bytes des "buf[]" verwendet werden.....
Prinzipiell hab ich auch noch nicht heraus gefunden, ob man da nicht auch an die Grenzen des HID-Protokolls kommt?
V-USB-HID klingt auch interessant.
Da werd ich mich wohl noch damit befassen.
Da die Basics beim aktuellen Projekt aber soweit schon mal funktionieren, bin ich da hoffentlich vom Ziel nicht weit entfernt.....
8)
Letzte Alternative wäre, auf PS2 umzusteigen, da soll das anscheinend funktionieren.
Inzwischen Danke