如何发送所测温度的字符,因此可以在我的串行捕获程序中查看(使用Realterm或Putty)

我想使用此代码将测得的温度发送到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;
        }
robinwu20090630 回答:如何发送所测温度的字符,因此可以在我的串行捕获程序中查看(使用Realterm或Putty)

通常串行终端程序显示文本,因此您应该传输文本:

例如如果确实是浮点数,则为“ 20.5” 或“ 20”,因为这种精度足够并易于处理

(此外,建议换行符)

Arduino不直接在sprintf中支持%f格式。对于从Stream或dtostrf派生的任何类,请使用Arduino print(float)方法。

值为20的单个字节不是可打印字符,但是当然可以按照接收设备上您自己的软件的意图来解释。

本文链接:https://www.f2er.com/3134733.html

大家都在问