风筝
发表于: 3 小时前 | 显示全部楼层

在本篇文章中,我们将介绍如何使用Arduino开发板连接APDS-9960红外手势传感器模块,实现识别RGB颜色和手势。


所需的组件

●    Arduino Uno R3开发板

●    APDS-9960红外手势传感器模块

●    AMS1117直流电源模块

●    跳线

●    I2C字符型LCD显示模块2004(绿色背光)

Required-Materials-7.jpg


APDS-9960红外手势传感器模块

APDS-9960红外手势传感器模块是一种先进的设备,可通过手势与电子设备进行直观交互。该传感器模块使用红外技术准确检测手部运动,为各种应用提供免提控制选项。APDS-9960能够识别滑动、点击和滚动等手势,非常适合非接触式控制界面、游戏机和智能家电。其紧凑的设计和易于集成的特点使其既适合业余爱好者也适合专业人士,为电子项目添加手势识别功能提供了无缝解决方案。使用APDS-9960红外手势传感器模块体验基于手势的交互的便利,增强设备的可用性和可访问性。

1-7.jpg


APDS-9960红外手势传感器模块引脚排列

APDS-9960红外手势传感器模块有6个引脚,包含I2C通讯和中断引脚。下图是该模块详细的引脚排列:

pin-6.jpg

●    VCC/VL:APDS-9960模块的电源输入(3.3V)。

●    GND:接地,确保稳定的电气连接。

●    SCL:用于与微控制器通信的串行时钟线。

●    SDA:用于配置模块设置的串行数据线。

●    INT:微控制器的中断请求引脚。


APDS-9960红外手势传感器模块与Arduino的硬件连接

以下图片显示了如何将APDS-9960红外手势传感器模块连接到Arduino开发板。请参考下图进行连接。

fritzing_bb-3.jpg

将APDS-9960模块的I2C引脚分别连接至Arduino开发板的A4(SDA)和A5(SCL)引脚,INT引脚悬空,VCC引脚连接至+5V。


代码1:使用APDS-9960模块进行颜色识别

首先在Arduino IDE中安装Arduino_APDS9960库,可以在Arduino IDE中搜索安装该库,或者在Github下载使用。下载链接:Arduino_APDS9960

然后复制以下代码,进行编译上传。

  1. /*
  2. Create on February 07, 2024
  3. */

  4. #include <Arduino.h>
  5. #include <Arduino_APDS9960.h>
  6. #include <myLCD.h>

  7. void setup()
  8. {
  9.   Serial.begin(9600);
  10.   beginLCD("APDS9960");
  11.   while (!Serial)
  12.     ;

  13.   if (!APDS.begin())
  14.   {
  15.     Serial.println("Error initializing APDS-9960 sensor.");
  16.     fail();
  17.   }
  18.   success();
  19.   printLCD("APDS9960 Color Sensor", 0, true);
  20.   printLCD("Red:   ", 1);
  21.   printLCD("Green: ", 2);
  22.   printLCD("Blue:  ", 3);
  23.   Serial.println("Color Sensor ...");
  24. }

  25. void loop()
  26. {
  27.   // check if a color reading is available
  28.   while (!APDS.colorAvailable())
  29.   {
  30.     delay(5);
  31.   }
  32.   int r, g, b;

  33.   // read the color
  34.   APDS.readColor(r, g, b);

  35.   // print the values
  36.   Serial.print("r = ");
  37.   Serial.println(r);
  38.   Serial.print("g = ");
  39.   Serial.println(g);
  40.   Serial.print("b = ");
  41.   Serial.println(b);
  42.   Serial.println();

  43.   printLCD(String(r), 1, false, 8);
  44.   printLCD(String(g), 2, false, 8);
  45.   printLCD(String(b), 3, false, 8);

  46.   // wait a bit before reading again
  47.   delay(1000);
  48. }
复制代码

上传代码后,您可以在显示屏中看到识别颜色的RGB值,如下图所示:

APDS9960 Color Sensor.jpg


代码2:使用APDS-9960模块进行手势识别

APDS-9960模块可以识别上下左右及覆盖等手势。将以下代码上传到Arudino开发板中,进行编译运行。

  1. /*
  2. Create on February 07, 2024
  3. */

  4. #include <Arduino.h>
  5. #include <Arduino_APDS9960.h>
  6. #include <myLCD.h>

  7. void setup()
  8. {
  9.   Serial.begin(115200);
  10.   beginLCD("APDS9960");
  11.   while (!Serial)
  12.     ;

  13.   if (!APDS.begin())
  14.   {
  15.     Serial.println("Error initializing APDS-9960 sensor!");
  16.     fail();
  17.   }
  18.   APDS.activeAll();
  19.   // for setGestureSensitivity(..) a value between 1 and 100 is required.
  20.   // Higher values make the gesture recognition more sensitive but less accurate
  21.   // (a wrong gesture may be detected). Lower values makes the gesture recognition
  22.   // more accurate but less sensitive (some gestures may be missed).
  23.   // Default is 80
  24.   // APDS.setGestureSensitivity(80);
  25.   success();
  26.   printLCD("APDS9960 Gestures", 0, true);
  27.   Serial.println("Detecting gestures ...");
  28. }
  29. void loop()
  30. {
  31.   if (APDS.gestureAvailable())
  32.   {
  33.     // a gesture was detected, read and print to Serial Monitor
  34.     int gesture = APDS.readGesture();

  35.     switch (gesture)
  36.     {
  37.     case GESTURE_UP:
  38.       Serial.println("Detected UP gesture");
  39.       printLCD("Detected UP", 2, true);
  40.       break;

  41.     case GESTURE_DOWN:
  42.       Serial.println("Detected DOWN gesture");
  43.       printLCD("Detected DOWN", 2, true);
  44.       break;

  45.     case GESTURE_LEFT:
  46.       Serial.println("Detected LEFT gesture");
  47.       printLCD("Detected LEFT", 2, true);
  48.       break;

  49.     case GESTURE_RIGHT:
  50.       Serial.println("Detected RIGHT gesture");
  51.       printLCD("Detected RIGHT", 2, true);
  52.       break;

  53.     default:
  54.       // ignore
  55.       break;
  56.     }
  57.   }
  58. }
复制代码

上传代码后,在模块前方挥动您的右手,查看检测到的动作是否一致:

APDS9960 Gestures.jpg


以上就是本篇文章的全部内容,如果有任何问题,欢迎在本帖下面进行回复。


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 702 | 回复: 1489



手机版|

GMT+8, 2024-10-30 17:18 , Processed in 0.040935 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表