其他
项目分享| 仅79行代码完成创意无限的手势识别
不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我
2020年告别鼠标手妙招——
整个项目的完成只需3样东西,手势识别模块,USB模块和PCB连接器。我们将一一为大家介绍。
3D打印的外壳
#include <Keyboard.h>
#include <Mouse.h>
#include <SparkFun_APDS9960.h>
SparkFun_APDS9960 gestureSensor;
const unsigned short GESTURE_INT_PIN = 1;
volatile boolean hasMovement = false;
/**
The main business logic. Translates gestures to keyboard events.
*/
void handleGesture() {
if (gestureSensor.isGestureAvailable()) {
switch (gestureSensor.readGesture()) {
case DIR_UP:
Keyboard.press(KEY_LEFT_ARROW);
break;
case DIR_DOWN:
Keyboard.press(KEY_RIGHT_ARROW);
break;
case DIR_LEFT:
Mouse.move(0, 0, -10);
break;
case DIR_RIGHT:
Mouse.move(0, 0, 10);
break;
case DIR_NEAR:
Keyboard.press(' ');
break;
case DIR_FAR:
Keyboard.press(KEY_ESC);
break;
default:
break;
}
Keyboard.releaseAll();
}
}
/**
Gets called whenever the gesture module signals there are new data to be sent
*/
void transmissionReady() {
hasMovement = true;
}
/**
Initializes gesture sensor
@return whether gesture sensor initialization was successful
*/
boolean initializeGestureSensor() {
return gestureSensor.init() && gestureSensor.enableGestureSensor(true);
}
void setup() {
Keyboard.begin();
Mouse.begin();
attachInterrupt(digitalPinToInterrupt(GESTURE_INT_PIN), transmissionReady, FALLING);
boolean initializationSuccessful = initializeGestureSensor();
// If ADPS sensor failed to initialize, block and send error messages via Serial
if (!initializationSuccessful) {
Serial.begin(9600);
while (!initializationSuccessful) {
Serial.println("Error while initializing the gesture sensor");
delay(10000);
}
}
}
void loop() {
if (hasMovement) {
handleGesture();
hasMovement = false;
// Reinitialize as workaround for sensor hanging when gesturing too fast
initializeGestureSensor();
}
}
打造基于手势识别的游戏,例如手势识别控制上下左右移动如贪吃蛇;
打造属于自己的手势锁,这个模块几乎可以移植到任何设备上,比如你的电脑;
利用手势进行电视换台,彻底解决找不到遥控器的烦恼;
搭配在车载系统上,快速帮助开车的你实现某种功能;
聋哑人怎么用小爱、小度呢,我们可以为他们打造基于手势识别的人工智能呀等等
达尔闻专属星级判定
实用系数:★★★★☆
难度系数:★★☆☆☆
创新系数:★★★★☆
达尔闻项目分享系列——聚焦物联网、嵌入式、AI、FPGA等热门应用技术,开源分享原理图、代码等项目方案,做你手边的知识库。
项目分享系列集锦:
嵌入式开发板的云计算平台搭建
STM32实现最简单空中鼠标
利用树莓派与Web界面远程控制家电
我们是妮mo,达尔闻创始人,只讲技术不撩汉的小姐姐。达尔闻在线教育平台旨在服务电子行业专业人士,提供技能培训视频,覆盖各细分领域热门话题,比如嵌入式,FPGA,人工智能等。并针对不同人群量身定制分层级学习内容,例如常用知识点,拆解评测,电赛/智能车/考研等,欢迎关注。
官网:www.darwinlearns.com
B站:达尔闻
QQ群:群1:786258064(已满)
群2:1057755357