向下阈值方向的简单使用:
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);
- 此传感器自身读值有一定的波动,200mA的状态下,也会有10~50的波动,量程(0~65535),如果使用在比较精细的数据读取,就必须要使用传感器自带的中断模式。
- 双边触发则上下阈值同时设定。建议使用自动切换阈值,即在上限中断触发的状态时将上限设为0xFFFF,开启下限阈值,在下限中断触发状态时将下限阈值设为0,开启上限阈值,如此反复。。。