在 C 中连接 32 位整数

标签 c raspberry-pi concatenation analog-digital-converter

我目前正在开发一个项目,该项目将使用热敏电阻作为温度传感器,并使用树莓派将此信息显示到 GUI 上。然而,我目前陷入了模拟到数字转换的困境。使用我正在使用的waveshare广告板中的示例代码,我设法获取要显示的电压,但是我随后需要在分压器方程中使用这个vout来获取热敏电阻的电阻,但我不知道如何实际上使用 32 位整数 iTemp 变量并正确转换它,以便它是控制台上显示的实际数字。目前,带有 itemp 的 2 条打印线打印出类似 (1.186 391 V) 的数字。这是正确的,但我需要将其转换为实际数字,然后将其插入我的分压器方程中。 Ps:我将部分代码包含在打印语句中。 任何帮助将不胜感激。

代码:

 while((ADS1256_Scan() == 0));
        for (i = 0; i < ch_num; i++)
        {
            adc[i] = ADS1256_GetAdc(i);
                 volt[i] = (adc[i] * 100) / 167;    
        }

        for (i = 0; i < ch_num; i++)
        {
                    buf[0] = ((uint32_t)adc[i] >> 16) & 0xFF;
                    buf[1] = ((uint32_t)adc[i] >> 8) & 0xFF;
                    buf[2] = ((uint32_t)adc[i] >> 0) & 0xFF;
                    printf("%d=%02X%02X%02X, %8ld", (int)i, (int)buf[0], 
                           (int)buf[1], (int)buf[2], (long)adc[i]);                

                    iTemp = volt[i];    /* uV  */
                    if (iTemp < 0)
                    {
                        iTemp = -iTemp;
                                printf(" (-%ld.%03ld %03ld V) \r\n", iTemp /1000000, (iTemp%1000000)/1000, iTemp%1000);
                    }
                    else
                    {
                                    printf(" ( %ld.%03ld %03ld V) \r\n", iTemp /1000000, (iTemp%1000000)/1000, iTemp%1000);                   
                    }

        }
            //printf("\33[%dA", (int)ch_num);  
        bsp_DelayUS(100000);    
            }   
    bcm2835_spi_end();
    bcm2835_close();

    return 0;
}

最佳答案

根据您的评论:iTemp = volt[i];/* uV */,iTemp 读取单位为微伏。 为了在方程式中使用它,您所需要做的就是将其转换为伏特(将其转换为doublefloat并乘以(1.0/1000000.0))。

double iTempV = (double)iTemp*1.0e-6;

或者:

float iTempV = (float)iTemp*1.0e-6f;

我假设以下公式将 A2D 原始样本值转换为微电压:

adc[i] = ADS1256_GetAdc(i);
volt[i] = (adc[i] * 100) / 167;

我在 GitHub 中找到了以下项目:https://github.com/ecao1/SEADS-Rpi/blob/master/test_ver1.c以支持我的主张。

关于在 C 中连接 32 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38487250/

相关文章:

python - 在 Ubuntu 服务器上使用 python 获取写入 USB 闪存驱动器的必要权限

python - 将 RPi.GPIO 导入 python 脚本时出错

c - 下面的 C 代码是否有效?

c - 初始化指向整数的指针数组

audio - 仅播放来自 youtube-dl 的 M3U8 文件中的音频 ts 流

string - matlab向数字向量的每个元素添加一个字符串

python - 使用 Pandas 连接两个或多个变量以创建新变量

java - system.arraycopy 没有抛出异常,但也没有给出期望的结果

c++ - if-else if 梯形图和编译器优化

c - 静态函数是否需要 C 中原型(prototype)的 static 关键字?