Mientras trabajamos con Arduino, debemos imprimir múltiples datos en un monitor en serie. Normalmente De serie.imprimir Se utiliza la función, pero hoy resaltaremos otra función llamada Sprintf y veremos cómo esta función ayuda a imprimir múltiples variables en una sola línea en el monitor en serie.
Usando serial.imprimir()
Normalmente, cuando queremos imprimir una variable o un resultado de salida, usamos serial.imprimir () o serie.println () para imprimir cada resultado en la siguiente línea. Supongamos que si tenemos múltiples variables, entonces debemos escribir números de líneas para impresión en serie dependiendo del recuento de variables totales.
Aquí está el ejemplo que ilustra el uso de serial.imprimir():
En el ejemplo anterior hemos inicializado tres enteros de variables A, B y C. Para imprimir las tres variables en un monitor en serie, debemos escribir por separado un código de impresión en serie para cada uno. Aquí utilizamos tres variables que nos llevan a escribir seis líneas de código solo para mostrarnos en Serial Monitor. Ahora imagine escribir un código para cinco o 10 variables e imprimirlas a través de un monitor en serie.
Esto es cuando entra la función sprintf (), discutamos cómo imprimir las tres variables en una sola línea de código.
Imprima múltiples variables usando la función Arduino Sprintf ()
El sprintf () generalmente representa "Impresión de cadena". A diferencia de la impresión en serie normal, no muestra directamente la salida de las variables en el monitor de serie primero almacena la salida dentro de una variable CHAR especificada buffer.
El sprintf () permite al usuario enviar una salida formateada a una matriz de char donde se almacenará el resultado. Para mostrar la cadena donde se formatean las variables, la serie.Se utiliza la función print ().
int sprintf (char * str, const char * format, ...);
Cómo usar Arduino Sprintf ()
El sprintf () es útil cuando tenemos que imprimir múltiples variables en una sola línea, utilizando las tres líneas de código que podemos escribir tantas variables como queramos. Aquí está la sintaxis básica de escribir múltiples variables usando sprintf ():
buffer de char [40];
sprintf (búfer, "suma de número %d y número %d es %d", a, b, c);
De serie.println (búfer);
Código de ejemplo
Ahora imprimiremos el código anterior usando el sprintf () función.
Examinemos cada línea de código en detalle ahora.
Primero en código inicializamos la comunicación en serie utilizando la serie.comenzar () y establecer la tasa de baudios a 9600. Más tarde, la sección del bucle inicializa tres variables A, B y C. La suma de las dos primeras variables A y B se almacenarán en la tercera variable C. Ahora ven a la parte principal del código.
buffer de char [40];
El tamaño de la matriz de caracteres debe ser tan grande como puede almacenar fácilmente variables de salida y texto. Cuente el número de caracteres necesarios para almacenar y hacer el búfer con exactamente el mismo tamaño.
sprintf (búfer, "suma de número %d y número %d es %d", a, b, c);
La siguiente línea en el código es la función sprintf () real. Se necesitan 2 argumentos; El primer argumento almacenará el personaje dentro de la matriz de búfer. El segundo argumento es la cadena que queremos crear. Aquí para mostrar la variable en la cadena que hemos usado Formato de especificadores.
Formato especificador es el signo %seguido de la carta conocida como formato de personaje. Los especificadores de carácter son la letra tras % de signo. Ambos dicen el sprint () qué tipo de datos se utilizará para los datos disponibles.
Algunos especificadores de carácter comunes son:
Personaje | Tipo de datos |
---|---|
D o yo | Entero decimal firmado |
u | Entero decimal sin firmar |
s | Cadena de caracteres |
En el ejemplo anterior, hemos inicializado tres especificadores de formato usando %d lo que significa que queremos que se almacenen 3 variables en la cadena de salida como entero decimal firmado. Para obtener los valores a estas tres variables, se agregan 3 argumentos justo después de la cadena. Para cada especificador de formato necesitamos pasar un valor separado y cada uno de ellos separado por coma.
Nota: Las funciones sprintf () en Arduino no pueden manejar los valores de los puntos flotantes. Entonces, si necesitamos imprimir un número decimal como 3.14 o 12.12, primero debemos convertir ese valor flotante en una cadena, luego imprimir en la pantalla. Una función DTOSTRF () se usa comúnmente para hacer esto.
Conclusión
Al programar el tablero de Arduino, debemos buscar todas las técnicas y funciones disponibles que puedan optimizar nuestro código. Tener un código minimalista y eficiente ayuda a ejecutar Arduino rápidamente. Al imprimir datos en el monitor de serie, utilizamos la función de impresión en serie, pero aquí hemos cubierto cómo la función sprint () puede ayudar a Arduino a imprimir múltiples variables en una sola línea.