I want to send the reading of a potentiometer through a serial port (BufferedSerial), I send the data as float, but I am not receiving that data. When I try with an int I receive it normally, but when it is float I don’t receive anything, what am I wrong with the code?
#include "mbed.h"
#define tiempo 1500ms
Mutex p_serie; //proteger el puerto serie
//decalraciones de pines
BufferedSerial pc(USBTX, USBRX);
AnalogIn pot(A0);
//prototipos de las funciones
void leer_pot (void);
//tareas o hilos
Thread hilo_leer_pot (osPriorityNormal, 2048);
//variables globales
const float voltaje_a = 3.3f; // Voltaje de referencia
char men[300]; //almacenar la cadena de caracteres
const float angulo_maximo = 290.0f; // Máximo ángulo del potenciómetro
int main() {
hilo_leer_pot.start(leer_pot);
}
void leer_pot(){
//configurar la velocidad de transmision
pc.set_baud(9600);
pc.set_format(8, BufferedSerial::None, 1); //8-N-1
while (true){
// Leer el valor del potenciómetro
float valor_adc = pot.read();
//double valor_double = static_cast<double>(valor_leido);
//int valor_leido_entero = round(valor_leido);
// Calcular el voltaje real
float voltaje_pot = voltaje_a * valor_adc;
// Calcular el ángulo
float angulo_pot = ((voltaje_pot / voltaje_a) * angulo_maximo);
p_serie.lock();
// Enviar el valor por el puerto serie
//printf("Voltaje del potenciometro: %.2f V\n", double(voltaje_real));
/*printf(men, "El valor es: %.3f\n\r", valor_leido);
pc.write(men, sizeof(men));*/
// Convertir el número flotante a una cadena de caracteres usando snprintf
//snprintf(men, sizeof(men), "%Lf", angulo_pot);
// Imprimir la cadena resultante
printf("El angulo es: %.2f grados.", angulo_pot);
//printf("El angulo es: %s grados.\n\r", men);
p_serie.unlock();
// Esperar 2 segundos antes de leer el potenciómetro nuevamente
ThisThread::sleep_for(tiempo);
}
}