Arduino Serial (4 oder mehr Zeichen)

Gast #4528993
Lesenswert?
• ▲
▼
Hallo,
ich bin ein Elektro/MC Neuling. Derzeit versuche ich eine kleine 
Steuerung umzusetzen. Soweit funktioniert das ganze auch sehr gut, ich 
arbeite hierbei vom Rechner über die Console. Ich hätte die Ports aber 
gerne sinvoller "beschriftet", daher habe ich mir hierfür folgendes 
Muster ausgesucht "0011" soll Ausgang 1 anschalten (001=port 
1=true/false) "0010" schaltet Ausgang 1 aus.
Wenn ich diesen "Code" (0011) allerdings über die Console sende, wird 
dieser scheinbar nicht zusammenhängend verarbeitet sondern jedes Zeichen 
für sich.
Hat jemand für mich einen Lösungsvorschlag, bzw. kann mir helfen ?
Danke ! :)

##################################
int ausgang1 = 2;
void setup()
{
pinMode(2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
while (Serial.available() == 0);
int value = Serial.read() - '0';
Serial.println("Erfolgreich einen Befehl erhalten!\n");
if (value == 0011)
{
digitalWrite(ausgang1,HIGH);
delay(10);
}
else if (value == 0010)
{
digitalWrite(ausgang1,HIGH);
delay(10);
}
else
{
Serial.println("Leider war die Eingabe fehlerhaft!\n\n");
}
Serial.flush();
}
##################################
#4529607
Lesenswert?
• ▲
▼
Wobei ein prüfen mit Dezimal oder Oktal Werten unnötig viel Code macht.

Mit ner Bitmaske geht das einfacher.

Vorallem bei 4 Bit hast du 16 Zustände und so mit 16 If Abfragen mit ner 
Bitmaske nur 8.

Bei 8 Bit müsstest du 256 If Abfragen schreiben mit der Maske nur 16

Dafür musst du nur das Zusammensetzen über links schieben der Bits 
machen

Gruß JackFrost
#4529636
Lesenswert?
• ▲
▼
Vorsicht: in C (C++/"Arduino Sketch") werden Ziffern-Konstaneten, die 
mit "0" beginnen, als Oktal-Zahl aufgefaßt.
Also ist 0011 = 1*8 + 1 = 9
Andere Darstellungen:
binär       0b1001     (Eigentlich GCC-Erweiterung, aber inzwischen
                        Standard
dezimal     9
Hexadezimal 0x09
Oktal       011

oder aber als
char        '\t'.       TAB (ASCII und ff. vorausgesetzt)

Und ganz wichtig: Zfferfolgen sind numerische Literale und nicht das 
gleiche wie Strings.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren