megjegyzések
- Mivel csak a
1s és0s, 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));