En esta ocasión enviaremos un dato tipo float ingresado por el Monitor Serial de Arduino a la plataforma, para que esta nos reenvíe el dato con punto decimal sin pérdida de datos con un porte máximo de 20 caracteres.
El programa usado es el siguiente:
/* PROGRAMA DE PRUEBA DE COMUNICACION SERIAL
El siguiente programa nos ayuda a enviar datos del tipo flotante a un Arduino y que se retorne el
mismo dato enviado con un porte de hasta 20 caracteres
Formato del dato: xxx.xxx
Autor: Carolina G.
http://beetlecraft.blogspot.pe/
El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera
ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del autor
*/
void setup(){ Serial.begin(9600); }
void loop(){
float dato; // Variable de almacenamiento de dato transformado
// Mensaje en puerto serial
Serial.print("Dato: ");
dato = dato_salida(); // Lectura del dato arreglado
Serial.println(dato);
}
float dato_salida(){ // Dato de salida
float dato_flotante = 0; // Constructor de dato enviado
char vector[20]; // Variable de almacenamiento de dato leido por serial
int flag = 0; // Flag de entrada de bucle while
while (flag == 0){ // Bucle mientras el flag sea menor que 1
if (Serial.available()) { // Lectura del puerto serial abierto
delay(100);
int i = 0; // Variable auxiliar de construccion de vector
while (Serial.available() > 0){ // Lectura mientras tenga valores el buffer
char inByte = Serial.read(); // Variable de almacenamiento de entrada de datos
vector[i] = inByte; // Vector de almacenamiento para construccion de dato
i += 1; // i = i + 1
flag = 1;
}
dato_flotante = atof(vector); // Conversion del vector de char a float
memset(vector, 0, sizeof(vector)); // Limpia los datos ingresados al vector
}
}
return dato_flotante; // Retorna el valor arreglado
}
El resultado es el siguiente:Autor:


No hay comentarios:
Publicar un comentario