Como faço para converter um int,, n
em uma string para que, quando eu enviar pela serial, ele seja enviado como uma string?
Isso é o que eu tenho até agora:
int ledPin=13;
int testerPin=8;
int n=1;
char buf[10];
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(testerPin, OUTPUT);
Serial.begin(115200);
}
void loop()
{
digitalWrite(ledPin, HIGH);
sprintf(buf, "Hello!%d", n);
Serial.println(buf);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
n++;
}
Respostas:
Use assim:
Você pode encontrar mais exemplos aqui .
fonte
use a
itoa()
função incluída emstdlib.h
fonte
Você pode simplesmente fazer:
que será convertido
n
em uma string ASCII automaticamente. Consulte a documentação paraSerial.println()
.fonte
Você só precisa envolvê-lo em um objeto String como este:
Você também pode fazer:
fonte
Esta é uma solução com velocidade otimizada para converter int (inteiro de 16 bits com sinal) em string.
Essa implementação evita o uso de divisão, já que o AVR de 8 bits usado para Arduino não tem instrução DIV de hardware, o compilador traduz a divisão em subtrações repetitivas demoradas. Portanto, a solução mais rápida é usar ramificações condicionais para construir a string.
Um buffer fixo de 7 bytes preparado desde o início na RAM para evitar a alocação dinâmica. Como tem apenas 7 bytes, o custo do uso fixo de RAM é considerado mínimo. Para ajudar o compilador, adicionamos o modificador de registro na declaração da variável para acelerar a execução.
Este esboço é compilado para 1.082 bytes de código usando avr-gcc que vem junto com o Arduino v1.0.5 (o tamanho da própria função int2str é 594 bytes). Em comparação com a solução que usa o objeto String que compilou em 2.398 bytes, esta implementação pode reduzir o tamanho do código em 1,2 Kb (assumindo que você não precisa de nenhum outro método de objeto String, e seu número é restrito ao tipo int assinado).
Essa função pode ser otimizada ainda mais, escrevendo-a no código assembler adequado.
fonte
A solução é muito grande. Experimente este simples. Forneça um buffer de 7 ou mais caracteres, sem verificação.
Pode ser facilmente modificado para dar o back end do buffer, se você descartar o índice 'l' e incrementar o buffer diretamente.
fonte
Aqui abaixo está um myitoa auto-composto () que é muito menor em código e reserva um array FIXED de 7 (incluindo terminação 0) em char * mystring, o que geralmente é desejável. É óbvio que se pode construir o código com deslocamento de caracteres em vez disso, se for necessário uma string de saída de comprimento variável.
fonte
para mais informações você pode visitar o site do arduino https://www.arduino.cc/en/Serial/Println
desejo que isso ajude você. obrigado!
fonte
Isso simplesmente funciona para mim:
fonte