gada888 发表于 2019-9-30 17:01:23

手势传感器的试用-1

本帖最后由 gada888 于 2019-10-2 16:15 编辑

老有学生说手势传感看着挺好玩的,让我给试用一下,于是我就给买了回来。说说试用的经过吧。刚拿到手怎么试COM口都不出结果,换了7.8个单片机都不行。最后发现是arduino软件方面的事,换了arduino 1.81版后,一切正常。
先来认识一下它
()SKU:SEN0285) Gesture&Touch Sensor V1.0手势识别及触摸传感

简介
这款是一款集成了手势识别功能和触摸识别功能的传感器模块,它的最大检测距离为30cm,距离0-30cm可调。其中,能够识别向右、向左、向
后、向前、下压、上拉及上拉下压后手松开共7种手势,以及5路的触摸信号,并具有自动睡眠和唤醒的功能。
模块自带手势识别算法,输出数据简洁可靠,可通过串口直接与arduino及树莓派等控制器或上位机通讯。用于智能灯、人机交互、智能小车、趣
味游戏等多功能远距离手势控制端。传感器板载5路触摸片,不仅可以直接实现触摸还可以利用导线连接方式延长触摸端,

=============
首先呢写了一段代码,先测试一下简单的触控功能。加了一个8欧小喇叭。用arduino内建的tone库,测试几个音频。

先看一下连线图


代码部分呢,我首先定义了几个1.2.3音符对应的频率。然后定义一个数字pin脚来播放音频。最后在程序里执行部分里找到触控命令,在其下面加入tone命令参数。例如:
tone(tonePin, Fa, 125);这样很快就完成了这段代码。当然还删除了一些没有的语句。

//mady by gada888   2019-09-30

#include "DFRobot_Gesture_Touch.h"

#ifdef __AVR__
#include "SoftwareSerial.h"
SoftwareSerial    mySerial(10, 11);         // example for uno, use software serial
#elif defined ESP_PLATFORM
#include "HardwareSerial.h"
HardwareSerial    mySerial(1);
#endif

DFRobot_Gesture_Touch   DFGT(&mySerial);    // init sensor object, request write and read function

#define Do 131
#define Re 147
#define Mi 165
#define Fa 175
#define Sol 196

int tonePin = 13;

void setup()
{
Serial.begin(115200);
mySerial.begin(9600);
delay(500);
while(mySerial.available())// flush serial buffer
    mySerial.read();
Serial.println("gesture&touch sensor test");

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.enableFunction(DFGT_FUN_RIGHT | DFGT_FUN_LEFT);   // enable function test
// DFGT.setSleep(4);                        // set auto sleep time out, in sleep mode, somethingapproach will weak it up
}

void loop()
{
int8_t    rslt = DFGT.getAnEvent();// get an event that data saved in serial buffer
if(rslt != DF_ERR) {
    // DFGT.setSleep(DFGT_SLEEP_DISABLE);// disable auto sleep
    switch(rslt) {
      case DFGT_EVT_BACK: {
      Serial.println("get event back");
      } break;
      case DFGT_EVT_FORWARD: {
      Serial.println("get event forward");
      } break;
      case DFGT_EVT_RIGHT: {
      Serial.println("get event right");
      } break;
      case DFGT_EVT_LEFT: {
      Serial.println("get event left");
      } break;
      case DFGT_EVT_PULLUP: {
      Serial.println("get event pull up");
      } break;
      case DFGT_EVT_PULLDOWN: {
      Serial.println("get event pull down");
      } break;
      case DFGT_EVT_PULLREMOVE: {
      Serial.println("get event pull and remove");
      } break;
      case DFGT_EVT_TOUCH1: {
      Serial.println("get event touch1");
      tone(tonePin, Do, 125);
      delay(125);
      } break;
      case DFGT_EVT_TOUCH2: {
      Serial.println("get event touch2");
      tone(tonePin, Re, 125);
       delay(125);
      } break;
      case DFGT_EVT_TOUCH3: {
      Serial.println("get event touch3");
      tone(tonePin, Mi, 125);
      delay(125);
      } break;
      case DFGT_EVT_TOUCH4: {
      Serial.println("get event touch4");
      tone(tonePin, Fa, 125);
      delay(125);
      } break;
      case DFGT_EVT_TOUCH5: {
      Serial.println("get event touch5");
      tone(tonePin, Sol, 125);
      delay(125);
      } break;
    }
}
}


这是程序执行的效果。
视频晚点奉上。
https://v.youku.com/v_show/id_XNDM4NDAxNDk1Mg==.html?spm=a2hzp.8244740.0.0
页: [1]
查看完整版本: 手势传感器的试用-1