Fragen zur switch-case-Anweisung in Kombination mit for-Schleife

Hallo zusammen,

ich versuche mich momentan für mein Studium in das Arduino-System einzuarbeiten. Hierfür wurde mir folgende Aufgabe gestellt:
Ich soll Buchstaben im seriellen Monitor einlesen und diesen Buchstaben in Form von LED-Signalen ausgeben. Die LED soll an den Stellen wo im ASCII-Code des Buchstabens eine '1' ist leuchten und wo eine '0' ist ausbleiben.
Ich kann mit meinem Programm im seriellen Monitor bereits einen Buchstaben eingeben und berechnen über die Umrechnung von Dezimalsystem zu Binärsystem den Binärcode des jeweiligen Buchstabens (Beispiel: Buchstabe A; Dez: 65; Bin: 0100 0001). Was bei mir noch nicht funktioniert ist das jeweilige Aufleuchten der LED bei den Stellen im Binärcode '1'.
Ich hoffe mein Problem ist verständlich. Meinen Code poste ich unten mit.

Ich bedanke mich schon im Voraus für eure Hilfe!

PS: Ich hoffe ich habe alles richtig gemacht, es ist das erste Mal, dass ich etwas in diesem Forum poste. Entschuldigung, falls etwas falsch sein sollte!

char eingabe;
int zahl = 0;
int rest[8] = {0, 0, 0, 0, 0, 0, 0, 0};
int Schalter_Pin = 12;
int Schalter_Messwert = 0;
int LED_Pin = 2;

void setup()
{
  Serial.begin(9600);
  pinMode(Schalter_Pin, INPUT);
  pinMode(LED_Pin, OUTPUT);
}

void loop()
{
  Schalter_Messwert = digitalRead(Schalter_Pin);
  eingabe = Serial.read();
  if (eingabe == 'A' || eingabe == 'B' || eingabe == 'C' || eingabe == 'D' || eingabe == 'E' || eingabe == 'F' || eingabe == 'G' || eingabe == 'H' || eingabe == 'I' || eingabe == 'J' || eingabe == 'K' || eingabe == 'L' || eingabe == 'M' || eingabe == 'N' || eingabe == 'O' || eingabe == 'P' || eingabe == 'Q' || eingabe == 'R' || eingabe == 'S' || eingabe == 'T' || eingabe == 'U' || eingabe == 'V' || eingabe == 'W' || eingabe == 'X' || eingabe == 'Y' || eingabe == 'Z')
  { Serial.println(eingabe);
    zahl = eingabe;
    Serial.println(zahl);
    for (int i = 0; i < 8; i++)
    {
      rest[i] = zahl % 2;
      zahl = zahl / 2;
    }
    Serial.println("");
    for (int p = 0; p < 8; p++)
    {
      Serial.print(rest[7 - p]);
      if (rest[7 - p] == 1) {
        digitalWrite(LED_Pin, HIGH);
        delay(300);
        digitalWrite(LED_Pin, LOW);
      }
      switch (rest[7 - p]) {
        case 1: digitalWrite(LED_Pin, HIGH); delay(250); digitalWrite(LED_Pin, LOW); break;
        case 0: digitalWrite(LED_Pin, LOW); break;
      }
      rest[7 - p] = 0;
    }
    Serial.println("");
  }
  eingabe = ' ';
}

Solltest Du da nicht besser 8 LED für die einzelnen Bits haben?

Gruß Tommy

Hallo Tommy,

ich habe vergessen dazu zu schreiben, dass meine Aufgabe ist das ganze bitweise - also seriell nacheinander - zu machen. Sorry dafür!

Schönen Gruß

Und, woran er kennt der Bit Led Beobachter, wann ein neuer Buchstabe beginnt?

Hallo,

mein Ziel war es lediglich einzelne Buchstabe zu senden. Ich dachte an eine weitere LED, die solange leuchtet, wie das senden des Buchstaben andauert.
Jedoch wollte ich erst ein Problem nach dem anderen angehen.

Schöne Grüße

Jedoch wollte ich erst ein Problem nach dem anderen angehen.

Klar, die gute alte Salamitaktik.

So kann man wenigstens jede investierte Arbeit in die Tonne kloppen, weil sich die Bedingungen nach und nach ändern.
Gut, dass ich noch nicht weiter über dein Problem nachgedacht habe.
Bin gespannt was da noch so für Anforderungen kommen.

Tipp:
Bau dir ein Soft SPI.
Eine LED machste an /CS um zu zeigen, wann ein Buchstabe gezeigt wird.
Eine LED machste an Mosi um das bit zu zeigen.
Eine LED machste an Sclk um zu zeigen, wann ein neues Bit gezeigt wird.

Hallo,

danke für deinen Tipp. Ich werde versuchen den umzusetzen.

Schönen Gruß

Hallo,

du suchst sowas?

void formatiereByte (byte data)
{
  Serial.print(F("data: "));
  for (char i=7;i>=4;i--) {
    Serial.print( (data >> i) & 0x01);
  }
  Serial.print("'");
  for (char i=3;i>=0;i--) {
    Serial.print( (data >> i) & 0x01);
  }
  Serial.println();
}