Kommentarer
- Eftersom du bara använder
1
s och0
s, du kan också konvertera det till ett tresiffrigt nummer och skriva ut detSerial.write(out1*100 + out2*10 + out3);
- @Gerben: Du menar
Serial.println()
. - Korrigering:
Serial.println(out1*100 + out2*10 + out3);
(tack @EdgarBonet)
Svar
Om du bara matar ut till serie behöver du inte sammanfoga – skriv bara ut varje bit separat, såsom:
Serial.print(out1); Serial.print(","); Serial.print(out2); Serial.print(","); Serial.println(out3);
Du bör undvika att använda String eftersom det inte är bra på enheter med små mängder minne som Arduinos. ead om du verkligen behöver sammanfoga siffror ska du använda en C-sträng och kanske snprintf
för att formatera siffrorna i den:
char out[30]; snprintf(out, 30, "%d,%d,%d", out1, out2, out3);
Svar
Jag andra Majenkos poäng om att bara skriva ut bitarna separat om möjligt och undvika String
objekt.
Men om du behöver bygga en sådan sträng (inte String-objekt, helt enkelt C-sträng) behöver du inte sprintf()
, vilket är en ganska stor funktion: du kan bygga strängen tecken för tecken. Till exempel:
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);
Detta använder ternär operatör , som här betyder ”om out1
är HIGH
, använd sedan tecknet "1"
, använd annars "0"
”.
Nu händer det bara att i Arduino HIGH
betyder 1 och LOW
betyder 0. Och ensiffriga siffror kan omvandlas till tecken genom att bara lägga till den numeriska koden för tecknet ”0”, vilket är 48 men kan skrivas som "0"
i C ++. Således kan du skriva:
out[0] = out1 + "0"; // convert number to character
Och du kan sätta ihop alla 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, inte en sträng. Använd print () för att skriva ut strängar och siffror.
Serial.print(digitalRead(r1)); Serial.print(digitalRead(r2)); Serial.println(digitalRead(r3));