Lab2Part3
Dependencies: 4DGL-uLCD-SE LSM9DS1_Library_cal mbed
main.cpp@0:98e654b8abce, 2017-09-13 (annotated)
- Committer:
- bdragon52
- Date:
- Wed Sep 13 21:14:04 2017 +0000
- Revision:
- 0:98e654b8abce
lab2part3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bdragon52 | 0:98e654b8abce | 1 | #include "mbed.h" |
bdragon52 | 0:98e654b8abce | 2 | #include "uLCD_4DGL.h" |
bdragon52 | 0:98e654b8abce | 3 | #include "LSM9DS1.h" |
bdragon52 | 0:98e654b8abce | 4 | |
bdragon52 | 0:98e654b8abce | 5 | |
bdragon52 | 0:98e654b8abce | 6 | uLCD_4DGL uLCD(p28,p27,p30); // serial tx, serial rx, reset pin; |
bdragon52 | 0:98e654b8abce | 7 | Serial pc(USBTX, USBRX); |
bdragon52 | 0:98e654b8abce | 8 | LSM9DS1 imu(p9, p10, 0xD6, 0x3C); |
bdragon52 | 0:98e654b8abce | 9 | |
bdragon52 | 0:98e654b8abce | 10 | int main() |
bdragon52 | 0:98e654b8abce | 11 | { |
bdragon52 | 0:98e654b8abce | 12 | |
bdragon52 | 0:98e654b8abce | 13 | |
bdragon52 | 0:98e654b8abce | 14 | //void readAccel(); |
bdragon52 | 0:98e654b8abce | 15 | |
bdragon52 | 0:98e654b8abce | 16 | /** |
bdragon52 | 0:98e654b8abce | 17 | *Read the accelerometer output registers. |
bdragon52 | 0:98e654b8abce | 18 | *This function will read all six accelerometer output registers. |
bdragon52 | 0:98e654b8abce | 19 | *The readings are stored in the class' ax, ay, and az variables. Read |
bdragon52 | 0:98e654b8abce | 20 | *those _after_ calling readAccel(). |
bdragon52 | 0:98e654b8abce | 21 | **/ |
bdragon52 | 0:98e654b8abce | 22 | |
bdragon52 | 0:98e654b8abce | 23 | imu.begin(); |
bdragon52 | 0:98e654b8abce | 24 | if (!imu.begin()) { |
bdragon52 | 0:98e654b8abce | 25 | |
bdragon52 | 0:98e654b8abce | 26 | } |
bdragon52 | 0:98e654b8abce | 27 | imu.calibrate(); |
bdragon52 | 0:98e654b8abce | 28 | |
bdragon52 | 0:98e654b8abce | 29 | |
bdragon52 | 0:98e654b8abce | 30 | |
bdragon52 | 0:98e654b8abce | 31 | int x=64,y=64; |
bdragon52 | 0:98e654b8abce | 32 | uLCD.background_color(BLACK); |
bdragon52 | 0:98e654b8abce | 33 | |
bdragon52 | 0:98e654b8abce | 34 | uLCD.filled_circle(64, 64, 45, BLUE); |
bdragon52 | 0:98e654b8abce | 35 | uLCD.filled_circle(64, 64, 43, BLACK); |
bdragon52 | 0:98e654b8abce | 36 | uLCD.filled_circle(64, 64, 12, BLUE); |
bdragon52 | 0:98e654b8abce | 37 | uLCD.filled_circle(64, 64, 10, BLACK); |
bdragon52 | 0:98e654b8abce | 38 | |
bdragon52 | 0:98e654b8abce | 39 | uLCD.filled_circle(x, y, 8, YELLOW); |
bdragon52 | 0:98e654b8abce | 40 | //bounce off edge walls and slow down a bit? |
bdragon52 | 0:98e654b8abce | 41 | while(1){ |
bdragon52 | 0:98e654b8abce | 42 | float oldx=x; |
bdragon52 | 0:98e654b8abce | 43 | float oldy=y; |
bdragon52 | 0:98e654b8abce | 44 | imu.readAccel(); |
bdragon52 | 0:98e654b8abce | 45 | float accX=imu.ax; |
bdragon52 | 0:98e654b8abce | 46 | float accY=imu.ay; |
bdragon52 | 0:98e654b8abce | 47 | |
bdragon52 | 0:98e654b8abce | 48 | //0 15800 |
bdragon52 | 0:98e654b8abce | 49 | //64 128 |
bdragon52 | 0:98e654b8abce | 50 | |
bdragon52 | 0:98e654b8abce | 51 | //247 |
bdragon52 | 0:98e654b8abce | 52 | if(accX>0){ |
bdragon52 | 0:98e654b8abce | 53 | x=oldx+2; |
bdragon52 | 0:98e654b8abce | 54 | } |
bdragon52 | 0:98e654b8abce | 55 | if(accX<0){ |
bdragon52 | 0:98e654b8abce | 56 | x=oldx-2; |
bdragon52 | 0:98e654b8abce | 57 | } |
bdragon52 | 0:98e654b8abce | 58 | |
bdragon52 | 0:98e654b8abce | 59 | if(accY>0){ |
bdragon52 | 0:98e654b8abce | 60 | y=oldy+2; |
bdragon52 | 0:98e654b8abce | 61 | } |
bdragon52 | 0:98e654b8abce | 62 | if(accY<0){ |
bdragon52 | 0:98e654b8abce | 63 | y=oldy-2; |
bdragon52 | 0:98e654b8abce | 64 | } |
bdragon52 | 0:98e654b8abce | 65 | |
bdragon52 | 0:98e654b8abce | 66 | |
bdragon52 | 0:98e654b8abce | 67 | |
bdragon52 | 0:98e654b8abce | 68 | |
bdragon52 | 0:98e654b8abce | 69 | if(x>(x/109)){ |
bdragon52 | 0:98e654b8abce | 70 | x=64+(accX/(200)); |
bdragon52 | 0:98e654b8abce | 71 | } |
bdragon52 | 0:98e654b8abce | 72 | |
bdragon52 | 0:98e654b8abce | 73 | if(x<(x/109)){ |
bdragon52 | 0:98e654b8abce | 74 | x=64-(accX/200); |
bdragon52 | 0:98e654b8abce | 75 | } |
bdragon52 | 0:98e654b8abce | 76 | |
bdragon52 | 0:98e654b8abce | 77 | if(y>(y/109)){ |
bdragon52 | 0:98e654b8abce | 78 | y=64+(accY/200); |
bdragon52 | 0:98e654b8abce | 79 | } |
bdragon52 | 0:98e654b8abce | 80 | |
bdragon52 | 0:98e654b8abce | 81 | if(y<(y/109)){ |
bdragon52 | 0:98e654b8abce | 82 | y=64-(accY/200); |
bdragon52 | 0:98e654b8abce | 83 | } |
bdragon52 | 0:98e654b8abce | 84 | |
bdragon52 | 0:98e654b8abce | 85 | |
bdragon52 | 0:98e654b8abce | 86 | |
bdragon52 | 0:98e654b8abce | 87 | |
bdragon52 | 0:98e654b8abce | 88 | |
bdragon52 | 0:98e654b8abce | 89 | |
bdragon52 | 0:98e654b8abce | 90 | |
bdragon52 | 0:98e654b8abce | 91 | |
bdragon52 | 0:98e654b8abce | 92 | |
bdragon52 | 0:98e654b8abce | 93 | |
bdragon52 | 0:98e654b8abce | 94 | |
bdragon52 | 0:98e654b8abce | 95 | |
bdragon52 | 0:98e654b8abce | 96 | |
bdragon52 | 0:98e654b8abce | 97 | |
bdragon52 | 0:98e654b8abce | 98 | //x=64+15800/(4*x); |
bdragon52 | 0:98e654b8abce | 99 | // x=64-15800/(4*x); |
bdragon52 | 0:98e654b8abce | 100 | if(x<32){ |
bdragon52 | 0:98e654b8abce | 101 | x=32; |
bdragon52 | 0:98e654b8abce | 102 | } |
bdragon52 | 0:98e654b8abce | 103 | |
bdragon52 | 0:98e654b8abce | 104 | if(x>96){ |
bdragon52 | 0:98e654b8abce | 105 | x=96; |
bdragon52 | 0:98e654b8abce | 106 | } |
bdragon52 | 0:98e654b8abce | 107 | |
bdragon52 | 0:98e654b8abce | 108 | if(y<32){ |
bdragon52 | 0:98e654b8abce | 109 | y=32; |
bdragon52 | 0:98e654b8abce | 110 | } |
bdragon52 | 0:98e654b8abce | 111 | |
bdragon52 | 0:98e654b8abce | 112 | if(y>96){ |
bdragon52 | 0:98e654b8abce | 113 | y=96; |
bdragon52 | 0:98e654b8abce | 114 | } |
bdragon52 | 0:98e654b8abce | 115 | |
bdragon52 | 0:98e654b8abce | 116 | |
bdragon52 | 0:98e654b8abce | 117 | |
bdragon52 | 0:98e654b8abce | 118 | |
bdragon52 | 0:98e654b8abce | 119 | int posx=x; |
bdragon52 | 0:98e654b8abce | 120 | int posy=y; |
bdragon52 | 0:98e654b8abce | 121 | uLCD.filled_circle(oldx, oldy, 8, BLACK); |
bdragon52 | 0:98e654b8abce | 122 | uLCD.filled_circle(64, 64, 12, BLUE); |
bdragon52 | 0:98e654b8abce | 123 | uLCD.filled_circle(64, 64, 10, BLACK); |
bdragon52 | 0:98e654b8abce | 124 | uLCD.filled_circle(posx, posy, 8, YELLOW); |
bdragon52 | 0:98e654b8abce | 125 | |
bdragon52 | 0:98e654b8abce | 126 | |
bdragon52 | 0:98e654b8abce | 127 | pc.printf("X: %f\n", accX); |
bdragon52 | 0:98e654b8abce | 128 | pc.printf("Y: %f\n", accY); |
bdragon52 | 0:98e654b8abce | 129 | |
bdragon52 | 0:98e654b8abce | 130 | wait(.05); |
bdragon52 | 0:98e654b8abce | 131 | |
bdragon52 | 0:98e654b8abce | 132 | |
bdragon52 | 0:98e654b8abce | 133 | |
bdragon52 | 0:98e654b8abce | 134 | |
bdragon52 | 0:98e654b8abce | 135 | } |
bdragon52 | 0:98e654b8abce | 136 | |
bdragon52 | 0:98e654b8abce | 137 | |
bdragon52 | 0:98e654b8abce | 138 | |
bdragon52 | 0:98e654b8abce | 139 | |
bdragon52 | 0:98e654b8abce | 140 | } |
bdragon52 | 0:98e654b8abce | 141 | //......more code demos can be found in main.cpp |
bdragon52 | 0:98e654b8abce | 142 | |
bdragon52 | 0:98e654b8abce | 143 |