~

Dependencies:   4DGL-uLCD-SE SDFileSystem

Committer:
fkhan39
Date:
Mon Sep 26 18:14:20 2016 +0000
Revision:
10:98f119e9582a
Parent:
9:63c3c734a620
Child:
11:eca6295235e6
added a sword. big stick;

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