【ADC电池检测】

由于大多数时候ADC值并不是很稳定,故而在一些检测中需要设置阈值。

下面是我自己做的0%-100%的写法,很简单,主要也用于自己备份自己的代码

//用于细分ADC的区域,可以增加
typedef enum 
{
    percent_0,
    percent_10,
    percent_20,
    percent_30,
    percent_40,
    percent_50,
    percent_60,
    percent_70,
    percent_80,
    percent_90,
    percent_100,
}led_condition;

/*
    电池检测 缓冲
    led_flag:                 adc各档位标志位        不需要改动
    u_power_value:    adc读值                        变量名根据需要改动,不需要改动
    数字:                        adc界限值                   根据需求改变阈值

例如2.2和2.1指的是ad值经过计算后得到的具体数值,u_power_value是当前ad值计算后的数字(最好用多次取平均,不然一般情况adc读值跳变太大),led_flag是当前的ad值所在的区间


*/
switch(led_flag)
{
    case percent_0:
        if(u_power_value>2.2)    led_flag=percent_10;
        break;
    case percent_10:
        if(u_power_value<2.1)    led_flag=percent_0;
        if(u_power_value>2.3)    led_flag=percent_20;
        break;
    case percent_20:
        if(u_power_value<2.2)    led_flag=percent_10;
        if(u_power_value>2.4)    led_flag=percent_30;
        break;
    case percent_30:
        if(u_power_value<2.3)    led_flag=percent_20;
        if(u_power_value>2.5)    led_flag=percent_40;
        break;
    case percent_40:
        if(u_power_value<2.4)    led_flag=percent_30;
        if(u_power_value>2.6)    led_flag=percent_50;
        break;
    case percent_50:
        if(u_power_value<2.5)    led_flag=percent_40;
        if(u_power_value>2.7)    led_flag=percent_60;
        break;
    case percent_60:
        if(u_power_value<2.6)    led_flag=percent_50;
        if(u_power_value>2.8)    led_flag=percent_70;
        break;
    case percent_70:
        if(u_power_value<2.7)    led_flag=percent_60;
        if(u_power_value>2.9)    led_flag=percent_80;
        break;
    case percent_80:
        if(u_power_value<2.8)    led_flag=percent_70;
        if(u_power_value>3.0)    led_flag=percent_90;
        break;
    case percent_90:
        if(u_power_value<2.9)    led_flag=percent_80;
        if(u_power_value>3.1)    led_flag=percent_100;
        break;
    case percent_100:
        if(u_power_value<3.0)    led_flag=percent_90;
        break;
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值