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 = ' ';
}