Pages: [1]   Go Down
Author Topic: Zeicheneingabe über Tastatur um ein paar Zeichen verschieben??  (Read 620 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Code:
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.
Logged

Austria
Offline Offline
Full Member
***
Karma: 2
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
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
Logged

Germany S-H
Offline Offline
Edison Member
*
Karma: 117
Posts: 2455
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Code:
   if ((c>='a')&&(c<='z')){
      c=c+3;
      if (c>'z') c=c-26;
    }
Für Großbuchstaben
Code:
    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.
Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1664
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

oder mal so, da bist Du sehr flexibel, welche zeichen Du durch was ersetzt:
Code:
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
Logged

Pages: [1]   Go Up
Jump to: