Enquanto trabalhamos com o Arduino, devemos imprimir vários dados em um monitor serial. Normalmente Serial.imprimir A função é usada, mas hoje destacaremos outra função nomeada como sprintf e veremos como essa função ajuda a imprimir várias variáveis em uma única linha no monitor serial.
Usando serial.imprimir()
Normalmente, quando queremos imprimir uma variável ou um resultado de saída, usamos serial.print () ou serial.println () para imprimir todos os resultados na próxima linha. Suponha que, se tivermos várias variáveis, devemos escrever números de linhas para impressão em série, dependendo da contagem total da variável.
Aqui está o exemplo que ilustram o uso de série.imprimir():
No exemplo acima, inicializamos três números inteiros de variáveis a, b e c. Para imprimir todas as três variáveis em um monitor serial, devemos escrever separadamente um código de impressão em série para cada. Aqui usamos três variáveis que nos levam a escrever seis linhas de código apenas para nos mostrar no monitor serial. Agora imagine escrever um código para cinco ou 10 variáveis e imprimi -las em um monitor serial.
É quando a função sprintf () entra, vamos discutir como imprimir todas as três variáveis em uma única linha de código.
Imprima várias variáveis usando a função Arduino Sprintf ()
O sprintf () geralmente significa “Impressão de string”. Ao contrário da impressão em série normal, ele não mostra diretamente a saída de variáveis no monitor serial primeiro, ele armazena a saída dentro de uma variável de char especificada amortecedor.
O sprintf () permite que o usuário envie uma saída formatada para uma matriz de char onde o resultado será armazenado. Para mostrar a string onde as variáveis são formatadas, a série.A função print () é usada.
int sprintf (char * str, const char * formato,…);
Como usar o Arduino Sprintf ()
O sprintf () é útil quando precisamos imprimir várias variáveis em uma única linha, usando as três linhas de código, podemos escrever quantas variáveis quiser. Aqui está a sintaxe básica de escrever várias variáveis usando sprintf ():
buffer de char [40];
sprintf (buffer, "soma do número %d e número %d é %d", a, b, c);
Serial.println (buffer);
Código de exemplo
Agora vamos imprimir o código acima usando o sprintf () função.
Vamos examinar cada linha de código em detalhes agora.
Primeiro no código, inicializamos a comunicação serial usando a série.begin () e definir taxa de transmissão para 9600. Posteriormente, a seção de loop inicializa três variáveis A, B e C. A soma das duas primeiras variáveis A e B será armazenada na terceira variável C. Agora venha para a parte principal do código.
buffer de char [40];
O tamanho da matriz de caracteres precisa ser tão grande quanto pode armazenar facilmente variáveis de saída e texto. Conte o número de caracteres necessários para armazenar e fazer o buffer com o mesmo tamanho.
sprintf (buffer, "soma do número %d e número %d é %d", a, b, c);
A próxima linha no código é a função Sprintf () real. São necessários 2 argumentos; O primeiro argumento armazenará o personagem dentro da matriz de buffer. O segundo argumento é a string que queremos criar. Aqui para exibir a variável na string que usamos Especificadores de formato.
Especificador de formato é o signo %seguido pela letra conhecida como caráter formato. Especificadores de caracteres são a letra após % sinal. Ambos dizem ao sprint () qual tipo de dados será usado para os dados disponíveis.
Alguns especificadores de caráter comuns são:
Personagem | Tipo de dados |
---|---|
d ou i | Inteiro decimal assinado |
você | Inteiro decimal não assinado |
s | String de caracteres |
No exemplo acima, inicializamos três especificadores de formato usando %d o que significa que queremos que 3 variáveis sejam armazenadas na sequência de saída como Inteiro decimal assinado. Para obter os valores dessas três variáveis, 3 argumentos são adicionados logo após a string. Para cada especificador de formato, precisamos passar um valor separado e cada um deles separado por vírgula.
Observação: As funções sprintf () em Arduino não podem lidar com valores de ponto flutuante. Então, se precisarmos imprimir um número decimal algo como 3.14 ou 12.12, primeiro devemos converter esse valor flutuante em uma string e depois imprimir na tela. Uma função dtostrf () é comumente usado para fazer isso.
Conclusão
Enquanto programa a placa Arduino, precisamos procurar todas as técnicas e funções disponíveis que podem otimizar nosso código. Ter um código minimalista e eficiente ajuda a executar o Arduino rapidamente. Ao imprimir dados no monitor serial, usamos a função de impressão serial, mas aqui abordamos como a função sprint () pode ajudar o Arduino a imprimir várias variáveis em uma única linha.