Go Down

Topic: Zeicheneingabe über Tastatur um ein paar Zeichen verschieben?? (Read 782 times) previous topic - next topic

Balisto

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: [Select]
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.

J3RE

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

Code: [Select]
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

jurs


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: [Select]

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

Für Großbuchstaben
Code: [Select]

    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.

Eisebaer

hi,

oder mal so, da bist Du sehr flexibel, welche zeichen Du durch was ersetzt:
Code: [Select]

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

Go Up