Lab2Part3

Dependencies:   4DGL-uLCD-SE LSM9DS1_Library_cal mbed

Committer:
bdragon52
Date:
Wed Sep 13 21:14:04 2017 +0000
Revision:
0:98e654b8abce
lab2part3

Who changed what in which revision?

UserRevisionLine numberNew 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