Lab 2 Part 3

Dependencies:   mbed 4DGL-uLCD-SE LSM9DS1_Library_cal

Files at this revision

API Documentation at this revision

Comitter:
glanier9
Date:
Thu Feb 11 16:03:03 2021 +0000
Parent:
1:de9832e45f61
Commit message:
Final version

Changed in this revision

4DGL-uLCD-SE.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/4DGL-uLCD-SE.lib	Thu Feb 11 16:03:03 2021 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#2cb1845d7681
--- a/main.cpp	Mon Feb 01 21:21:21 2021 +0000
+++ b/main.cpp	Thu Feb 11 16:03:03 2021 +0000
@@ -1,5 +1,6 @@
 #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
@@ -8,7 +9,9 @@
 #define DECLINATION -4.94 // Declination (degrees) in Atlanta,GA.
 
 DigitalOut myled(LED1);
-Serial pc(p27,p28);
+Serial pc(USBTX, USBRX);
+uLCD_4DGL uLCD(p28,p27,p30); // serial tx, serial rx, reset pin;
+
 // Calculate pitch, roll, and heading.
 // Pitch/roll calculations taken from this app note:
 // http://cache.freescale.com/files/sensors/doc/app_note/AN3461.pdf?fpsp=1
@@ -48,13 +51,24 @@
 {
     //LSM9DS1 lol(p9, p10, 0x6B, 0x1E);
     LSM9DS1 IMU(p9, p10, 0xD6, 0x3C);
+    uLCD.baudrate(3000000);
     IMU.begin();
     if (!IMU.begin()) {
         pc.printf("Failed to communicate with LSM9DS1.\n");
     }
     IMU.calibrate(1);
     IMU.calibrateMag(0);
-    while(1) {
+    
+    uLCD.circle(64,64,62,WHITE);
+    
+    while(1)
+    {
+        while(!IMU.accelAvailable());
+        IMU.readAccel();
+        uLCD.filled_circle(64 + 64*IMU.calcAccel(IMU.ax),64 + 64*IMU.calcAccel(IMU.ay),3,RED);
+        wait(0.1);
+        uLCD.filled_circle(64 + 64*IMU.calcAccel(IMU.ax),64 + 64*IMU.calcAccel(IMU.ay),3,BLACK);
+        
         while(!IMU.tempAvailable());
         IMU.readTemp();
         while(!IMU.magAvailable(X_AXIS));
@@ -74,6 +88,29 @@
         wait(0.5);
         myled = 0;
         wait(0.5);
+        
     }
+    
+//    while(1) {
+//        while(!IMU.tempAvailable());
+//        IMU.readTemp();
+//        while(!IMU.magAvailable(X_AXIS));
+//        IMU.readMag();
+//        while(!IMU.accelAvailable());
+//        IMU.readAccel();
+//        while(!IMU.gyroAvailable());
+//        IMU.readGyro();
+//        pc.printf("\nIMU Temperature = %f C\n\r",25.0 + IMU.temperature/16.0);
+//        pc.printf("        X axis    Y axis    Z axis\n\r");
+//        pc.printf("gyro:  %9f %9f %9f in deg/s\n\r", IMU.calcGyro(IMU.gx), IMU.calcGyro(IMU.gy), IMU.calcGyro(IMU.gz));
+//        pc.printf("accel: %9f %9f %9f in Gs\n\r", IMU.calcAccel(IMU.ax), IMU.calcAccel(IMU.ay), IMU.calcAccel(IMU.az));
+//        pc.printf("mag:   %9f %9f %9f in gauss\n\r", IMU.calcMag(IMU.mx), IMU.calcMag(IMU.my), IMU.calcMag(IMU.mz));
+//        printAttitude(IMU.calcAccel(IMU.ax), IMU.calcAccel(IMU.ay), IMU.calcAccel(IMU.az), IMU.calcMag(IMU.mx),
+//                      IMU.calcMag(IMU.my), IMU.calcMag(IMU.mz));
+//        myled = 1;
+//        wait(0.5);
+//        myled = 0;
+//        wait(0.5);
+//    }
 }