~

Dependencies:   4DGL-uLCD-SE SDFileSystem

Committer:
fkhan39
Date:
Mon Sep 26 17:26:28 2016 +0000
Revision:
7:1a21d8290cf1
Parent:
6:708e878d4374
Child:
8:964e12b5b51e
added compass

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fkhan39 0:570683b2d0c9 1 #include "mbed.h"
fkhan39 6:708e878d4374 2 #include "uLCD_4DGL.h"
fkhan39 6:708e878d4374 3 #include "LSM9DS1.h"
fkhan39 7:1a21d8290cf1 4 #include "math.h"
fkhan39 7:1a21d8290cf1 5 //#include "SongPlayer.h"
fkhan39 7:1a21d8290cf1 6 #include <fstream>
fkhan39 7:1a21d8290cf1 7 #include <string>
fkhan39 7:1a21d8290cf1 8 #include "SDFileSystem.h"
fkhan39 0:570683b2d0c9 9
fkhan39 7:1a21d8290cf1 10
fkhan39 7:1a21d8290cf1 11 // serial
kswanson31 5:151b0fa1fb44 12 Serial pc(USBTX, USBRX);
fkhan39 7:1a21d8290cf1 13
fkhan39 7:1a21d8290cf1 14 // part 4
fkhan39 7:1a21d8290cf1 15
fkhan39 6:708e878d4374 16 uLCD_4DGL lcd(p13,p14,p12);
fkhan39 7:1a21d8290cf1 17
fkhan39 7:1a21d8290cf1 18 // part 9A
fkhan39 7:1a21d8290cf1 19 SDFileSystem sd(p5, p6, p7, p8, "sd");
fkhan39 7:1a21d8290cf1 20 /*
fkhan39 7:1a21d8290cf1 21 // part 9B
fkhan39 7:1a21d8290cf1 22 float note[16]= {329.628,329.628,329.628,349.228,391.995,391.995,391.995,349.228,
fkhan39 7:1a21d8290cf1 23 329.628,349.228,391.995,349.228,329.628,293.665,329.628,349.228
fkhan39 7:1a21d8290cf1 24 };
fkhan39 7:1a21d8290cf1 25 float duration[16]= {0.48,0.12,0.48,0.12,0.48,0.12,0.12,0.12,
fkhan39 7:1a21d8290cf1 26 0.12,0.12,0.12,0.12,0.48,0.12,1.68,0.12
fkhan39 7:1a21d8290cf1 27 };
fkhan39 7:1a21d8290cf1 28 */
fkhan39 7:1a21d8290cf1 29
fkhan39 7:1a21d8290cf1 30
fkhan39 6:708e878d4374 31 int main() {
fkhan39 7:1a21d8290cf1 32 //sd
fkhan39 7:1a21d8290cf1 33 mkdir("/sd/mydir", 0777);
fkhan39 7:1a21d8290cf1 34 FILE *fp = fopen("/sd/mydir/sdtest.txt", "w");
fkhan39 7:1a21d8290cf1 35 if(fp == NULL) {
fkhan39 7:1a21d8290cf1 36 error("Could not open file for write\n");
fkhan39 7:1a21d8290cf1 37 }
fkhan39 7:1a21d8290cf1 38 fprintf(fp, "Hello SD file World!");
fkhan39 7:1a21d8290cf1 39 fclose(fp);
fkhan39 7:1a21d8290cf1 40
fkhan39 7:1a21d8290cf1 41 std::ifstream file("/sd/mydir/sdtest.txt");
fkhan39 7:1a21d8290cf1 42 string str;
fkhan39 7:1a21d8290cf1 43
fkhan39 7:1a21d8290cf1 44 while (std::getline(file, str))
fkhan39 7:1a21d8290cf1 45 {
fkhan39 7:1a21d8290cf1 46 const char * c = str.c_str();
fkhan39 7:1a21d8290cf1 47 pc.printf(c);
fkhan39 7:1a21d8290cf1 48 }
fkhan39 7:1a21d8290cf1 49
fkhan39 6:708e878d4374 50 //imu9DS1 imu(p9, p10, 0x6B, 0x1E);
fkhan39 6:708e878d4374 51 LSM9DS1 imu(p9, p10, 0xD6, 0x3C);
fkhan39 6:708e878d4374 52 imu.begin();
fkhan39 6:708e878d4374 53 if (!imu.begin()) {
fkhan39 6:708e878d4374 54 lcd.printf("Failed to communicate with imu9DS1.\n");
fkhan39 6:708e878d4374 55 }
fkhan39 6:708e878d4374 56 imu.calibrate();
fkhan39 7:1a21d8290cf1 57
fkhan39 7:1a21d8290cf1 58
fkhan39 7:1a21d8290cf1 59 // part 9, speaker
fkhan39 7:1a21d8290cf1 60 /*
fkhan39 7:1a21d8290cf1 61 // setup instance of new SongPlayer class, mySpeaker using pin 26
fkhan39 7:1a21d8290cf1 62 // the pin must be a PWM output pin
fkhan39 7:1a21d8290cf1 63 SongPlayer mySpeaker(p26);
fkhan39 7:1a21d8290cf1 64 // Start song and return once playing starts
fkhan39 7:1a21d8290cf1 65 mySpeaker.PlaySong(note,duration);
fkhan39 7:1a21d8290cf1 66 double theta;
fkhan39 7:1a21d8290cf1 67 */
fkhan39 7:1a21d8290cf1 68 int ax, ay;
fkhan39 6:708e878d4374 69 while(1) {
fkhan39 7:1a21d8290cf1 70 // loops forever while song continues to play to end using interrupts
fkhan39 7:1a21d8290cf1 71 imu.calibrate();
fkhan39 6:708e878d4374 72 imu.readAccel();
fkhan39 6:708e878d4374 73 imu.readMag();
fkhan39 6:708e878d4374 74 imu.readGyro();
fkhan39 6:708e878d4374 75
fkhan39 6:708e878d4374 76 //lcd.printf("%d %d %d %d %d %d %d %d %d\n\r", imu.calcGyro(imu.gx), imu.calcGyro(imu.gy), imu.calcGyro(imu.gz), imu.ax, imu.ay, imu.az, imu.mx, imu.my, imu.mz);
fkhan39 6:708e878d4374 77 //lcd.printf("%d %d %d\n\r", imu.calcGyro(imu.gx), imu.calcGyro(imu.gy), imu.calcGyro(imu.gz));
fkhan39 6:708e878d4374 78 //lcd.printf("gyro: %d %d %d\n\r", imu.gx, imu.gy, imu.gz);
fkhan39 7:1a21d8290cf1 79 //lcd.printf("accel: %d %d %d\n\r", imu.ax, imu.ay, imu.az);
fkhan39 6:708e878d4374 80 //lcd.printf("mag: %d %d %d\n\n\r", imu.mx, imu.my, imu.mz);
fkhan39 7:1a21d8290cf1 81 if (push) {
fkhan39 7:1a21d8290cf1 82 lcd.filled_circle(64 + ax / 250, 64 + ay/ 250 , 8, BLACK);
fkhan39 7:1a21d8290cf1 83 ax = imu.ax, ay = imu.ay;
fkhan39 7:1a21d8290cf1 84 lcd.filled_circle(64 + ax / 250, 64 + ay/ 250 , 8, WHITE);
fkhan39 7:1a21d8290cf1 85 lcd.circle(64, 64, 10, WHITE);
fkhan39 7:1a21d8290cf1 86 } else {
fkhan39 7:1a21d8290cf1 87 // compass, part 4 extra credit
fkhan39 7:1a21d8290cf1 88
fkhan39 7:1a21d8290cf1 89 lcd.line(64,64,64+60*cos(theta), 64+60*sin(theta), BLACK);
fkhan39 7:1a21d8290cf1 90 theta = atan2((double)imu.mx, (double)imu.my);
fkhan39 7:1a21d8290cf1 91 lcd.line(64,64,64+60*cos(theta), 64+60*sin(theta), GREEN);
fkhan39 7:1a21d8290cf1 92 lcd.locate(0,1);
fkhan39 7:1a21d8290cf1 93 lcd.printf("%f",180 * theta / 3.14159);
fkhan39 7:1a21d8290cf1 94 }
fkhan39 7:1a21d8290cf1 95
fkhan39 6:708e878d4374 96 }
fkhan39 6:708e878d4374 97 }
kswanson31 5:151b0fa1fb44 98
fkhan39 6:708e878d4374 99 // serial com, print statements sent to lcd now
kswanson31 5:151b0fa1fb44 100 /* part 1
kswanson31 5:151b0fa1fb44 101 AnalogOut aout(p18);
kswanson31 5:151b0fa1fb44 102 AnalogIn ain(p15);
kswanson31 5:151b0fa1fb44 103 DigitalOut led1(LED1);
kswanson31 5:151b0fa1fb44 104 DigitalOut led2(LED2);
kswanson31 5:151b0fa1fb44 105 DigitalOut led3(LED3);
kswanson31 5:151b0fa1fb44 106 DigitalOut led4(LED4);
kswanson31 5:151b0fa1fb44 107 */
kswanson31 5:151b0fa1fb44 108
kswanson31 5:151b0fa1fb44 109 /* part 8
fkhan39 4:f5bc5d9a790b 110 BusOut myleds(LED1,LED2,LED3,LED4);
kswanson31 5:151b0fa1fb44 111
fkhan39 4:f5bc5d9a790b 112 class microphone
fkhan39 4:f5bc5d9a790b 113 {
fkhan39 4:f5bc5d9a790b 114 public :
fkhan39 4:f5bc5d9a790b 115 microphone(PinName pin);
fkhan39 4:f5bc5d9a790b 116 float read();
fkhan39 4:f5bc5d9a790b 117 operator float ();
fkhan39 4:f5bc5d9a790b 118 private :
fkhan39 4:f5bc5d9a790b 119 AnalogIn _pin;
fkhan39 4:f5bc5d9a790b 120 };
fkhan39 4:f5bc5d9a790b 121 microphone::microphone (PinName pin):
fkhan39 4:f5bc5d9a790b 122 _pin(pin)
fkhan39 4:f5bc5d9a790b 123 {
fkhan39 4:f5bc5d9a790b 124 }
fkhan39 4:f5bc5d9a790b 125 float microphone::read()
fkhan39 4:f5bc5d9a790b 126 {
fkhan39 4:f5bc5d9a790b 127 return _pin.read();
fkhan39 4:f5bc5d9a790b 128 }
fkhan39 4:f5bc5d9a790b 129 inline microphone::operator float ()
fkhan39 4:f5bc5d9a790b 130 {
fkhan39 4:f5bc5d9a790b 131 return _pin.read();
fkhan39 4:f5bc5d9a790b 132 }
fkhan39 4:f5bc5d9a790b 133
fkhan39 4:f5bc5d9a790b 134 microphone mymicrophone(p16);
kswanson31 5:151b0fa1fb44 135 */
fkhan39 0:570683b2d0c9 136
kswanson31 5:151b0fa1fb44 137 /* part 1
fkhan39 1:4ed94566512a 138 const double pi = 3.141592653589793238462;
fkhan39 1:4ed94566512a 139 const double amplitude = 1.0f;
fkhan39 1:4ed94566512a 140 const double offset = 65535/2; // 0xFFFF/2
fkhan39 1:4ed94566512a 141 double rads = 0.0;
fkhan39 1:4ed94566512a 142 uint16_t sample = 0;
kswanson31 5:151b0fa1fb44 143 */
kswanson31 3:99acbebbed6c 144
kswanson31 5:151b0fa1fb44 145 // while(1) {
kswanson31 5:151b0fa1fb44 146 //
kswanson31 5:151b0fa1fb44 147 // /* part 1
kswanson31 5:151b0fa1fb44 148 //
kswanson31 5:151b0fa1fb44 149 // // analog out
kswanson31 5:151b0fa1fb44 150 // for (int i = 0; i < 720; i++) {
kswanson31 5:151b0fa1fb44 151 // rads = (pi * i) / 180.0f;
kswanson31 5:151b0fa1fb44 152 // sample = (uint16_t)(amplitude * (offset * (cos(rads + pi))) + offset);
kswanson31 5:151b0fa1fb44 153 // aout.write_u16(sample);
kswanson31 5:151b0fa1fb44 154 // }
kswanson31 5:151b0fa1fb44 155 //
kswanson31 5:151b0fa1fb44 156 // // analog in
kswanson31 5:151b0fa1fb44 157 // led1 = (ain > 0.2f) ? 1 : 0;
kswanson31 5:151b0fa1fb44 158 // led2 = (ain > 0.4f) ? 1 : 0;
fkhan39 6:708e878d4374 159 // led3 = (ain > 0.6f) ? 1 : 0;
kswanson31 5:151b0fa1fb44 160 // led4 = (ain > 0.8f) ? 1 : 0;
kswanson31 5:151b0fa1fb44 161 // wait(.01);
kswanson31 5:151b0fa1fb44 162 // */
kswanson31 5:151b0fa1fb44 163 //
kswanson31 5:151b0fa1fb44 164 // /* part 8
kswanson31 5:151b0fa1fb44 165 // //read in, subtract 0.67 DC bias, take absolute value, and scale up .1Vpp to 15 for builtin LED display
kswanson31 5:151b0fa1fb44 166 // myleds = int(abs((mymicrophone - (0.67/3.3)))*500.0);
kswanson31 5:151b0fa1fb44 167 // //Use an 8kHz audio sample rate (phone quality audio);
kswanson31 5:151b0fa1fb44 168 // wait(1.0/8000.0);
kswanson31 5:151b0fa1fb44 169 // */
fkhan39 6:708e878d4374 170 // }