2、所以,本测试中只有来自传感器本身的单独的IR,而且距离小,如果需要增程,需要用外置的IR,传感器也具有led驱动能力。因此,本测试修订为为传感器测试。
3、引入了sg90的驱动库,这个是引用了mbed的servo.h,在里面直接对于servo的控制有所定义。
#include "Servo.h"
Servo myservo(D9);//
这的D9是按照arduino接口的定义确认的,应该对应的D0-D9均可以。
设置pb1,pb0为移动方向
if(pb0==0)
{
myservo = myservo+0.1;
wait(0.2);
}
else if(pb1==0)
{
myservo=myservo-0.1;
wait(0.2);
}
4、根据,传感器的数据反馈,形成控制的信号,sg90对应做出反馈。当手掌接近时,正转,离去时反转。
程序如下,
mled0 = 1; // LED on
VCNL40x0_Device.ReadProxiOnDemand (&ProxiValue); // read prox value on demand
VCNL40x0_Device.ReadAmbiOnDemand (&AmbiValue); // read ambi value on demand
mled0 = 0; // LED off
// print values on screen
pc.printf("nProxi: %5.0i cts tAmbi: %5.0i cts
tilluminance: %7.2f lx", ProxiValue, AmbiValue, AmbiValue/4.0);
if (servo > ProxiValue) pb0=1;
else pb1=1;
servo= ProxiValue;
编译过程如下图,
.bin文件如下。
生成了bin文件,直接复制到mbed盘符就可以了。使用putty等串行接口就可以看到显示的数据,串口通讯速录设为9600。