【Arduino Nano 33 BLE Sense开发板 - 颜色检测传感器的教程】
教程介绍
我们将在这个教程中介绍如何使用Arduino Nano 33 BLE Sense开发板上的APDS9960传感器来检测颜色。
【资料图】
在光学中,人眼对红、绿、蓝三种原色最为敏感, 其它颜色则可以通过不同比例的红、绿、蓝三色合成产生。
因此,APDS9960的传感器有三个主要颜色的通道:红色,绿色,蓝色,和清晰光强度的通道。每个通道都有一个红紫外线阻挡滤波器和数据转换器。
APDS9960传感器是一种多功能设备,具有手势检测、近感探测、数字环境光感应(ALS)和颜色感应(RGBC)的功能。它可以被应用于多个领域或场景,比如当用户把手机放在耳边时,APDS9960传感器可以检测到距离变化并禁用屏幕。
材料清单
- Arduino Nano 33 BLE Sense开发板 x1
- USB type-c 接线 x1
- 装有Arduino IDE的电脑一台
接线细节
代码
#include <Arduino_APDS9960.h> //包含APDS9960库
void setup() {
Serial.begin(9600); //配置串口的波特率, 完成串口的初始化
while (!Serial); //没有串口连接就不往下执行, 进入死循环, 只适用于Leonardo和 Yun
if (!APDS.begin()) { //假如APDS没有完成初始化
Serial.println("Error initializing APDS9960 sensor."); //在串口监视器打印错误信息
}
}
void loop() {
while (! APDS.colorAvailable()) { //假如APDS的颜色模块还没找到
delay(5); //延迟5毫秒
}
int r, g, b; //变量声明: 红, 绿, 蓝
APDS.readColor(r, g, b); //用APDS.readColor函数来读取红、绿、蓝的值
//如果红的色值最高, 打开开发板上的红灯
if (r > g & r > b) {
digitalWrite(LEDR, LOW);
digitalWrite(LEDG, HIGH);
digitalWrite(LEDB, HIGH);
}
//如果绿的色值最高, 打开开发板上的绿灯
else if (g > r & g > b) {
digitalWrite(LEDG, LOW);
digitalWrite(LEDR, HIGH);
digitalWrite(LEDB, HIGH);
}
//如果蓝的色值最高, 打开开发板上的蓝灯
else if (b > g & b > r) {
digitalWrite(LEDB, LOW);
digitalWrite(LEDR, HIGH);
digitalWrite(LEDG, HIGH);
}
//不然,打开三色灯
else {
digitalWrite(LEDR, HIGH);
digitalWrite(LEDG, HIGH);
digitalWrite(LEDB, HIGH);
}
// 在串口监视器打印各个原色的值
Serial.print("Red light = ");
Serial.println(r);
Serial.print("Green light = ");
Serial.println(g);
Serial.print("Blue light = ");
Serial.println(b);
Serial.println();
// 延迟500毫秒再开始一个循环
delay(500);
}
上传代码的步骤
第一步,双击Arduino IDE, 打开sketch/项目。
第二步,点击工具>> 开发板>> 开发板管理器>>搜索 “33 BLE”>>安装 Arduino Mbed OS Nano Boards 板。
第三步,点击工具>>开发板>> Arduino Mbed OS Nano Boards >>选择Arduino Mbed OS Nano Boards板。
第四步,点击项目>>点击导入库>>管理库>>搜索“APDS9960”并安装。然后,点击项目>>导入库>>贡献库>>查看APDS9960是否安装好了。
第五步,点击工具>>端口>>选择 BLE端口。
第六步,点击文件(F)>>新建项目>>打开一个新的项目。
第七步,复制并粘贴代码。
第八步,点击打勾图标>>验证代码。
第九步,点击右箭头图标>>上传代码。
最后,点击工具>>打开串口监视器。
参考资料
代码:https://docs.arduino.cc/tutorials/nano-33-ble-sense/rgb-sensor
音乐:Island Temptation, provided by Storyblocks
宇航员图片:由微软Bing生成
与谁同坐,明月清风我~