Components and supplies
3
Tactile Switch, Top Actuated
15
Jumper wires (generic)
1
SparkFun Triple Axis Accelerometer and Gyro Breakout - MPU-6050
1
Arduino Micro
Apps and platforms
1
Arduino IDE
Project description
Code
Untitled file
arduino
1#include <Wire.h> 2#include "Mouse.h" 3#include <Adafruit_MPU6050.h> 4#include <Adafruit_Sensor.h> 5Adafruit_MPU6050 mpu; 6float y; 7float x; 8int mode; 9void setup() { 10 mode=0; 11 pinMode(4,INPUT_PULLUP); 12 pinMode(5,INPUT_PULLUP); 13 pinMode(6,INPUT_PULLUP); 14 Serial.begin(115200); 15 // will pause Zero, Leonardo, etc until serial console opens 16 17 Serial.println("Adafruit MPU6050 test!"); 18 19 // Try to initialize! 20 if (!mpu.begin()) { 21 Serial.println("Failed to find MPU6050 chip"); 22 while (1) { 23 delay(10); 24 } 25 } 26 Serial.println("MPU6050 Found!"); 27 28 mpu.setAccelerometerRange(MPU6050_RANGE_8_G); 29 Serial.print("Accelerometer range set to: "); 30 switch (mpu.getAccelerometerRange()) { 31 case MPU6050_RANGE_2_G: 32 Serial.println("+-2G"); 33 break; 34 case MPU6050_RANGE_4_G: 35 Serial.println("+-4G"); 36 break; 37 case MPU6050_RANGE_8_G: 38 Serial.println("+-8G"); 39 break; 40 case MPU6050_RANGE_16_G: 41 Serial.println("+-16G"); 42 break; 43 } 44 mpu.setGyroRange(MPU6050_RANGE_500_DEG); 45 Serial.print("Gyro range set to: "); 46 switch (mpu.getGyroRange()) { 47 case MPU6050_RANGE_250_DEG: 48 Serial.println("+- 250 deg/s"); 49 break; 50 case MPU6050_RANGE_500_DEG: 51 Serial.println("+- 500 deg/s"); 52 break; 53 case MPU6050_RANGE_1000_DEG: 54 Serial.println("+- 1000 deg/s"); 55 break; 56 case MPU6050_RANGE_2000_DEG: 57 Serial.println("+- 2000 deg/s"); 58 break; 59 } 60 61 mpu.setFilterBandwidth(MPU6050_BAND_21_HZ); 62 Serial.print("Filter bandwidth set to: "); 63 switch (mpu.getFilterBandwidth()) { 64 case MPU6050_BAND_260_HZ: 65 Serial.println("260 Hz"); 66 break; 67 case MPU6050_BAND_184_HZ: 68 Serial.println("184 Hz"); 69 break; 70 case MPU6050_BAND_94_HZ: 71 Serial.println("94 Hz"); 72 break; 73 case MPU6050_BAND_44_HZ: 74 Serial.println("44 Hz"); 75 break; 76 case MPU6050_BAND_21_HZ: 77 Serial.println("21 Hz"); 78 break; 79 case MPU6050_BAND_10_HZ: 80 Serial.println("10 Hz"); 81 break; 82 case MPU6050_BAND_5_HZ: 83 Serial.println("5 Hz"); 84 break; 85 } 86 Serial.println(""); 87 delay(100); 88} 89void loop() { 90sensors_event_t a, g, temp; 91mpu.getEvent(&a, &g, &temp); 92x=-g.gyro.z*2.5; 93y=-g.gyro.x*2.5; 94if(!digitalRead(4)&& mode==0){mode=1;} 95else if(!digitalRead(4)&& mode==1){mode=0;} 96while(!digitalRead(4)){delay(150);} 97if(mode==1){ 98Mouse.move(x, y, 0);} 99if (!digitalRead(6)) {Mouse.press(MOUSE_LEFT);} 100else {Mouse.release(MOUSE_LEFT);} 101if (!digitalRead(5)) {Mouse.press(MOUSE_RIGHT);} 102else {Mouse.release(MOUSE_RIGHT);} 103delay(1/21); 104}
Untitled file
arduino
1#include <Wire.h> 2#include "Mouse.h" 3#include <Adafruit_MPU6050.h> 4#include 5 <Adafruit_Sensor.h> 6Adafruit_MPU6050 mpu; 7float y; 8float x; 9int mode; 10void 11 setup() { 12 mode=0; 13 pinMode(4,INPUT_PULLUP); 14 pinMode(5,INPUT_PULLUP); 15 16 pinMode(6,INPUT_PULLUP); 17 Serial.begin(115200); 18 // will pause Zero, Leonardo, 19 etc until serial console opens 20 21 Serial.println("Adafruit MPU6050 test!"); 22 23 24 // Try to initialize! 25 if (!mpu.begin()) { 26 Serial.println("Failed 27 to find MPU6050 chip"); 28 while (1) { 29 delay(10); 30 } 31 } 32 33 Serial.println("MPU6050 Found!"); 34 35 mpu.setAccelerometerRange(MPU6050_RANGE_8_G); 36 37 Serial.print("Accelerometer range set to: "); 38 switch (mpu.getAccelerometerRange()) 39 { 40 case MPU6050_RANGE_2_G: 41 Serial.println("+-2G"); 42 break; 43 44 case MPU6050_RANGE_4_G: 45 Serial.println("+-4G"); 46 break; 47 case 48 MPU6050_RANGE_8_G: 49 Serial.println("+-8G"); 50 break; 51 case MPU6050_RANGE_16_G: 52 53 Serial.println("+-16G"); 54 break; 55 } 56 mpu.setGyroRange(MPU6050_RANGE_500_DEG); 57 58 Serial.print("Gyro range set to: "); 59 switch (mpu.getGyroRange()) { 60 61 case MPU6050_RANGE_250_DEG: 62 Serial.println("+- 250 deg/s"); 63 break; 64 65 case MPU6050_RANGE_500_DEG: 66 Serial.println("+- 500 deg/s"); 67 break; 68 69 case MPU6050_RANGE_1000_DEG: 70 Serial.println("+- 1000 deg/s"); 71 break; 72 73 case MPU6050_RANGE_2000_DEG: 74 Serial.println("+- 2000 deg/s"); 75 break; 76 77 } 78 79 mpu.setFilterBandwidth(MPU6050_BAND_21_HZ); 80 Serial.print("Filter 81 bandwidth set to: "); 82 switch (mpu.getFilterBandwidth()) { 83 case MPU6050_BAND_260_HZ: 84 85 Serial.println("260 Hz"); 86 break; 87 case MPU6050_BAND_184_HZ: 88 89 Serial.println("184 Hz"); 90 break; 91 case MPU6050_BAND_94_HZ: 92 93 Serial.println("94 Hz"); 94 break; 95 case MPU6050_BAND_44_HZ: 96 Serial.println("44 97 Hz"); 98 break; 99 case MPU6050_BAND_21_HZ: 100 Serial.println("21 Hz"); 101 102 break; 103 case MPU6050_BAND_10_HZ: 104 Serial.println("10 Hz"); 105 break; 106 107 case MPU6050_BAND_5_HZ: 108 Serial.println("5 Hz"); 109 break; 110 } 111 112 Serial.println(""); 113 delay(100); 114} 115void loop() { 116sensors_event_t 117 a, g, temp; 118mpu.getEvent(&a, &g, &temp); 119x=-g.gyro.z*2.5; 120y=-g.gyro.x*2.5; 121if(!digitalRead(4)&& 122 mode==0){mode=1;} 123else if(!digitalRead(4)&& mode==1){mode=0;} 124while(!digitalRead(4)){delay(150);} 125if(mode==1){ 126Mouse.move(x, 127 y, 0);} 128if (!digitalRead(6)) {Mouse.press(MOUSE_LEFT);} 129else {Mouse.release(MOUSE_LEFT);} 130if 131 (!digitalRead(5)) {Mouse.press(MOUSE_RIGHT);} 132else {Mouse.release(MOUSE_RIGHT);} 133delay(1/21); 134}
Downloadable files
schema
schema

Comments
Only logged in users can leave comments