Eine Tastatur als Taster benutzen

Hallo,

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.

Vielen Dank schon mal im voraus.

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.

Hallo,

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.

Gruß,
Ralf

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.