Я хочу отправить измеренную температуру моему уарту на моем Arduino с этим кодом. Я использовал этот код много раз, и передача всегда работает. Но когда я хочу послать это, я не получаю вывод, который я хочу в моей реальной программе серийного захвата. Код для преобразования его в градусы Цельсия, вероятно, хорош, но в итоге у меня есть число с плавающей запятой, которое мне, вероятно, нужно преобразовать в char (может быть, с помощью sprintf () или чего-то еще), но сейчас я просто застрял с этим.
Я пробовал несколько способов сделать это, но проблема в том, что, возможно, есть только один способ сделать это. Я также пытался использовать Itoa (температура, буфер, 10);На самом деле немного сложно понять, что мне нужно сделать, чтобы преобразовать его так, чтобы это было видно в моей программе последовательного захвата. Скорость передачи данных установлена на 19200. В начале программы UART будет инициализирован, после чего я вызываю функцию передачи в главном в цикле.
//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;
}