Kommentare
- Da Sie nur
1
s und0
s können Sie es auch in eine dreistellige Zahl konvertieren und dieseSerial.write(out1*100 + out2*10 + out3);
- @Gerben: Sie meinen
Serial.println()
. - Korrektur:
Serial.println(out1*100 + out2*10 + out3);
(danke @EdgarBonet)
ausdrucken
Antwort
Wenn Sie nur auf seriell ausgeben, müssen Sie nicht verketten – drucken Sie einfach jedes Bit separat aus. Beispiel:
Serial.print(out1); Serial.print(","); Serial.print(out2); Serial.print(","); Serial.println(out3);
Sie sollten die Verwendung von String vermeiden, da dies auf Geräten mit wenig Speicher wie Arduinos nicht gut ist. Inst Wenn Sie wirklich Zahlen verketten müssen, sollten Sie eine C-Zeichenfolge und möglicherweise snprintf
verwenden, um die Zahlen darin zu formatieren:
char out[30]; snprintf(out, 30, "%d,%d,%d", out1, out2, out3);
Antwort
Ich bin der Meinung, dass Majenko nur die Bits nach Möglichkeit separat druckt und String
Objekte.
Wenn Sie jedoch eine solche Zeichenfolge erstellen müssen (kein Zeichenfolgenobjekt, sondern nur eine einfache C-Zeichenfolge), benötigen Sie sprintf()
, was eine ziemlich große Funktion ist: Sie können die Zeichenfolge zeichenweise erstellen. Beispiel:
char out[4]; // 3 + 1 char for the termination character out[0] = out1==HIGH ? "1" : "0"; out[1] = out2==HIGH ? "1" : "0"; out[2] = out3==HIGH ? "1" : "0"; out[3] = "\0"; // add NUL termination Serial.println(out);
Hierbei wird die ternärer Operator , was hier bedeutet: „Wenn out1
HIGH
ist, verwenden Sie das Zeichen "1"
, andernfalls verwenden Sie "0"
„.
Nun kommt es nur vor, dass in Arduino HIGH
bedeutet 1 und LOW
bedeutet 0. Einstellige Zahlen können in Zeichen umgewandelt werden, indem nur der numerische Code des Zeichens „0“ hinzugefügt wird, der 48 ist, aber als "0"
in C ++. So können Sie schreiben:
out[0] = out1 + "0"; // convert number to character
Und Sie können alles zusammenfügen als:
char out[4]; // 3 + 1 char for the termination character out[0] = digitalRead(r1) + "0"; out[1] = digitalRead(r2) + "0"; out[2] = digitalRead(r3) + "0"; out[3] = "\0"; // add NUL termination Serial.println(out);
Antwort
Serial.write (b) druckt ein Byte, keine Zeichenfolge. Verwenden Sie print (), um Zeichenfolgen und Zahlen zu drucken.
Serial.print(digitalRead(r1)); Serial.print(digitalRead(r2)); Serial.println(digitalRead(r3));