ich habe eine PS2 Tastertur an meinen Arduino UNO angeschlossen mit hilfe diere Anleitunghttp://www.pjrc.com/teensy/td_libs_PS2Keyboard.html. Das hat auch ohne Problemme funktioniert, das Beispiel programm leuft. So jetzt wollte ich die Tastertur benutzen um Taster und Eingänge zu sparen.
Mein Code:
#include <PS2Keyboard.h>
const int DataPin = 2;
const int IRQpin = 3;
int Pro_1 = 0;
int Pro_2 = 0;
int Aus = 1;
PS2Keyboard keyboard;
void setup() {
delay(1000);
keyboard.begin(DataPin, IRQpin);
Serial.begin(9600);
Serial.println("Keyboard Test:");
void loop() {
if (keyboard.available()) {
c = keyboard.read();
}
if (c == 1) {
Pro_1 = 1;
Pro_2 = 0;
Aus = 0;
} else if (c == 2) {
Pro_1 = 0;
Pro_2 = 1;
Aus = 0;
} else if (c == PS2_ESC) {
Pro_1 = 0;
Pro_2 = 0;
Aus = 1;
}
...
Mein Problemm ist jetzt das die Variabelen Pro_1, Pro_2 und Aus nicht gesetzt werden.
Mach mal Serial.println(c) um zu sehen ob da überhaupt was eingelesen wird und wenn ja was.
Da steht auch:
"Keystrokes are returned as ASCII characters"
Um ASCII in Zahlen umzuwandeln, musst du Minus 0x30, 48 oder '0' machen. Erst dann erscheint da wirklich 1, wenn du die 1-Taste drückst. Oder du fragst auf c == '1' ab, was hier vernünftiger ist.
wahrscheinlich ist c falsch definiert, aber in Deinem Sketch ist keine Definition von c zu sehen. Reich die mal nach, vielleicht kann man dann den Fehler erkennen.
Danke für die Schnellen antworten. Es lag wirglich an den ASCII Zeichen und an einer Geschweiftenklammer nach if (keyboard.available()) { diese muss hinter den If abfragen kommen.
Der richtige Code sieht so aus:
#include <PS2Keyboard.h>
const int DataPin = 2;
const int IRQpin = 3;
int Pro_1 = 0;
int Pro_2 = 0;
int Aus = 1;
PS2Keyboard keyboard;
void setup() {
delay(1000);
keyboard.begin(DataPin, IRQpin);
Serial.begin(9600);
Serial.println("Keyboard Test:");
void loop() {
if (keyboard.available()) {
c = keyboard.read();
if (c == '1') {
Pro_1 = 1;
Pro_2 = 0;
Aus = 0;
} else if (c == '2') {
Pro_1 = 0;
Pro_2 = 1;
Aus = 0;
} else if (c == PS2_ESC) {
Pro_1 = 0;
Pro_2 = 0;
Aus = 1;
}
}
...
und c ist als char deklariert. Hab ich vergessen zu kopieren.