8089| 0
|
[项目] 手势传感器的试用pinball-2 |
本帖最后由 gada888 于 2019-10-2 16:17 编辑 老有学生说手势传感看着挺好玩的,让我给试用一下,于是我就给买了回来。说说试用的经过吧。刚拿到手怎么试COM口都不出结果,换了7.8个单片机都不行。最后发现是Arduino软件方面的事,换了Arduino 1.81版后,一切正常。 先来认识一下它 ()SKU:SEN0285) Gesture&Touch Sensor V1.0手势识别及触摸传感 简介 这款是一款集成了手势识别功能和触摸识别功能的传感器模块,它的最大检测距离为30cm,距离0-30cm可调。其中,能够识别向右、向左、向 后、向前、下压、上拉及上拉下压后手松开共7种手势,以及5路的触摸信号,并具有自动睡眠和唤醒的功能。 模块自带手势识别算法,输出数据简洁可靠,可通过串口直接与arduino及树莓派等控制器或上位机通讯。用于智能灯、人机交互、智能小车、趣 味游戏等多功能远距离手势控制端。传感器板载5路触摸片,不仅可以直接实现触摸还可以利用导线连接方式延长触摸端, ============= 那么这一次做个什么呢。就用他来做个‘pinball’,中文我也不知道叫什么。用两个伺服电机个控制一个摆臂。然后用手势来控制摆臂运动。 配件: 1.arduino uno 2.伺服电机x2 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] 这是运行后的程序 视频晚点奉上 先说下测试结果。 测试中只是连接了一个伺服电机。另一个因为是机械伺服,暂时没用。测试结果是在离传感20厘米内,有效性满高。但是有个延迟是在动作结束后。手势的信号还在出现。不知道怎么解决这个问题。 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed