2019-9-30 17:28:53 [显示全部楼层]
4165浏览
查看: 4165|回复: 0

[项目] 手势传感器的试用pinball-2

[复制链接]
本帖最后由 gada888 于 2019-10-2 16:17 编辑

老有学生说手势传感看着挺好玩的,让我给试用一下,于是我就给买了回来。说说试用的经过吧。刚拿到手怎么试COM口都不出结果,换了7.8个单片机都不行。最后发现是Arduino软件方面的事,换了Arduino 1.81版后,一切正常。
先来认识一下它
()SKU:SEN0285) Gesture&Touch Sensor V1.0手势识别及触摸传感
手势传感器的试用pinball-2图1
简介
这款是一款集成了手势识别功能和触摸识别功能的传感器模块,它的最大检测距离为30cm,距离0-30cm可调。其中,能够识别向右、向左、向
后、向前、下压、上拉及上拉下压后手松开共7种手势,以及5路的触摸信号,并具有自动睡眠和唤醒的功能。
模块自带手势识别算法,输出数据简洁可靠,可通过串口直接与arduino及树莓派等控制器或上位机通讯。用于智能灯、人机交互、智能小车、趣
味游戏等多功能远距离手势控制端。传感器板载5路触摸片,不仅可以直接实现触摸还可以利用导线连接方式延长触摸端,

=============
那么这一次做个什么呢。就用他来做个‘pinball’,中文我也不知道叫什么。用两个伺服电机个控制一个摆臂。然后用手势来控制摆臂运动。

手势传感器的试用pinball-2图2
配件:
1.arduino uno
2.伺服电机x2
3.手势传感

来看下连线图

手势传感器的试用pinball-2图3
代码部分,先是定义了servo参数,之后在回圈里的break case语句里添加了servo动作范围为左右挥手产生90度的摆幅。

[mw_shl_code=applescript,true]//made by gada888      2019-09-30
#include <Servo.h>
Servo myServo1, myServo2;

#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

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, something  approach will weak it up
myServo1.attach(9);
myServo2.attach(8);
myServo1.write(0);
myServo2.write(0);
}

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");
        myServo1.write(0);
        delay(15);
      } break;
      case DFGT_EVT_FORWARD: {
        Serial.println("get event forward");
        myServo1.write(90);
        delay(15);
      } break;
      case DFGT_EVT_RIGHT: {
        Serial.println("get event right");
        myServo2.write(0);
      } break;
      case DFGT_EVT_LEFT: {
        Serial.println("get event left");
        myServo2.write(90);
      } 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");
      } break;
      case DFGT_EVT_TOUCH2: {
        Serial.println("get event touch2");
      } break;
      case DFGT_EVT_TOUCH3: {
        Serial.println("get event touch3");
      } break;
      case DFGT_EVT_TOUCH4: {
        Serial.println("get event touch4");
      } break;
      case DFGT_EVT_TOUCH5: {
        Serial.println("get event touch5");
      } break;
    }
  }
}
[/mw_shl_code]

手势传感器的试用pinball-2图4
这是运行后的程序
视频晚点奉上
先说下测试结果。
测试中只是连接了一个伺服电机。另一个因为是机械伺服,暂时没用。测试结果是在离传感20厘米内,有效性满高。但是有个延迟是在动作结束后。手势的信号还在出现。不知道怎么解决这个问题。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail