第十八篇、基于Arduino uno,获取手势识别传感器的信号——结果导向

news/2024/11/29 0:50:02/

0、结果

说明:该传感器模块集手势识别和触摸检测功能于一体,提供0~30cm以内的可调检测范围。它可以检测 5 向触摸信号和 7 种手势:向左移动、向右移动、向前移动、向后移动、向上拉、向下拉、拉和移除。

1、外观

说明:虽然手势识别传感器形态各异,但是原理和代码都是适用的。


2、连线

 说明:只需要连接四根线。
uno————手势识别传感器

    5V--------------VCC
GND--------------GND
      5--------------TX
      6--------------RX

3、源程序

说明:当识别到对应手势的时候,会在串口打印出来,并将对应功能进行函数化,方便移植。

/****************************************hcsr501 part****************************************/
/*wiring:VCC------VCCGND------GND5------TX6------RX
*/#include "DFRobot_Gesture_Touch.h"                                                  //include library
#include "SoftwareSerial.h"                                                         //include librarySoftwareSerial    mySerial1(5, 6);                                                  // example for uno, use software serialDFRobot_Gesture_Touch   DFGT(&mySerial1);                                           //Instantiate object
/****************************************set up and loop part*********************************/
void setup() {Serial.begin(9600);                                                               //Example Set the baud rate of the serial port to 9600mySerial1.begin(9600);                                                            //Initialize the soft serial portdelay(1000);while (mySerial1.available()) {                                                   // flush serial buffermySerial1.read();}DFGT.setGestureDistance(20);                                                      // suggest default value// DFGT.enableFunction(DFGT_FUN_ALL);                                             // enable all functions// DFGT.disableFunction(DFGT_FUN_RIGHT | DFGT_FUN_LEFT);                          // disable function test// DFGT.disableFunction(DFGT_FUN_TOUCH1 | DFGT_FUN_TOUCH2);                       // disable function test// DFGT.enableFunction(DFGT_FUN_RIGHT | DFGT_FUN_LEFT);                           // enable function test// DFGT.setSleep(4);                                                              // set auto sleep time out, in sleep mode, put somethingSerial.println("设备上线!");
}
void loop() {getGesture();                                                                     //Get gesture information
}
/*Get gesture information*/
void getGesture() {int rslt = DFGT.getAnEvent();                                                    // get an event that data saved in serial bufferif (rslt != DF_ERR) {switch (rslt) {case DFGT_EVT_BACK: {                                                        // The serial port displays the corresponding valueSerial.println("get event back");} break;case DFGT_EVT_FORWARD: {                                                     // The serial port displays the corresponding valueSerial.println("get event forward");} break;case DFGT_EVT_RIGHT: {                                                       // The serial port displays the corresponding valueSerial.println("get event right");} break;case DFGT_EVT_LEFT: {                                                        // The serial port displays the corresponding valueSerial.println("get event left");} break;case DFGT_EVT_PULLUP: {                                                      // The serial port displays the corresponding valueSerial.println("get event pull up");} break;case DFGT_EVT_PULLDOWN: {                                                    // The serial port displays the corresponding valueSerial.println("get event pull down");} break;case DFGT_EVT_PULLREMOVE: {                                                  // The serial port displays the corresponding valueSerial.println("get event pull and remove");} break;case DFGT_EVT_TOUCH1: {                                                      // The serial port displays the corresponding valueSerial.println("get event touch1");} break;case DFGT_EVT_TOUCH2: {                                                      // The serial port displays the corresponding valueSerial.println("get event touch2");} break;case DFGT_EVT_TOUCH3: {                                                      // The serial port displays the corresponding valueSerial.println("get event touch3");} break;case DFGT_EVT_TOUCH4: {                                                      // The serial port displays the corresponding valueSerial.println("get event touch4");} break;case DFGT_EVT_TOUCH5: {                                                      // The serial port displays the corresponding valueSerial.println("get event touch5");} break;}}
}

4、注意事项 

说明:需要下载对应的库文件才不会编译报错。程序里面设置的检测距离为20cm,所以实际的距离情况是要小于等于20cm,这样效果会比较好。做手势动作的时候最好慢一些,这样识别到的信号会更加准确和稳定。

5、基本原理

        红外手势识别传感器是一种基于红外光反射原理的手势识别传感器,能够通过检测手部动作来控制电路或设备的开关、方向等。在Arduino中使用红外手势识别传感器需要了解其工作原理。
        红外手势识别传感器内置有红外发射管和红外接收管,通过发射红外光线并接收反射回来的信号,检测用户的手部动作并输出对应的控制信号。
        当用户进行手势动作时,可以通过让手部区域遮挡或反射红外光线来控制传感器的输出。具体来说,传感器通过内置的红外发射管发射红外光,并接收反射回来的光信号,通过对信号的处理和分析来识别不同的手势动作。例如,当用户抬起手臂时,会使红外光线被遮挡一段时间,传感器可以检测到这种遮挡行为并输出对应的控制信号。同时,也可以通过手指和手掌的不同姿势来实现不同的控制功能,例如手势的上下左右、点击等。
        在Arduino中使用红外手势识别传感器,我们需要先将其正确连接到Arduino板上,并编写相应的程序进行控制。通常,可以通过数字输入输出端口发送控制信号,使传感器工作,并通过数字输入输出端口读取传感器返回的手势控制信号。具体地,在程序中需要使用Arduino提供的相应函数来对数字输入输出端口进行操作,从而实现红外手势识别传感器的控制。


http://www.ppmy.cn/news/165363.html

相关文章

手绘echarts散点图

面对各种定制,echarts图表有时候不好处理,无论是数据处理还是样式处理,都会被echarts限制。 举例:echarts散点图如果数据较少,echarts会均匀分布,如图1 对于产品或者老板对页面的要求,认为中间…

微星Z370M主板参数

一 概述 官网信息:Specification Z370M MORTAR | 微星中国 (msi.com)https://cn.msi.com/Motherboard/Z370M-MORTAR/Specification 二 参数截图 个别细节待后续了解分析。。。

微星z370安装linux系统,微星主板Z370、Z270、H110、H170设置U盘启动,U盘启动快捷键...

微星主板H110、H170、Z270、Z370组装电脑怎么设置u盘启动?微星主板U盘装系统快捷键是什么呢?下面玉米系统小编教大家微星主板H110、H170、Z270、Z370设置u盘启动。 微星主板设置u盘启动方法: 1.首先制作一个U帮忙U盘启动盘,参考“…

Makefile中的自动变量

Makefile中的自动变量 $< —— 规则中的第一个依赖 $ —— 规则中的目标 $^ —— 规则中的所有依赖 _____________________________________ Makefile中的自动变量 $< —— 规则中的第一个依赖 $ —— 规则中的目标 $^ —— 规则中的所有依赖

i78700和i510400f性能差距大不大

i5-10400F是一款中端处理器&#xff0c;适用于具有六个基于Comet Lake架构&#xff08;CML-S&#xff0c;第四代Skylake&#xff09;的六核的台式机。 借助超线程技术&#xff0c;该处理器的频率在4.1至4.8 GHz之间&#xff0c;并且可以同时执行多达12个线程 组装电脑选i5-1040…

黑苹果 GTX1060 6G显卡 EFI 文件

本人的配置如下&#xff1a; 电脑型号 微星 MS-7B45 台式电脑 操作系统 Windows 10 专业版 64位 ( DirectX 12 ) 处理器 英特尔 Core i7-8700 3.20GHz 六核 主板 微星 Z370 GAMING PRO CARBON AC (MS-7B45) ( Z370 芯片组 ) 内存 16 GB ( 威刚 DDR4 2400MHz ) 主硬盘 三星 S…

z370对应的服务器芯片,Z370芯片组为何仅支持第八代酷睿处理器?供电针脚不一样!...

拼 命 加 载 中 ... Intel为了应对AMD锐龙处理器挑起的多核大战&#xff0c;一年内居然放出了两代酷睿处理器&#xff0c;而第八代酷睿处理器也并没有让我们失望。Core i7-8700K在i7-7700K四个物理核心前提下&#xff0c;多加了两个&#xff0c;成为了六核十二线程处理器&#…

技嘉主板raid组建方法_【技嘉Z370评测】M.2磁盘RAID测试及总结_技嘉 Z370 AORUS Gaming 7_主板评测-中关村在线...

Z370 AORUS Gaming 7还有一项重要特色是提供了3个M.2扩展插槽&#xff0c;支持用户组建M.2 RAID平台。本次我们将采用两块规格相同的M.2磁盘来测试一下组建RAID前后的性能差异。 单条M.2运行速度 双条M.2 RAID速度 磁盘性能对比测试 本次测试使用的是三星960 EVO 250GB M.2接口…