37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验九十五:APDS-9960 GY-9960-3.3 RGB红外手势传感器 方向识别模块

GY9960红外手势传感器模块实验所需硬件清单
Arduino Uno开发板 X1
0.96寸OLED显示屏X1
杜邦线 若干(备了9条)
IIC/I2C 1602 LCD液晶屏模块X1
高电平触发有源蜂鸣器模块X1
GY9960红外手势传感器模块X2
LED发光二极管(绿、蓝色)X2
Proto Shield 原型扩展板(带mini面包板)X1


传感器模块实验所需软件平台
代码编程 Arduino IDE (版本1.8.19)
仿真编程 Linkboy (版本V4.6.3)
图形编程 Mind+ (版本 V1.7.0 RC2.0)
以及编玩边学(线上平台https://ide.codepku.com/?type=Arduino)
打开Arduino IDE——工具——管理库,搜索APDS-9960,并安装

实验接线示意图

GY9960红外手势传感器模块的几个实验
程序一:当接近度读数超过175时触发中断阈值
(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序一:当接近度读数超过175时触发中断阈值
注:设备的 I2C 地址为 0x39
*/
#include "Adafruit_APDS9960.h"//导入APDS9960驱动库
#define INT_PIN 2//中断附加到的引脚D2
Adafruit_APDS9960 apds;//创建APDS9960对象
void setup() {
Serial.begin(115200);
pinMode(INT_PIN, INPUT_PULLUP);
if (!apds.begin()) {
Serial.println("初始化设备失败!请检查您的接线。");
}
else Serial.println("设备已初始化!");
//开启接近模式
apds.enableProximity(true);
//设置当接近度读数超过175时触发中断阈值
apds.setProximityInterruptThreshold(0, 175);
//启用接近中断
apds.enableProximityInterrupt();
}
void loop() {
//当中断引脚变低时打印接近度读数
if (!digitalRead(INT_PIN)) {
Serial.println(apds.readProximity());
apds.clearInterrupt();//清除中断
delay(500);
}
}
(2)实验串口返回情况

(3)实验场景图

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验九十五:APDS-9960 GY-9960-3.3 RGB红外手势传感器 方向识别模块
程序二:测试颜色识别模式
(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序二:测试颜色识别模式
注:设备的 I2C 地址为 0x39
*/
#include "Adafruit_APDS9960.h"//导入APDS9960驱动库
//创建APDS9960对象
Adafruit_APDS9960 apds;
void setup() {
Serial.begin(115200);
if (!apds.begin()) {
Serial.println("初始化设备失败!请检查您的接线。");
}
else Serial.println("设备已初始化!");
//启用颜色识别模式
apds.enableColor(true);
}
void loop() {
//创建一些变量来存储颜色数据
uint16_t r, g, b, c;
//等待颜色数据准备好
while (!apds.colorDataReady()) {
delay(5);
}
//获取数据并打印不同的通道
apds.getColorData(&r, &g, &b, &c);
Serial.print("红色:");
Serial.println(r);
Serial.print("绿色: ");
Serial.println(g);
Serial.print("蓝色: ");
Serial.println(b);
Serial.print("清除:");
Serial.println(c);
Serial.println();
delay(5000);
}
(2)实验串口返回情况

评论