Dette spørsmålet har allerede svar her :
Kommentarer
Svar
Hvis du bare skriver ut til serie, trenger du ikke å sammenkoble – bare skriv ut hver bit separat, slik som:
Serial.print(out1); Serial.print(","); Serial.print(out2); Serial.print(","); Serial.println(out3);
Du bør unngå å bruke String da det ikke er bra på enheter med små mengder minne som Arduinos. ead hvis du virkelig trenger å sammenkoble tall, bør du bruke en C-streng og kanskje snprintf
for å formatere tallene i den:
char out[30]; snprintf(out, 30, "%d,%d,%d", out1, out2, out3);
Svar
Jeg får andre poeng fra Majenko om bare å skrive ut bitene separat hvis mulig, og unngå String
objekter.
Men hvis du trenger å bygge en slik streng (ikke String-objekt, bare ren C-streng), trenger du ikke sprintf()
, som er ganske stor funksjon: du kan bygge strengen karakter for tegn. For eksempel:
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);
Dette bruker ternær operator , som her betyr «hvis out1
er HIGH
, så bruk tegnet "1"
, ellers bruk "0"
”.
Nå skjer det bare at i Arduino HIGH
betyr 1 og LOW
betyr 0. Og ensifrede tall kan konverteres til tegn ved å bare legge til den numeriske koden for tegnet «0», som er 48, men kan skrives som "0"
i C ++. Dermed kan du skrive:
out[0] = out1 + "0"; // convert number to character
Og du kan sette alt sammen som:
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);
Svar
Serial.write (b) skriver ut en byte, ikke en streng. Bruk print () til å skrive ut strenger og tall.
Serial.print(digitalRead(r1)); Serial.print(digitalRead(r2)); Serial.println(digitalRead(r3));