本例程在Arduino UNO上测试,如使用了其他型号的Arduino,请注意相关引脚连接是否正确
在产品百科界面下载程序,然后解压。Arduino程序位于 ~/Arduino/… 把Arduino目录下的文件夹Waveshare_AS7341复制到Arduino安装目录的libraries下,一般是 C:\Users\XXX\Documents\Arduino\libraries 或者 C:\Program Files (x86)\Arduino\libraries 打开Arduino IDE: 点击 文件(flie)->示例(example) 加载库,查看是否有Waveshare_AS7341选项,若有说明库导入成功,打开example中的ino工程文件,如图所示:
开发板选择相应的型号,选择相应的COM口,编译程序,下载到UNO上,打开串口监视器
实验现象:
在AS7341目录下的example里存放着不同功能的测试工程,以下按照文件名对需要注意的地方依次说明
AS7341_Getdata用于获得10个通道的测试数据,AS7341只有6个独立ADC,但却有11个通道,这就必须用到多路复用器SMUX。 具体相关配置请对照数据手册参考代码
AS7341_Getdata中包括了打开补光LED及调节亮度的驱动代码
- //AS7341_EnableLED(true);// LED ON or OFF
- //AS7341_ControlLed(10);//Adjust the brightness of the LED lamp
如需使用到LED补光,注释这两行代码即可
AS7341_Getflicker用于检测100或120Hz的环境光闪烁,需要自行产生一个该频率的闪烁光,调节积分时间、增益等可检测到不同频率的闪烁
AS7341_Syns将传感器模式配置为SYNS模式,在该模式下,传感器的GPIO口需要接收一个下降沿信号才能触发测量,每一个下降沿触发一次测量
模块默认没有将GPIO口与某根引脚直接连接,在测试时,将GPIO口与开发板的3.3v或5V脚短暂接触再断开产生一个下降沿信号即可
如在实际使用中需要用到这个模式,再将GPIO口连接到触发源上即可
- while(!AS7341_MeasureComplete());//当GPIO接收到有效信号时循环跳出
AS7341_INT为光谱中断测试,设置中断产生的上下限阈值,同时可以设置中断触发的通道,通道选择可以是CH0-CH4中的某一个,当环境光变化导致中断被触发时,读取相关寄存器即可
- AS7341_SetInterruptPersistence(0);//设置光谱中断持久性(通俗的讲就是产生中断的灵敏度)
- AS7341_SetSpectralThresholdChannel(4);//设置检测中断的通道
AS7341_pinINT是对模块上INT引脚的实验,AS7341每次测量完成后,INT引脚就会变为低电平,配置相关寄存器可以设置传感器多久测量一次环境的光谱数据,INT引脚也因此会多久跳变一次。该例程中将测量时间设置为了1s,同时对INT引脚的电平状态做了监测。
AS7341_Clear是对AS7341上述所有开启的寄存器使能位进行复位