Kommentit
- Koska käytät vain
1
s ja0
s, voit myös muuntaa sen kolminumeroiseksi numeroksi ja tulostaaSerial.write(out1*100 + out2*10 + out3);
- @Gerben: Tarkoitat
Serial.println()
. - Korjaus:
Serial.println(out1*100 + out2*10 + out3);
(kiitos @EdgarBonet)
Vastaa
Jos syötät vain sarjaan, sinun ei tarvitse ketjua – tulosta vain jokainen bitti erikseen, kuten:
Serial.print(out1); Serial.print(","); Serial.print(out2); Serial.print(","); Serial.println(out3);
Vältä merkkijonon käyttöä, koska se ei ole hyvä laitteissa, joissa on vähän muistia, kuten Arduinos. Inst ead, jos sinun on todella liitettävä numeroita, käytä C-merkkijonoa ja ehkä snprintf
muotoillaksesi numerot siihen:
char out[30]; snprintf(out, 30, "%d,%d,%d", out1, out2, out3);
Vastaa
Toisen Majenkon huomautukset siitä, että vain tulostetaan bitit erikseen, jos mahdollista, ja vältetään String
objektit.
Jos sinun on kuitenkin rakennettava tällainen merkkijono (ei String-objekti, vain tavallinen C-merkkijono), sinun ei tarvitse sprintf()
, joka on melko iso toiminto: voit rakentaa merkkijonon merkin mukaan. Esimerkki:
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);
Tämä käyttää ternary-operaattori , mikä tarkoittaa tässä ”jos out1
on HIGH
, käytä sitten merkkiä "1"
, muuten käytä "0"
”.
Nyt sattuu vain, että Arduinossa HIGH
tarkoittaa 1 ja LOW
tarkoittaa 0. Ja yksinumeroiset numerot voidaan muuntaa merkkeiksi lisäämällä vain merkin ”0” numeerinen koodi, joka on 48, mutta voidaan kirjoittaa nimellä "0"
C ++: ssa. Näin voit kirjoittaa:
out[0] = out1 + "0"; // convert number to character
Ja voit koota kaikki yhteen seuraavasti:
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);
vastaus
Serial.write (b) tulostaa yhden tavun, ei merkkijonoa. Käytä merkkijonoja ja numeroita tulostamalla print ().
Serial.print(digitalRead(r1)); Serial.print(digitalRead(r2)); Serial.println(digitalRead(r3));