Liitä kokonaisluvut merkkijonona [kaksoiskappale]

Tähän kysymykseen on jo annettu vastauksia :

Kommentit

  • Koska käytät vain 1 s ja 0 s, voit myös muuntaa sen kolminumeroiseksi numeroksi ja tulostaa Serial.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)); 

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *