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

0、结果

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

1、外观

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

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

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

    5V--------------VCC
GND--------------GND
      5--------------TX
      6--------------RX文章地址https://www.yii666.com/blog/468666.html

3、源程序

说明:当识别到对应手势的时候,会在串口打印出来,并将对应功能进行函数化,方便移植。文章来源地址https://www.yii666.com/blog/468666.html

/****************************************hcsr501 part****************************************/
/*
  wiring:
  VCC------VCC
  GND------GND
    5------TX
    6------RX
*/

#include "DFRobot_Gesture_Touch.h"                                                  //include library
#include "SoftwareSerial.h"                                                         //include library

SoftwareSerial    mySerial1(5, 6);                                                  // example for uno, use software serial

DFRobot_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 9600
  mySerial1.begin(9600);                                                            //Initialize the soft serial port
  delay(1000);
  while (mySerial1.available()) {                                                   // flush serial buffer
    mySerial1.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 something
  Serial.println("设备上线!");
}
void loop() {
  getGesture();                                                                     //Get gesture information
}
/*Get gesture information*/
void getGesture() {
  int rslt = DFGT.getAnEvent();                                                    // get an event that data saved in serial buffer
  if (rslt != DF_ERR) {
    switch (rslt) {
      case DFGT_EVT_BACK: {                                                        // The serial port displays the corresponding value
          Serial.println("get event back");
        } break;
      case DFGT_EVT_FORWARD: {                                                     // The serial port displays the corresponding value
          Serial.println("get event forward");
        } break;
      case DFGT_EVT_RIGHT: {                                                       // The serial port displays the corresponding value
          Serial.println("get event right");
        } break;
      case DFGT_EVT_LEFT: {                                                        // The serial port displays the corresponding value
          Serial.println("get event left");
        } break;
      case DFGT_EVT_PULLUP: {                                                      // The serial port displays the corresponding value
          Serial.println("get event pull up");
        } break;
      case DFGT_EVT_PULLDOWN: {                                                    // The serial port displays the corresponding value
          Serial.println("get event pull down");
        } break;
      case DFGT_EVT_PULLREMOVE: {                                                  // The serial port displays the corresponding value
          Serial.println("get event pull and remove");
        } break;
      case DFGT_EVT_TOUCH1: {                                                      // The serial port displays the corresponding value
          Serial.println("get event touch1");
        } break;
      case DFGT_EVT_TOUCH2: {                                                      // The serial port displays the corresponding value
          Serial.println("get event touch2");
        } break;
      case DFGT_EVT_TOUCH3: {                                                      // The serial port displays the corresponding value
          Serial.println("get event touch3");
        } break;
      case DFGT_EVT_TOUCH4: {                                                      // The serial port displays the corresponding value
          Serial.println("get event touch4");
        } break;
      case DFGT_EVT_TOUCH5: {                                                      // The serial port displays the corresponding value
          Serial.println("get event touch5");
        } break;
    }
  }
}

4、注意事项 

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

5、基本原理

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

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

领支付宝红包赞助服务器费用

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png