手势传感器测试pinball-3
本帖最后由 gada888 于 2019-10-2 16:21 编辑老有学生说手势传感看着挺好玩的,让我给试用一下,于是我就给买了回来。说说试用的经过吧。刚拿到手怎么试COM口都不出结果,换了7.8个单片机都不行。最后发现是Arduino软件方面的事,换了arduino 1.81版后,一切正常。
先来认识一下它
()SKU:SEN0285) Gesture&Touch Sensor V1.0手势识别及触摸传感
简介
这款是一款集成了手势识别功能和触摸识别功能的传感器模块,它的最大检测距离为30cm,距离0-30cm可调。其中,能够识别向右、向左、向
后、向前、下压、上拉及上拉下压后手松开共7种手势,以及5路的触摸信号,并具有自动睡眠和唤醒的功能。
模块自带手势识别算法,输出数据简洁可靠,可通过串口直接与arduino及树莓派等控制器或上位机通讯。用于智能灯、人机交互、智能小车、趣
味游戏等多功能远距离手势控制端。传感器板载5路触摸片,不仅可以直接实现触摸还可以利用导线连接方式延长触摸端,
=============
那么这次做个什么项目呢。还是做pinball游戏机,只是这次用手势传感器的触摸功能。
配件如下:arduino uno,伺服电机x2.手势传感器。
先看一下连线图
代码部分,首先定义两个伺服电机参数,然后在回圈的break case语句里添加执行servo的语句。servo部分设计师按触控1,则伺服位于0位置,触控2被出发,则伺服摆臂摆到90度。触控3和4做同样的设计,这样每个伺服就可以各控制一个pinball的击球臂。有鉴于触控按钮,其实可以通过导电材质延长,所以以后会想要把它的触控按键做在3D打印的手柄上。这样能更好的控制游戏。
//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, somethingapproach 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");
} 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");
myServo1.write(0);
delay(50);
} break;
case DFGT_EVT_TOUCH2: {
Serial.println("get event touch2");
myServo1.write(90);
delay(50);
} break;
case DFGT_EVT_TOUCH3: {
Serial.println("get event touch3");
myServo2.write(0);
delay(50);
} break;
case DFGT_EVT_TOUCH4: {
Serial.println("get event touch4");
myServo2.write(90);
delay(50);
} break;
case DFGT_EVT_TOUCH5: {
Serial.println("get event touch5");
} break;
}
}
}
视频晚点奉上。
评价,触控功能完全满足上述游戏设计的需要。没有任何的bug。视频里演示的黑色的伺服是个机械齿轮伺服,需要更高的电流。如果我用锂电池供电就可以很好的解决它反应滞后的问题。
https://v.youku.com/v_show/id_XNDM4NDAxMDU2NA==.html?spm=a2hzp.8244740.0.0
页:
[1]