Balancing LED project using MPU6050
The tilt will be analyzed and shown as outputs on LEDs using MPU6050 and Arduino Uno.
Components and supplies
1
Inertial Measurement Unit (IMU) (6 deg of freedom)
1
Breadboard (generic)
15
5 mm LED: Red
1
Arduino UNO
1
Jumper wires (generic)
Project description
Code
CODE
c_cpp
1#include <Adafruit_MPU6050.h> 2#include <Adafruit_Sensor.h> 3#include <Wire.h> 4int L1 = 13; 5int L2 = 12; 6int L3= 11; 7int L4 = 10; 8int L5 = 9; 9int L6 = 8; 10int L7 = 7; 11int L8 = 6; 12int L9 = 5; 13int L10 = 4; 14int L11 = 3; 15int L12 = 2; 16int L13 = A0; 17int L14 = A1; 18int L15 = A2; 19int Mpu; 20 21Adafruit_MPU6050 mpu; 22 23void setup(void) { 24 Serial.begin(115200); 25 26 // Try to initialize! 27 if (!mpu.begin()) { 28 Serial.println("Failed to find MPU6050 chip"); 29 while (1) { 30 delay(10); 31 } 32 } 33 Serial.println("MPU6050 Found!"); 34 35 // set accelerometer range to +-8G 36 mpu.setAccelerometerRange(MPU6050_RANGE_8_G); 37 38 // set gyro range to +- 500 deg/s 39 mpu.setGyroRange(MPU6050_RANGE_500_DEG); 40 41 // set filter bandwidth to 21 Hz 42 mpu.setFilterBandwidth(MPU6050_BAND_21_HZ); 43 44 delay(100); 45 pinMode(L1, OUTPUT); 46 pinMode(L2, OUTPUT); 47 pinMode(L3, OUTPUT); 48 pinMode(L4, OUTPUT); 49 pinMode(L5, OUTPUT); 50 pinMode(L6, OUTPUT); 51 pinMode(L7, OUTPUT); 52 pinMode(L8, OUTPUT); 53 pinMode(L9, OUTPUT); 54 pinMode(L10, OUTPUT); 55 pinMode(L11, OUTPUT); 56 pinMode(L12, OUTPUT); 57 pinMode(L13, OUTPUT); 58 pinMode(L14, OUTPUT); 59 pinMode(L15, OUTPUT); 60} 61 62void loop() { 63 /* Get new sensor events with the readings */ 64 sensors_event_t a, g, temp; 65 mpu.getEvent(&a, &g, &temp); 66 67 if(a.acceleration.y<=-6.00 && a.acceleration.y>-7.00 ){ 68 digitalWrite(L1,HIGH); 69 } 70 else 71 { 72 digitalWrite(L1,LOW); 73 } 74 if(a.acceleration.y<=-5.00 &&a.acceleration.y>-6.00 ){ 75 76 digitalWrite(L2,HIGH); 77 78 }else 79 { 80 digitalWrite(L2,LOW); 81 } 82 if(a.acceleration.y<=-4.00&&a.acceleration.y>-5.00 ){ 83 84 digitalWrite(L3,HIGH); 85 86 }else 87{ 88 digitalWrite(L3,LOW); 89 } 90 91 if(a.acceleration.y<=-3.00&&a.acceleration.y>-4.00 ){ 92 93 digitalWrite(L4,HIGH); 94 95 }else 96 { 97 digitalWrite(L4,LOW); 98 } 99 if(a.acceleration.y<=-2.00&&a.acceleration.y>-3.00 ){ 100 101 digitalWrite(L5,HIGH); 102 103 }else 104 { 105 digitalWrite(L5,LOW); 106 } 107 if(a.acceleration.y<=-1.00&&a.acceleration.y>-2.00 ){ 108 109 digitalWrite(L6,HIGH); 110 111 }else{ 112 113 digitalWrite(L6,LOW); 114 } 115 116 if(a.acceleration.y<0.00&&a.acceleration.y>-1.00 ){ 117 118 digitalWrite(L7,HIGH); 119 120 }else{ 121 122 digitalWrite(L7,LOW); 123 } 124 125 if(a.acceleration.y==0 ){ 126 127 digitalWrite(L8,HIGH); 128 129 }else{ 130 131 digitalWrite(L8,LOW); 132 } 133 134 if(a.acceleration.y<=1.00 && a.acceleration.y>0.01 ){ 135 136 digitalWrite(L9,HIGH); 137 } 138 else 139 { 140 digitalWrite(L9,LOW); 141 } 142 if(a.acceleration.y<=2.00 &&a.acceleration.y>1.00 ){ 143 144 digitalWrite(L10,HIGH); 145 146 }else 147 { 148 digitalWrite(L10,LOW); 149 } 150 if(a.acceleration.y<=3.00&&a.acceleration.y>2.00 ){ 151 152 digitalWrite(L11,HIGH); 153 154 }else 155{ 156 digitalWrite(L11,LOW); 157 } 158 159 if(a.acceleration.y<=4.00&&a.acceleration.y>3.00 ){ 160 161 digitalWrite(L12,HIGH); 162 163 }else 164 { 165 digitalWrite(L12,LOW); 166 } 167 if(a.acceleration.y<=5.00&&a.acceleration.y>4.00 ){ 168 169 digitalWrite(L13,HIGH); 170 171 }else 172 { 173 digitalWrite(L13,LOW); 174 } 175 if(a.acceleration.y<=6.00&&a.acceleration.y>5.00 ){ 176 177 digitalWrite(L14,HIGH); 178 179 }else 180 181 { 182 183 digitalWrite(L14,LOW); 184 } 185 186 if(a.acceleration.y<=7.00&&a.acceleration.y>6.00 ){ 187 188 digitalWrite(L15,HIGH); 189 190 }else{ 191 192 digitalWrite(L15,LOW); 193 } 194 195 } 196
Downloadable files
Balancing LED schematic
Balancing LED schematic

Balancing LED schematic
Balancing LED schematic

Comments
Only logged in users can leave comments