這是我的第一個項目,ThimbleKrox,它是一個頂針,可以讓你通過食指(或任何手指)的移動來控制鼠標指針。
第 1 步:所需材料和工具
所需材料:
MPU-6050
用于連接 Arduino 和 PC 的電纜(微型 USB 到 USB)
跳線(連接 Arduino 和 MPU-6050)
一個松緊帶(如果你想將 Arduino 連接到你的手上)
所需工具:
安裝了 Arduino IDE 的計算機(用于啟動 Arduino 中的代碼)
烙鐵(僅當 Arduino 未預先組裝引腳連接器時)
3D 打印機(如果你想讓你的頂針看起來很酷)
第 2 步:連接
將 arduino 的引腳連接到 MPU-6050 的引腳:
Arduino的引腳VCC到引腳VCC
引腳 GND 到 GND
引腳 2 到 SDA
引腳 3 到 SCL。
第 3 步:3D 打?。蛇x)
如果您希望您的頂針看起來不錯,并且如果您有 3D 打印機,您可以打印物理頂針。
我做了兩個版本,一個是透明的,因此不需要打印支撐并且不太笨重,第二個是我嘗試用蒸汽朋克風格做的而不讓它太笨重(它仍然比透明的更笨重一個),但是這個需要打印支持,并且只有在彩色時才能返回最好的(對于 PLA,我與蛋彩相處得很好)。兩者都需要與底部有兩個內部突起的部分一起打印
第 4 步:組裝
使用 3D 打印頂針
要使用印刷頂針安裝所有東西,連接后,必須將 MPU-6050 插入頂針的上腔內,將電纜容納在下腔中
沒有 3D 打印的頂針
在這種情況下,組裝以更業余的方式完成,即將 MPU-6050 放置在感興趣手指的最后一個方陣并用膠帶或松緊帶將其擋住。
第 5 步:編碼和校準
運行代碼的第一件事是安裝所需的庫,即Wire.h 、I2Cdev.h 、MPU6050.h和Mouse.h
完成此操作后,我建議加載 ThimbleKrox 校準代碼,戴上頂針并打開串行監視器(Ctrl + Shift + M)。
您現在應該看到如下內容:
right | gx = 3165 gy = 469 gz = -1055 | ax = 15232 ay = 2064 az = -4496
如果正確校準,您希望指針移動的方向顯示在哪里,然后是校準所需的一些值。
現在您必須重新打開代碼并轉到標有“//校準線”的行并更改數值,直到獲得正確的方向。(每次更改代碼中的值時,都需要在 Arduino 中重新上傳)
串行監視器:
left | gx = 3165 gy = 469 gz = -1055 | ax = 5232 ay = 2064 az = -4496
校準代碼:
if (ax> = 15000) { // calibration line
right ();
}
串行監視器標記為“左”,但我們希望將此行標記為“右”,因此我們需要將“15000”值更改為“5000”。這是因為,在這種情況下,我們必須確保檢測到的“ax”大于代碼中的值。我們知道它必須更大,因為在代碼中有一個主要標志,我們必須查看串行監視器的“ax”,因為在代碼中有“ax”。(只需更改代碼的數值)
在 Arduino 中重新加載代碼后,我們將擁有:
串行監視器:
right | gx = 3165 gy = 469 gz = -1055 | ax = 5232 ay = 2064 az = -4496
校準代碼:
if (ax> = 5000) { // calibration line
right ();
}
當校準代碼中的所有校準線都已調整,因此校準版本頂針起作用時,必須調整主代碼的值以匹配校準代碼。
校準代碼:
if (ax> = 5000) { // calibration line
right ();
}
主要代碼:
if (ax> = 15000) { // calibration line
right ();
}
主代碼必須更改為:
if (ax> = 5000) { // calibration line
right ();
}
現在是時候上傳主代碼了
第 6 步:完成項目
現在是時候戴上你的手指控制鼠標用它玩 PC 游戲了!
ThimbleKrox code:
//Code to control the mouse pointer through the movement of a finger
//To calibrate the device run "ThimbleKrox calibration code" and follow the tutorial found at https://www.hackster.io/projects/dd8881/
//The lines that need to be changed for calibration have "http://calibration line"
//code write by Magform
#include
#include
#include
#include
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
int sensibility=10; //Change this value to change the sensitivity of the device
void setup() {
Serial.begin(9600);
Wire.begin();
mpu.initialize();
if (!mpu.testConnection()) { //check connection with the MPU-6050, if there is no connection stop to work
while (1);
}
}
void up(){
Mouse.move(0, -sensibility);
}
void down(){
Mouse.move(0, sensibility);
}
void left(){
Mouse.move(-sensibility, 0);
}
void right(){
Mouse.move(sensibility, 0);
}
void loop() {
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
if(ax>=15000){ //calibration line
right();
}
if(ax<=-9000){ ? ? ? ? ? ? ? ? ? ? ? ? //calibration line
left();
}
if(ay<=-8000){ ? ? ? ? ? ? ? ? ? ? ? ? ?//calibration line
up();
}
if(ay>=10000){ //calibration line
down();
}
//uncomment the following lines to set the right click with a sprint up and the left click with a sprint down (Work in progress part)
/*
if(gy>=20000){ //calibration line
Mouse.click(MOUSE_RIGHT);
delay(100);
}
if(gy<=-20000){ ? ? ? ? ? ? ? ? ? ? ? ?//calibration line
Mouse.click(MOUSE_LEFT);
delay(100);
}
*/
delay(10);
}
-
鼠標
+關注
關注
6文章
589瀏覽量
39727 -
控制
+關注
關注
4文章
1010瀏覽量
122628 -
MPU6050
+關注
關注
39文章
307瀏覽量
71190
發布評論請先 登錄
相關推薦
評論