Kommentarer
- Da du kun bruger
1
s og0
s, du kan også konvertere det til et trecifret tal og udskrive detSerial.write(out1*100 + out2*10 + out3);
- @Gerben: Du mener
Serial.println()
. - Rettelse:
Serial.println(out1*100 + out2*10 + out3);
(tak @EdgarBonet)
Svar
Hvis du bare udgiver til seriel, behøver du ikke sammenkæde – bare udskriv hver bit separat, som:
Serial.print(out1); Serial.print(","); Serial.print(out2); Serial.print(","); Serial.println(out3);
Du bør undgå at bruge String, da det ikke er godt på enheder med små mængder hukommelse som Arduinos. Inst ead, hvis du virkelig har brug for at sammenkæde tal, skal du bruge en C-streng og måske snprintf
for at formatere tallene i den:
char out[30]; snprintf(out, 30, "%d,%d,%d", out1, out2, out3);
Svar
I anden Majenko “pointer om bare at udskrive bitene, hvis det er muligt, og undgå String
objekter.
Men hvis du har brug for at bygge en sådan streng (ikke String-objekt, bare almindelig C-streng), behøver du ikke sprintf()
, hvilket er en ganske stor funktion: du kan opbygge 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 bruger ternær operator , som her betyder “hvis out1
er HIGH
, så brug tegnet "1"
, ellers brug "0"
”.
Nu sker det bare, at i Arduino HIGH
betyder 1 og LOW
betyder 0. Og enkeltcifrede tal kan konverteres til tegn ved blot at tilføje den numeriske kode for karakteren “0”, som er 48 men kan skrives som "0"
i C ++. Således kan du skrive:
out[0] = out1 + "0"; // convert number to character
Og du kan sætte alle 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) udskriver en byte, ikke en streng. Brug print () til at udskrive strenge og tal.
Serial.print(digitalRead(r1)); Serial.print(digitalRead(r2)); Serial.println(digitalRead(r3));