gpt4 book ai didi

计算元素在固定点的位置以进行 TFT 绘图

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:28 26 4
gpt4 key购买 nike

我目前正在为一个小型 uC 项目编写 UI。在计算垂直线的位置时遇到一些问题。这个想法是将红线沿 x 轴移动到矩形的末端。

使用无限旋转编码器递增的值,范围为 0 到 800,增量为 1。矩形的左侧是 x - 轴的起点以及 x = 0。范围 0 - 800表示Q13.3定点数中的0-100.00,数据类型为uint16_t。

矩形当前为 300 像素宽,我对此很灵活,但不应小于 240 像素。线宽 1 像素。

要注意的是,由于性能限制,我只能使用定点数学,根本不能访问浮点单元。

enter image description here

我目前正在做的是有一个计数器,它会随着编码器的每次点击而递增。 ……喜欢:

        if(direction) counter++;        //Running forwards
if(!direction) counter--; //Running backwards
if((counter % 8 ) == 0){
if(direction) line.x += 3;
if(!direction) line.x -= 3;
}

由于间距为 3 像素,因此不太理想。

理想情况下,如果浮点计算是一个选项,我会简单地将计数器增加 0.375

感谢有关此问题的任何建议。

干杯

最佳答案

只需根据 0 ... 800 获取计数器的位置并将其缩小到 0 ... width

即将计数器的值乘以 width,然后然后除以 max,其中 max 是逻辑范围的最大值。

uint16_t scale(uint16_t value, uint16_t logical_max, uint16_t physical_max)
{
uint32_t val = value * physical_max; // use a wider type to cope with overflow
return (uint16_t) ((val / logical_max) & 0xFFFFU);
}

关于计算元素在固定点的位置以进行 TFT 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54392341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com