- 打卡等级:以坛为家I
- 打卡总天数:338
- 最近打卡:2025-04-25 16:31:21
已绑定手机
荣誉版主
- 积分
- 2199
|
发表于 2024-5-9 18:39:40
|
显示全部楼层
本帖最后由 xiangzichen 于 2024-5-9 18:44 编辑
从左往右计算,每个按键按下的电压 8位ADC预估值:,以及二进制值如下:
电压值 ADC值 二进制值
4.08 208 1101 0000
3.37 172 1010 1100
2.78 142 1000 1110
2.27 116 0111 0100
1.82 93 0101 1101
1.39 71 0100 0111
0.96 49 0011 0001
0.51 26 0001 1010
采集值后,,结果再右移三位
新值为:
11010 0x1A
10101 0x15
10001 0x11
01110 0x0E
01011 0x0B
01000 0x08
00110 0x06
00011 0x03
程序中,ADC结果只取高8位,然后再向右移位3位,直接switch就可以判断了,这个速度绝对比各种 if 大于 if 小于 快多了.
key=(ADC_VALUE)>>3;
switch(key){
case 0x1A:
break;
case 0x15:
break;
case 0x11:
break;
case 0x0E:
break;
case 0x1B:
break;
.
.
.
.
}
这样移位后判断,绝对准确,当然了,主要是代码效率高..
不过细节上要处理一下,抖动什么的.直接参考晓飞飞大佬的代码就好了.
|
|