Sammenkæd heltal som streng [duplikat]

Dette spørgsmål har allerede svar her :

Kommentarer

  • Da du kun bruger 1 s og 0 s, du kan også konvertere det til et trecifret tal og udskrive det Serial.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)); 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *