Go Down

Topic: Zeicheneingabe über Tastatur um ein paar Zeichen verschieben?? (Read 891 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy