Összecsukja az egész számokat stringként [duplikátum]

Erre a kérdésre már itt vannak válaszok :

megjegyzések

  • Mivel csak a 1 s és 0 s, három számjegyű számgá is konvertálhatja, és kinyomtathatja ezt a Serial.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)); 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük