VCNL4020使用

       向下阈值方向的简单使用:

set_sensor(I2C_BUS_THREE, VCNL4020_ADDRESS, REGISTER_PROX_RATE, PROX_MEASUREMENT_RATE_250);
set_sensor(I2C_BUS_THREE, VCNL4020_ADDRESS, REGISTER_PROX_CURRENT, ledCurrent);//200ma
set_sensor(I2C_BUS_THREE, VCNL4020_ADDRESS, REGISTER_COMMAND, COMMAND_CUSTOMIZE);
    unsigned char highbit_dist_data, lowbit_dist_data;
    highbit_dist_data = (((unsigned int)minValue + thres) >> 8) & 0xff;
    lowbit_dist_data = ((unsigned int)minValue + thres) & 0xff;
    qDebug()<<"High thres direction->maxValue:"<<minValue<<endl;
set_sensor(I2C_BUS_THREE, VCNL4020_ADDRESS, REGISTER_INTERRUPT_CONTROL, irqCount);
set_sensor(I2C_BUS_THREE, VCNL4020_ADDRESS, REGISTER_INTERRUPT_LOW_THRES_HIGHBIT, INTERRUPT_LOW_THRES_0);
set_sensor(I2C_BUS_THREE, VCNL4020_ADDRESS, REGISTER_INTERRUPT_LOW_THRES_LOWBIT, INTERRUPT_LOW_THRES_0);
set_sensor(I2C_BUS_THREE, VCNL4020_ADDRESS, REGISTER_INTERRUPT_HIGH_THRES_HIGHBIT, highbit_dist_data);
set_sensor(I2C_BUS_THREE, VCNL4020_ADDRESS, REGISTER_INTERRUPT_HIGH_THRES_LOWBIT, lowbit_dist_data);
  1. 此传感器自身读值有一定的波动,200mA的状态下,也会有10~50的波动,量程(0~65535),如果使用在比较精细的数据读取,就必须要使用传感器自带的中断模式
  2. 双边触发则上下阈值同时设定。建议使用自动切换阈值,即在上限中断触发的状态时将上限设为0xFFFF,开启下限阈值,在下限中断触发状态时将下限阈值设为0,开启上限阈值,如此反复。。。

发布了123 篇原创文章 · 获赞 133 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_33879812/article/details/103722795