ECE 4180 Lab 2 Part 3

Dependencies:   4DGL-uLCD-SE LSM9DS1_Library_cal mbed

Fork of uLCD144G2_demo by jim hamblen

main.cpp

Committer:
abraha2d
Date:
2018-10-09
Revision:
10:bdf425b0e9fa
Parent:
8:31e63caf37e2

File content as of revision 10:bdf425b0e9fa:

#include "mbed.h"
#include "LSM9DS1.h"
#include "uLCD_4DGL.h"

#define PI 3.14159

// Earth's magnetic field varies by location. Add or subtract
// a declination to get a more accurate heading. Calculate
// your's here:
// http://www.ngdc.noaa.gov/geomag-web/#declination
#define DECLINATION -4.94 // Declination (degrees) in Atlanta,GA.

Serial pc(USBTX, USBRX);
uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;

int main()
{
    uLCD.cls();
    uLCD.printf("Baud rate: 3000000");
    uLCD.baudrate(3000000);

    uLCD.printf("Calibrating IMU...\n");
    LSM9DS1 IMU(p28, p27, 0xD6, 0x3C);
    bool success = IMU.begin();
    if (!success) {
        uLCD.printf("Failed to communicate with LSM9DS1.\n");
    }
    IMU.calibrate(1);

    wait(0.5);
    uLCD.cls();
    while(1) {
        while(!IMU.accelAvailable());
        IMU.readAccel();
        uLCD.circle(64, 64, 48, GREEN);
        uLCD.circle(64, 64, 24, GREEN);
        uLCD.filled_circle(64 + IMU.calcAccel(IMU.ax) * -40, 64 + IMU.calcAccel(IMU.ay) * -40, 16, GREEN);
        wait(0.05);
        uLCD.filled_circle(64 + IMU.calcAccel(IMU.ax) * -40, 64 + IMU.calcAccel(IMU.ay) * -40, 16, BLACK);
    }
}