打印
[STM8]

IR人体感应 控制区域逻辑判断程序编写

[复制链接]
915|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 侠行江湖 于 2016-2-27 11:14 编辑

如下图,STM8单片机控制IR  遮挡物第一次向前移动感应电压大于0.2V时控制LED ON,第二次后退移动感应电压低于0.1v时LED OFF,请问这个判断程序如何写。我的程序如下:但不行
以下是我自己写的程序  但是不行
if((truevolt>=0.2)&&(i==0))        //大于0.2V
{
GPIO_WriteLow(MOSFETDRIVER_PORT, MOSFETDRIVER_PIN); //关闭LED灯
i++;
  }
else if ((truevolt<=0.1)&&(i==1))
{
  GPIO_WriteHigh(MOSFETDRIVER_PORT, MOSFETDRIVER_PIN);//开启LED灯
i=0;
  }
else GPIO_WriteHigh(MOSFETDRIVER_PORT, MOSFETDRIVER_PIN);//开启LED灯
}

22.png (125.09 KB )

22.png
沙发
mmuuss586| | 2016-2-26 19:58 | 只看该作者
else GPIO_WriteHigh(MOSFETDRIVER_PORT, MOSFETDRIVER_PIN);//开启LED灯
这句去掉试下;

使用特权

评论回复
板凳
Rooney30| | 2016-2-26 22:26 | 只看该作者
这里面的I就是用于判断次数的吗

使用特权

评论回复
地板
gejigeji521| | 2016-2-26 22:42 | 只看该作者
i是次数吧。默认这个i==0.初始化LED也是==0;
然后判断电压是否为大于0.2如果是,打开LED=1,
然后等待关闭信号,这个时候最好就别循环上个动作了。等待关闭信号就行了,因此这个函数可以用GOTO实现其实是更简单的。或者用While循环。当i==1时候,等待归零,也就是等待灭灯。

使用特权

评论回复
5
侠行江湖|  楼主 | 2016-2-27 11:14 | 只看该作者
Rooney30 发表于 2016-2-26 22:26
这里面的I就是用于判断次数的吗

不是,

使用特权

评论回复
6
侠行江湖|  楼主 | 2016-2-27 11:35 | 只看该作者
gejigeji521 发表于 2016-2-26 22:42
i是次数吧。默认这个i==0.初始化LED也是==0;
然后判断电压是否为大于0.2如果是,打开LED=1,
然后等待关闭 ...

我将0.1-0.2V 不做判断,也不行。
truevolt=average*5;
          truevolt=truevolt/1024;
                if(truevolt>=0.2)        //大于0.2V
                {
                 GPIO_WriteLow(MOSFETDRIVER_PORT, MOSFETDRIVER_PIN); //关闭LED灯
          }
                if (truevolt<=0.1)
                {
                  GPIO_WriteHigh(MOSFETDRIVER_PORT, MOSFETDRIVER_PIN);//开启LED灯
          }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

27

帖子

0

粉丝