STM32
直播中

云达贞

8年用户 957经验值
私信 关注
[问答]

请问这个函数里面AMG要读取温度值转RGB怎么写?

  void show(uint16_t [i]pBuf){u8 i=0;u8 j=0;u16 colorr1=0;for(j=0;j<8;j++){for(i=0;i<8;i++){LCD_Fill(i20,j[i]20,(i30)+30,(j*30)+30,camColors[colorr1]);colorr1++;}}}

回帖(1)

杨秀英

2024-5-21 17:15:27
要实现将温度值转换为RGB颜色,我们首先需要定义一个函数,该函数接受温度值作为输入,并返回相应的RGB颜色。然后,我们可以在`show`函数中调用这个函数来获取颜色值并将其应用于LCD显示。

以下是实现这个功能的步骤:

1. 定义一个名为`temperatureToRGB`的函数,该函数接受一个整数类型的温度值作为输入,并返回一个包含RGB颜色值的结构体。

```c
typedef struct {
    uint8_t r;
    uint8_t g;
    uint8_t b;
} RGBColor;

RGBColor temperatureToRGB(int temperature) {
    // 根据温度值计算RGB颜色
    // 这里只是一个示例,您可以根据需要调整颜色映射
    int red = (temperature - 20) * 2.55;
    int green = 255 - red;
    int blue = 0;

    if (red > 255) red = 255;
    if (green > 255) green = 255;

    return (RGBColor){red, green, blue};
}
```

2. 修改`show`函数,使其接受一个包含温度值的数组作为输入,并在循环中调用`temperatureToRGB`函数来获取每个像素点的颜色。

```c
void show(uint16_t pBuf, int temperatures[]) {
    uint8_t i = 0;
    uint8_t j = 0;

    for (j = 0; j < 8; j++) {
        for (i = 0; i < 8; i++) {
            RGBColor color = temperatureToRGB(temperatures[j * 8 + i]);
            LCD_Fill(i * 20, j * 20, (i * 30) + 30, (j * 30) + 30, color);
        }
    }
}
```

请注意,这里假设`temperatures`数组包含64个温度值(8x8),每个值对应一个像素点。您可以根据实际需求调整数组大小和颜色映射逻辑。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分