ECE 4180 Lab 2 Part 3
Dependencies: 4DGL-uLCD-SE LSM9DS1_Library_cal mbed
Fork of uLCD144G2_demo by
main.cpp@10:bdf425b0e9fa, 2018-10-09 (annotated)
- Committer:
- abraha2d
- Date:
- Tue Oct 09 00:47:15 2018 +0000
- Revision:
- 10:bdf425b0e9fa
- Parent:
- 8:31e63caf37e2
Save point
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
4180_1 | 0:cfcf73272647 | 1 | #include "mbed.h" |
abraha2d | 10:bdf425b0e9fa | 2 | #include "LSM9DS1.h" |
4180_1 | 2:75727e89a717 | 3 | #include "uLCD_4DGL.h" |
4180_1 | 0:cfcf73272647 | 4 | |
abraha2d | 10:bdf425b0e9fa | 5 | #define PI 3.14159 |
abraha2d | 10:bdf425b0e9fa | 6 | |
abraha2d | 10:bdf425b0e9fa | 7 | // Earth's magnetic field varies by location. Add or subtract |
abraha2d | 10:bdf425b0e9fa | 8 | // a declination to get a more accurate heading. Calculate |
abraha2d | 10:bdf425b0e9fa | 9 | // your's here: |
abraha2d | 10:bdf425b0e9fa | 10 | // http://www.ngdc.noaa.gov/geomag-web/#declination |
abraha2d | 10:bdf425b0e9fa | 11 | #define DECLINATION -4.94 // Declination (degrees) in Atlanta,GA. |
abraha2d | 10:bdf425b0e9fa | 12 | |
abraha2d | 10:bdf425b0e9fa | 13 | Serial pc(USBTX, USBRX); |
4180_1 | 2:75727e89a717 | 14 | uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin; |
4180_1 | 0:cfcf73272647 | 15 | |
4180_1 | 2:75727e89a717 | 16 | int main() |
4180_1 | 2:75727e89a717 | 17 | { |
4180_1 | 3:454d1f4c8fd7 | 18 | uLCD.cls(); |
abraha2d | 10:bdf425b0e9fa | 19 | uLCD.printf("Baud rate: 3000000"); |
abraha2d | 10:bdf425b0e9fa | 20 | uLCD.baudrate(3000000); |
abraha2d | 10:bdf425b0e9fa | 21 | |
abraha2d | 10:bdf425b0e9fa | 22 | uLCD.printf("Calibrating IMU...\n"); |
abraha2d | 10:bdf425b0e9fa | 23 | LSM9DS1 IMU(p28, p27, 0xD6, 0x3C); |
abraha2d | 10:bdf425b0e9fa | 24 | bool success = IMU.begin(); |
abraha2d | 10:bdf425b0e9fa | 25 | if (!success) { |
abraha2d | 10:bdf425b0e9fa | 26 | uLCD.printf("Failed to communicate with LSM9DS1.\n"); |
4180_1 | 7:7bd7397ab89f | 27 | } |
abraha2d | 10:bdf425b0e9fa | 28 | IMU.calibrate(1); |
4180_1 | 7:7bd7397ab89f | 29 | |
4180_1 | 7:7bd7397ab89f | 30 | wait(0.5); |
4180_1 | 3:454d1f4c8fd7 | 31 | uLCD.cls(); |
4180_1 | 7:7bd7397ab89f | 32 | while(1) { |
abraha2d | 10:bdf425b0e9fa | 33 | while(!IMU.accelAvailable()); |
abraha2d | 10:bdf425b0e9fa | 34 | IMU.readAccel(); |
abraha2d | 10:bdf425b0e9fa | 35 | uLCD.circle(64, 64, 48, GREEN); |
abraha2d | 10:bdf425b0e9fa | 36 | uLCD.circle(64, 64, 24, GREEN); |
abraha2d | 10:bdf425b0e9fa | 37 | uLCD.filled_circle(64 + IMU.calcAccel(IMU.ax) * -40, 64 + IMU.calcAccel(IMU.ay) * -40, 16, GREEN); |
abraha2d | 10:bdf425b0e9fa | 38 | wait(0.05); |
abraha2d | 10:bdf425b0e9fa | 39 | uLCD.filled_circle(64 + IMU.calcAccel(IMU.ax) * -40, 64 + IMU.calcAccel(IMU.ay) * -40, 16, BLACK); |
4180_1 | 5:a1ef40ff0f78 | 40 | } |
4180_1 | 6:f752accd632c | 41 | } |