Zeicheneingabe über Tastatur um ein paar Zeichen verschieben??

In meinem Projekt habe ich eine usb tastatur und ein lcd display angeschlossen. Das funktioniert auch soweit.
Nun möchte ich aber das die Zeichen a-z um ein paar Zeichen verschoben werden, sagen wir mal um 3 Zeichen. Heißt also wenn jemand a drückt kommt d und wenn jemand h drückt kommt k usw.

Ich nutze die PS2Keyboard lib
Der Grundlegende Code sieht so aus:

if (keyboard.available()  {
    char c = keyboard.read();
    lcd.print(c);
}

Wie kann ich die Zeichen nun wie oben beschrieben verschieben, so dass auf dem Display nicht der eingegebene Buchstabe kommt, sonder der 3 weiter?? Und wenn das Ende des Alpabetes erreicht ist (ohne umlaute) soll wieder vorne angefangen werden. Also wenn x getippt wird soll a kommen.

Du könntest probieren einfach 3 zu "c" addieren. Die Zeichen werden ja im ASCII Code gespeichert.

char c = keyboard.read() + 3;

Wie du das bei x,y,z machst musst du dir noch überlegn.
Vielleicht hilft dir diese Tabelle:
http://www.tcp-ip-info.de/tcp_ip_und_internet/ascii.gif

Balisto:
Wie kann ich die Zeichen nun wie oben beschrieben verschieben, so dass auf dem Display nicht der eingegebene Buchstabe kommt, sonder der 3 weiter?? Und wenn das Ende des Alpabetes erreicht ist (ohne umlaute) soll wieder vorne angefangen werden. Also wenn x getippt wird soll a kommen.

Für Kleinbuchstaben:

   if ((c>='a')&&(c<='z')){ 
      c=c+3;
      if (c>'z') c=c-26;
    }

Für Großbuchstaben

    if ((c>='A')&&(c<='Z')){ 
      c=c+3;
      if (c>'Z') c=c-26;
    }

Und wenn Du es für Klein- und Großbuchstaben benötigst, dann einfach beides nacheinander weg.

hi,

oder mal so, da bist Du sehr flexibel, welche zeichen Du durch was ersetzt:

int eingang;
char myChars[] = {"defghijklmnopqrstuvwxyzabc"};

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    eingang = Serial.read();
    if (eingang != 10) {
      Serial.print("Umgewandelt: ");
      Serial.println(myChars[eingang-97]);
    }
  }
}

gruß stefan