megjegyzések
- Mivel csak a
1
s és0
s, három számjegyű számgá is konvertálhatja, és kinyomtathatja ezt aSerial.write(out1*100 + out2*10 + out3);
- @Gerben:
Serial.println()
. - Javítás:
Serial.println(out1*100 + out2*10 + out3);
(köszönöm @EdgarBonet)
Válasz
Ha csak sorosnak adod ki, akkor nem kell összefűznöd – csak nyomtasson külön-külön minden bitet, például:
Serial.print(out1); Serial.print(","); Serial.print(out2); Serial.print(","); Serial.println(out3);
Kerülje a String használatát, mivel ez nem jó azokon az eszközökön, amelyek kis memóriával rendelkeznek, például Arduinos. ead ha valóban össze kell összefűznöd a számokat, akkor használj C karakterláncot, és talán snprintf
formázza a számokat:
char out[30]; snprintf(out, 30, "%d,%d,%d", out1, out2, out3);
Válasz
Másodszor Majenko azt állítja, hogy ha csak lehetséges, csak külön nyomtatja ki a biteket, és kerülje a String
objektumok.
Ha azonban ilyen karakterláncot kell készítenie (nem String objektum, csak egyszerű C karakterlánc), akkor nem kell sprintf()
, ami elég nagy funkció: karakterenként felépítheti a karakterláncot. Például:
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);
Ez a hármas operátor , ami itt azt jelenti, hogy „ha out1
HIGH
, akkor használja a "1"
, különben használja a "0"
”szót.
Most csak az történik, hogy az Arduino-ban HIGH
jelentése 1, az LOW
jelentése 0. És az egyjegyű számokat karakterekké alakíthatjuk, ha csak hozzáadjuk a „0” karakter numerikus kódját, amely 48, de írható "0"
C ++ nyelven. Így írhat:
out[0] = out1 + "0"; // convert number to character
És mindezt összeállíthatja:
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);
Válasz
A Serial.write (b) egy bájtot nyomtat, nem karakterláncot. Használja a print () karakterláncok és számok kinyomtatását.
Serial.print(digitalRead(r1)); Serial.print(digitalRead(r2)); Serial.println(digitalRead(r3));