Comentários
- Já que você só usa
1se0s, você também pode convertê-lo em um número de três dígitos e imprimirSerial.write(out1*100 + out2*10 + out3); - @Gerben: Você quer dizer
Serial.println(). - Correção:
Serial.println(out1*100 + out2*10 + out3);(obrigado @EdgarBonet)
Resposta
Se você está apenas enviando para serial, não precisa concatenar – apenas imprima cada bit separadamente, como:
Serial.print(out1); Serial.print(","); Serial.print(out2); Serial.print(","); Serial.println(out3);
Você deve evitar usar String, pois não é bom em dispositivos com pequenas quantidades de memória como Arduinos. Inst Em seguida, se você realmente precisa concatenar números, deve usar uma string C e talvez snprintf para formatar os números nela:
char out[30]; snprintf(out, 30, "%d,%d,%d", out1, out2, out3);
Resposta
Eu concordo com os pontos de Majenko sobre apenas imprimir os bits separadamente, se possível, e evitar String objetos.
No entanto, se você precisar construir tal string (não o objeto String, apenas string C simples), você não precisa de sprintf(), que é uma função bastante grande: você pode construir a string caractere por caractere. Por exemplo:
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);
Isso está usando o operador ternário , que aqui significa “se out1 for HIGH, use o caractere "1", caso contrário, use "0" ”.
Agora, acontece que no Arduino HIGH significa 1 e LOW significa 0. E os números de um único dígito podem ser convertidos em caracteres apenas adicionando o código numérico do caractere “0”, que é 48, mas pode ser escrito como "0" em C ++. Assim, você pode escrever:
out[0] = out1 + "0"; // convert number to character
E você pode colocar todos juntos como:
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);
Resposta
Serial.write (b) imprime um byte, não uma string. Use print () para imprimir strings e números.
Serial.print(digitalRead(r1)); Serial.print(digitalRead(r2)); Serial.println(digitalRead(r3));