我想使用此代码将测得的温度发送到Arduino上的uart。我已经多次使用此代码,并且传输始终有效。但是,当我要发送此消息时,我在实时串行捕获程序中没有得到想要的输出。将其转换为摄氏度的代码可能很好,但最终我得到了一个可能需要转换为char的浮点数(也许使用sprintf()之类的东西),但此刻我只是停留在此位置。
我尝试了多种方法来执行此操作,但是问题是可能只有一种方法可以执行此操作。我也尝试使用itoa(temperature,buffer,10);实际上很难找出我要做的转换方式,以使其在我的串行捕获程序中可见。波特率正确设置为19200。在程序开始时,将初始化uart,之后我在循环内的main中调用send函数。
//while(1)
int reading = ADCsingleREAD(0); //Reads the sensor on port 0
float voltage = reading * (5.0f / 1024.0f);
float temperature = (voltage - 0.5f) * 100;
char a = temperature;
//Maybe i also need to do this ?
// char array[10];
// sprintf(array,"%f",temperature);
transmit(temperature);
_delay_ms(100);
//the transmit function (in a different file)
void transmit(int8_t data)
{
// wait for an empty transmit buffer
// UDRE is set when the transmit buffer is empty
loop_until_bit_is_set(ucsR0A,UDRE0);
// send the data
UDR0 = data;
}