ECE 4180 Final

Dependencies:   mbed wave_player mbed-rtos C12832_lcd 4DGL-uLCD-SE LCD_fonts SDFileSystem

Committer:
ShelbyC22
Date:
Wed Dec 04 19:44:53 2019 +0000
Revision:
4:59b73f321c0e
Parent:
3:431877852f14
Child:
5:b2cf15651d4e
Updated with song playing switch statement and changed menu with song names

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yqin70 0:4f77ae831ee7 1 #include "mbed.h"
yqin70 0:4f77ae831ee7 2 #include "SDFileSystem.h"
yqin70 0:4f77ae831ee7 3 #include "wave_player.h"
yqin70 0:4f77ae831ee7 4 #include "uLCD_4DGL.h"
yqin70 0:4f77ae831ee7 5 //setup some color objects in flash using const's
yqin70 0:4f77ae831ee7 6
yqin70 0:4f77ae831ee7 7 #include "rtos.h"
yqin70 0:4f77ae831ee7 8 #include "Small_6.h"
yqin70 0:4f77ae831ee7 9 #include "Small_7.h"
yqin70 0:4f77ae831ee7 10 #include "Arial_9.h"
yqin70 0:4f77ae831ee7 11 #include "stdio.h"
yqin70 0:4f77ae831ee7 12 #include "C12832_lcd.h"
yqin70 0:4f77ae831ee7 13
yqin70 0:4f77ae831ee7 14 //class for 3 PWM color values for RGBLED
yqin70 0:4f77ae831ee7 15 class LEDColor
yqin70 0:4f77ae831ee7 16 {
yqin70 0:4f77ae831ee7 17 public:
yqin70 0:4f77ae831ee7 18 LEDColor(float r, float g, float b);
yqin70 0:4f77ae831ee7 19 float red;
yqin70 0:4f77ae831ee7 20 float green;
yqin70 0:4f77ae831ee7 21 float blue;
yqin70 0:4f77ae831ee7 22 };
yqin70 0:4f77ae831ee7 23 LEDColor:: LEDColor(float r, float g, float b)
yqin70 0:4f77ae831ee7 24 : red(r), green(g), blue(b)
yqin70 0:4f77ae831ee7 25 {
yqin70 0:4f77ae831ee7 26 }
yqin70 0:4f77ae831ee7 27 //Operator overload to adjust brightness with no color change
yqin70 0:4f77ae831ee7 28 LEDColor operator * (const LEDColor& x, const float& b)
yqin70 0:4f77ae831ee7 29 {
yqin70 0:4f77ae831ee7 30 return LEDColor(x.red*b,x.green*b,x.blue*b);
yqin70 0:4f77ae831ee7 31 }
yqin70 0:4f77ae831ee7 32 //Operator overload to add colors
yqin70 0:4f77ae831ee7 33 LEDColor operator + (const LEDColor& x, const LEDColor& y)
yqin70 0:4f77ae831ee7 34 {
yqin70 0:4f77ae831ee7 35 return LEDColor(x.red+y.red,x.green+y.green,x.blue+y.blue);
yqin70 0:4f77ae831ee7 36 }
yqin70 0:4f77ae831ee7 37
yqin70 0:4f77ae831ee7 38 //Class to control an RGB LED using three PWM pins
yqin70 0:4f77ae831ee7 39 class RGBLed
yqin70 0:4f77ae831ee7 40 {
yqin70 0:4f77ae831ee7 41 public:
yqin70 0:4f77ae831ee7 42 RGBLed(PinName redpin, PinName greenpin, PinName bluepin);
yqin70 0:4f77ae831ee7 43 void write(float red,float green, float blue);
yqin70 0:4f77ae831ee7 44 void write(LEDColor c);
yqin70 0:4f77ae831ee7 45 RGBLed operator = (LEDColor c) {
yqin70 0:4f77ae831ee7 46 write(c);
yqin70 0:4f77ae831ee7 47 return *this;
yqin70 0:4f77ae831ee7 48 };
yqin70 0:4f77ae831ee7 49 private:
yqin70 0:4f77ae831ee7 50 PwmOut _redpin;
yqin70 0:4f77ae831ee7 51 PwmOut _greenpin;
yqin70 0:4f77ae831ee7 52 PwmOut _bluepin;
yqin70 0:4f77ae831ee7 53 };
yqin70 0:4f77ae831ee7 54
yqin70 0:4f77ae831ee7 55 RGBLed::RGBLed (PinName redpin, PinName greenpin, PinName bluepin)
yqin70 0:4f77ae831ee7 56 : _redpin(redpin), _greenpin(greenpin), _bluepin(bluepin)
yqin70 0:4f77ae831ee7 57 {
yqin70 0:4f77ae831ee7 58 //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker)
yqin70 0:4f77ae831ee7 59 _redpin.period(0.0005);
yqin70 0:4f77ae831ee7 60 }
yqin70 0:4f77ae831ee7 61
yqin70 0:4f77ae831ee7 62 void RGBLed::write(float red,float green, float blue)
yqin70 0:4f77ae831ee7 63 {
yqin70 0:4f77ae831ee7 64 _redpin = red;
yqin70 0:4f77ae831ee7 65 _greenpin = green;
yqin70 0:4f77ae831ee7 66 _bluepin = blue;
yqin70 0:4f77ae831ee7 67 }
yqin70 0:4f77ae831ee7 68 void RGBLed::write(LEDColor c)
yqin70 0:4f77ae831ee7 69 {
yqin70 0:4f77ae831ee7 70 _redpin = c.red;
yqin70 0:4f77ae831ee7 71 _greenpin = c.green;
yqin70 0:4f77ae831ee7 72 _bluepin = c.blue;
yqin70 0:4f77ae831ee7 73 }
yqin70 0:4f77ae831ee7 74
yqin70 0:4f77ae831ee7 75 //classes could be moved to include file
yqin70 0:4f77ae831ee7 76
yqin70 0:4f77ae831ee7 77 //Setup RGB led using PWM pins and class
ShelbyC22 4:59b73f321c0e 78 RGBLed myRGBled(p24,p23,p22); //RGB PWM pins
yqin70 0:4f77ae831ee7 79 const LEDColor red(1.0,0.0,0.0);
yqin70 0:4f77ae831ee7 80 const LEDColor green(0.0,0.2,0.0);
yqin70 0:4f77ae831ee7 81 //brighter green LED is scaled down to same as red and
yqin70 0:4f77ae831ee7 82 //blue LED outputs on Sparkfun RGBLED
yqin70 0:4f77ae831ee7 83 const LEDColor blue(0.0,0.0,1.0);
yqin70 0:4f77ae831ee7 84 const LEDColor yellow(1.0,0.2,0.0);
yqin70 0:4f77ae831ee7 85 const LEDColor white(1.0,0.2,1.0);
yqin70 0:4f77ae831ee7 86 const LEDColor black(0.0,0.0,0.0);
yqin70 0:4f77ae831ee7 87 char bred=0;
yqin70 0:4f77ae831ee7 88 char bgreen=0;
yqin70 0:4f77ae831ee7 89 char bblue=0;
yqin70 0:4f77ae831ee7 90
yqin70 0:4f77ae831ee7 91 volatile bool songselect = false;
yqin70 0:4f77ae831ee7 92 volatile bool homescreen = true;
yqin70 0:4f77ae831ee7 93 uLCD_4DGL uLCD(p28,p27,p30);
yqin70 0:4f77ae831ee7 94 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
yqin70 0:4f77ae831ee7 95 DigitalOut myled(LED1);
yqin70 0:4f77ae831ee7 96 DigitalIn pb1(p20);
yqin70 0:4f77ae831ee7 97 DigitalIn pb2(p19);
yqin70 1:a1aa9a79070a 98 AnalogOut DACout(p18);
yqin70 1:a1aa9a79070a 99 wave_player waver(&DACout);
yqin70 0:4f77ae831ee7 100
yqin70 0:4f77ae831ee7 101 // mutex to make the lcd lib thread safe
yqin70 0:4f77ae831ee7 102 Mutex lcd_mutex;
yqin70 0:4f77ae831ee7 103 int songnum = 1;
yqin70 0:4f77ae831ee7 104 AnalogIn joy_pot(p16);
yqin70 0:4f77ae831ee7 105 // Thread 1
yqin70 1:a1aa9a79070a 106 // print homescreen to LCD
yqin70 0:4f77ae831ee7 107 void thread1(void const *args)
yqin70 0:4f77ae831ee7 108 {
yqin70 0:4f77ae831ee7 109
yqin70 0:4f77ae831ee7 110 while(true) { // thread loop
yqin70 0:4f77ae831ee7 111
yqin70 0:4f77ae831ee7 112 if (homescreen){
yqin70 0:4f77ae831ee7 113 lcd_mutex.lock();
yqin70 0:4f77ae831ee7 114 uLCD.cls();
yqin70 2:765774781bb1 115 uLCD.text_height(1.9);
yqin70 2:765774781bb1 116 uLCD.text_width(1.9);
yqin70 0:4f77ae831ee7 117 uLCD.color(WHITE);
yqin70 0:4f77ae831ee7 118 uLCD.locate(0,0);
yqin70 0:4f77ae831ee7 119 uLCD.printf("Pick a song");
yqin70 2:765774781bb1 120 uLCD.text_height(1.9);
yqin70 2:765774781bb1 121 uLCD.text_width(1.9);
ShelbyC22 4:59b73f321c0e 122 //shifted over from 1 to 3 in x to make room for bubble
ShelbyC22 4:59b73f321c0e 123 uLCD.locate(3,2);
ShelbyC22 4:59b73f321c0e 124 uLCD.printf("Fireflies");
ShelbyC22 4:59b73f321c0e 125 uLCD.locate(3,4);
ShelbyC22 4:59b73f321c0e 126 uLCD.printf("The Middle");
ShelbyC22 4:59b73f321c0e 127 uLCD.locate(3,6);
ShelbyC22 4:59b73f321c0e 128 uLCD.printf("Stacy's Mom");
ShelbyC22 4:59b73f321c0e 129 uLCD.locate(3,8);
ShelbyC22 4:59b73f321c0e 130 uLCD.printf("I Write Sins Not Tragedies");
yqin70 2:765774781bb1 131 uLCD.rectangle(5, songnum*16-2, 100, songnum*16+8 ,GREEN);
yqin70 0:4f77ae831ee7 132 lcd_mutex.unlock();
yqin70 1:a1aa9a79070a 133
yqin70 0:4f77ae831ee7 134 }
yqin70 0:4f77ae831ee7 135 Thread::wait(200);
yqin70 0:4f77ae831ee7 136 }
yqin70 0:4f77ae831ee7 137 }
yqin70 0:4f77ae831ee7 138
yqin70 1:a1aa9a79070a 139 //for song selection during homescreen
yqin70 0:4f77ae831ee7 140 void thread2(void const *args)
yqin70 0:4f77ae831ee7 141 {
yqin70 0:4f77ae831ee7 142
yqin70 0:4f77ae831ee7 143 while(1){
yqin70 1:a1aa9a79070a 144 if (homescreen){
yqin70 0:4f77ae831ee7 145 if ((joy_pot <= (1.4/3.3)) && songnum>1) {
yqin70 0:4f77ae831ee7 146 songnum--;
yqin70 0:4f77ae831ee7 147 }
yqin70 2:765774781bb1 148 else if ((joy_pot >= (1.8/3.3)) && songnum<4){
yqin70 0:4f77ae831ee7 149 songnum++;
yqin70 0:4f77ae831ee7 150 }
yqin70 1:a1aa9a79070a 151 }
yqin70 0:4f77ae831ee7 152 Thread::wait(250);
yqin70 0:4f77ae831ee7 153
yqin70 0:4f77ae831ee7 154 }
yqin70 0:4f77ae831ee7 155 }
yqin70 0:4f77ae831ee7 156
yqin70 0:4f77ae831ee7 157 // Thread 3
yqin70 1:a1aa9a79070a 158 //pb1 is to select song
yqin70 1:a1aa9a79070a 159 //pb2 is to return to homescreen
yqin70 0:4f77ae831ee7 160 void thread3(void const *args)
yqin70 0:4f77ae831ee7 161 {
yqin70 0:4f77ae831ee7 162 pb1.mode(PullUp);
yqin70 0:4f77ae831ee7 163 pb2.mode(PullUp);
yqin70 0:4f77ae831ee7 164 while(true) { // thread loop
yqin70 0:4f77ae831ee7 165 if (!pb2)
yqin70 0:4f77ae831ee7 166 {
yqin70 0:4f77ae831ee7 167 homescreen = true;
yqin70 0:4f77ae831ee7 168 songselect = false;
yqin70 0:4f77ae831ee7 169 }
yqin70 0:4f77ae831ee7 170 if (!pb1)
yqin70 0:4f77ae831ee7 171 {
yqin70 0:4f77ae831ee7 172 songselect = true;
yqin70 0:4f77ae831ee7 173 }
yqin70 0:4f77ae831ee7 174 Thread::wait(100); // value of pot1 / 100
yqin70 0:4f77ae831ee7 175 }
yqin70 0:4f77ae831ee7 176 }
yqin70 0:4f77ae831ee7 177
yqin70 0:4f77ae831ee7 178 int main()
yqin70 0:4f77ae831ee7 179 {
yqin70 3:431877852f14 180 //timestamp in terms of seconds
yqin70 3:431877852f14 181 int the_middle[62][5] = {2, 0, 1, 0, 0,
yqin70 3:431877852f14 182 3, 0, 1, 0, 0,
yqin70 3:431877852f14 183 4, 0, 1, 0, 0,
yqin70 3:431877852f14 184 5, 0, 1, 0, 0,
yqin70 3:431877852f14 185 6, 0, 0, 1, 0,
yqin70 3:431877852f14 186 7, 0, 0, 1, 0,
yqin70 3:431877852f14 187 8, 0, 0, 1, 0,
yqin70 3:431877852f14 188 9, 0, 0, 1, 0,
yqin70 3:431877852f14 189 10, 0, 0, 1, 0,
yqin70 3:431877852f14 190 11, 0, 0, 0, 1,
yqin70 3:431877852f14 191 12, 0, 0, 0, 1,
yqin70 3:431877852f14 192 13, 0, 0, 0, 1,
yqin70 3:431877852f14 193 15, 0, 0, 1, 1,
yqin70 3:431877852f14 194 16, 0, 0, 1, 1,
yqin70 3:431877852f14 195 17, 0, 0, 1, 1,
yqin70 3:431877852f14 196 18, 0, 1, 1, 0,
yqin70 3:431877852f14 197 19, 0, 1, 1, 0,
yqin70 3:431877852f14 198 20, 0, 1, 1, 0,
yqin70 3:431877852f14 199 21, 0, 1, 1, 0,
yqin70 3:431877852f14 200 22, 0, 1, 1, 0,
yqin70 3:431877852f14 201 23, 0, 1, 1, 0,
yqin70 3:431877852f14 202 24, 0, 1, 1, 0,
yqin70 3:431877852f14 203 25, 0, 1, 1, 0,
yqin70 3:431877852f14 204 27, 0, 1, 0, 0,
yqin70 3:431877852f14 205 28, 0, 1, 0, 0,
yqin70 3:431877852f14 206 29, 0, 1, 0, 0,
yqin70 3:431877852f14 207 30, 0, 1, 0, 0,
yqin70 3:431877852f14 208 31, 0, 0, 1, 0,
yqin70 3:431877852f14 209 32, 0, 0, 1, 0,
yqin70 3:431877852f14 210 33, 0, 0, 1, 0,
yqin70 3:431877852f14 211 34, 0, 0, 1, 0,
yqin70 3:431877852f14 212 35, 0, 0, 1, 0,
yqin70 3:431877852f14 213 36, 0, 0, 1, 0,
yqin70 3:431877852f14 214 37, 0, 0, 0, 1,
yqin70 3:431877852f14 215 38, 0, 0, 0, 1,
yqin70 3:431877852f14 216 39, 0, 0, 0, 1,
yqin70 3:431877852f14 217 40, 0, 0, 0, 1,
yqin70 3:431877852f14 218 42, 0, 1, 1, 0,
yqin70 3:431877852f14 219 43, 0, 0, 1, 1,
yqin70 3:431877852f14 220 44, 0, 1, 1, 0,
yqin70 3:431877852f14 221 45, 0, 0, 1, 1,
yqin70 3:431877852f14 222 46, 0, 1, 1, 0,
yqin70 3:431877852f14 223 47, 0, 0, 1, 1,
yqin70 3:431877852f14 224 48, 0, 1, 1, 0,
yqin70 3:431877852f14 225 49, 0, 0, 1, 1,
yqin70 3:431877852f14 226 51, 0, 1, 1, 1,
yqin70 3:431877852f14 227 52, 0, 1, 1, 1,
yqin70 3:431877852f14 228 53, 0, 1, 1, 1,
yqin70 3:431877852f14 229 54, 0, 1, 1, 1,
yqin70 3:431877852f14 230 56, 0, 1, 0, 0,
yqin70 3:431877852f14 231 57, 0, 1, 0, 0,
yqin70 3:431877852f14 232 58, 0, 1, 0, 0,
yqin70 3:431877852f14 233 59, 0, 1, 0, 0,
yqin70 3:431877852f14 234 61, 0, 0, 1, 0,
yqin70 3:431877852f14 235 62, 0, 1, 1, 1,
yqin70 3:431877852f14 236 63, 0, 1, 1, 1,
yqin70 3:431877852f14 237 64, 0, 1, 1, 1,
yqin70 3:431877852f14 238 66, 0, 1, 1, 0,
yqin70 3:431877852f14 239 67, 0, 0, 1, 1,
yqin70 3:431877852f14 240 68, 0, 1, 1, 0,
yqin70 3:431877852f14 241 69, 0, 0, 1, 1,
yqin70 3:431877852f14 242 70, 0, 1, 1, 0};
yqin70 3:431877852f14 243
yqin70 3:431877852f14 244 int stacys_mom[70][5] = {1, 0, 1, 0, 0,
yqin70 3:431877852f14 245 2, 0, 1, 0, 0,
yqin70 3:431877852f14 246 3, 0, 1, 1, 0,
yqin70 3:431877852f14 247 4, 0, 1, 0, 0,
yqin70 3:431877852f14 248 5, 0, 1, 0, 0,
yqin70 3:431877852f14 249 6, 0, 1, 1, 0,
yqin70 3:431877852f14 250 8, 0, 0, 1, 0,
yqin70 3:431877852f14 251 9, 0, 0, 0, 1,
yqin70 3:431877852f14 252 10, 0, 1, 0, 0,
yqin70 3:431877852f14 253 11, 0, 0, 1, 0,
yqin70 3:431877852f14 254 12, 0, 1, 1, 0,
yqin70 3:431877852f14 255 13, 0, 1, 1, 0,
yqin70 3:431877852f14 256 15, 0, 0, 1, 1,
yqin70 3:431877852f14 257 16, 0, 0, 1, 1,
yqin70 3:431877852f14 258 17, 0, 0, 1, 1,
yqin70 3:431877852f14 259 18, 0, 0, 1, 1,
yqin70 3:431877852f14 260 20, 0, 1, 0, 0,
yqin70 3:431877852f14 261 21, 0, 0, 1, 0,
yqin70 3:431877852f14 262 22, 0, 0, 0, 1,
yqin70 3:431877852f14 263 24, 0, 0, 1, 1,
yqin70 3:431877852f14 264 25, 0, 0, 1, 1,
yqin70 3:431877852f14 265 26, 0, 0, 1, 0,
yqin70 3:431877852f14 266 27, 0, 0, 1, 0,
yqin70 3:431877852f14 267 28, 0, 0, 0, 1,
yqin70 3:431877852f14 268 29, 0, 1, 0, 0,
yqin70 3:431877852f14 269 31, 0, 1, 1, 1,
yqin70 3:431877852f14 270 32, 0, 1, 0, 1,
yqin70 3:431877852f14 271 33, 0, 1, 0, 1,
yqin70 3:431877852f14 272 34, 0, 1, 0, 1,
yqin70 3:431877852f14 273 35, 0, 1, 0, 1,
yqin70 3:431877852f14 274 36, 0, 1, 0, 1,
yqin70 3:431877852f14 275 37, 0, 1, 0, 1,
yqin70 3:431877852f14 276 39, 0, 0, 1, 0,
yqin70 3:431877852f14 277 40, 0, 0, 1, 0,
yqin70 3:431877852f14 278 41, 0, 0, 1, 0,
yqin70 3:431877852f14 279 42, 0, 0, 1, 0,
yqin70 3:431877852f14 280 43, 0, 0, 0, 1,
yqin70 3:431877852f14 281 44, 0, 0, 0, 1,
yqin70 3:431877852f14 282 45, 0, 0, 1, 0,
yqin70 3:431877852f14 283 46, 0, 0, 1, 0,
yqin70 3:431877852f14 284 47, 0, 0, 1, 1,
yqin70 3:431877852f14 285 48, 0, 0, 1, 1,
yqin70 3:431877852f14 286 49, 0, 0, 1, 1,
yqin70 3:431877852f14 287 51, 0, 1, 0, 0,
yqin70 3:431877852f14 288 52, 0, 0, 1, 0,
yqin70 3:431877852f14 289 53, 0, 0, 0, 1,
yqin70 3:431877852f14 290 54, 0, 0, 1, 1,
yqin70 3:431877852f14 291 55, 0, 0, 1, 1,
yqin70 3:431877852f14 292 56, 0, 0, 1, 0,
yqin70 3:431877852f14 293 57, 0, 0, 1, 0,
yqin70 3:431877852f14 294 58, 0, 0, 1, 0,
yqin70 3:431877852f14 295 59, 0, 0, 1, 0,
yqin70 3:431877852f14 296 60, 0, 0, 1, 0,
yqin70 3:431877852f14 297 61, 0, 0, 1, 0,
yqin70 3:431877852f14 298 62, 0, 0, 1, 0,
yqin70 3:431877852f14 299 64, 0, 1, 0, 0,
yqin70 3:431877852f14 300 65, 0, 1, 0, 0,
yqin70 3:431877852f14 301 66, 0, 1, 0, 0,
yqin70 3:431877852f14 302 67, 0, 1, 0, 0,
yqin70 3:431877852f14 303 68, 0, 1, 0, 0,
yqin70 3:431877852f14 304 69, 0, 1, 0, 0,
yqin70 3:431877852f14 305 70, 0, 1, 0, 0,
yqin70 3:431877852f14 306 73, 0, 0, 1, 1,
yqin70 3:431877852f14 307 74, 0, 0, 1, 1,
yqin70 3:431877852f14 308 75, 0, 1, 0, 0,
yqin70 3:431877852f14 309 76, 0, 0, 1, 0,
yqin70 3:431877852f14 310 77, 0, 0, 0, 1,
yqin70 3:431877852f14 311 78, 0, 1, 0, 0,
yqin70 3:431877852f14 312 79, 0, 0, 1, 0,
yqin70 3:431877852f14 313 80, 0, 0, 0, 1};
yqin70 3:431877852f14 314
yqin70 3:431877852f14 315 int sins[60][5] = {2, 0, 1, 0, 0,
yqin70 3:431877852f14 316 3, 0, 0, 1, 0,
yqin70 3:431877852f14 317 4, 0, 1, 0, 0,
yqin70 3:431877852f14 318 5, 0, 0, 1, 0,
yqin70 3:431877852f14 319 6, 0, 0, 0, 1,
yqin70 3:431877852f14 320 7, 0, 1, 0, 0,
yqin70 3:431877852f14 321 8, 0, 0, 0, 1,
yqin70 3:431877852f14 322 9, 0, 1, 0, 0,
yqin70 3:431877852f14 323 10, 0, 0, 0, 1,
yqin70 3:431877852f14 324 11, 0, 1, 1, 1,
yqin70 3:431877852f14 325 13, 0, 1, 0, 0,
yqin70 3:431877852f14 326 14, 0, 0, 1, 0,
yqin70 3:431877852f14 327 15, 0, 1, 0, 0,
yqin70 3:431877852f14 328 16, 0, 0, 1, 0,
yqin70 3:431877852f14 329 17, 0, 0, 1, 0,
yqin70 3:431877852f14 330 18, 0, 0, 1, 0,
yqin70 3:431877852f14 331 19, 0, 0, 1, 0,
yqin70 3:431877852f14 332 20, 0, 0, 1, 0,
yqin70 3:431877852f14 333 22, 0, 0, 0, 1,
yqin70 3:431877852f14 334 23, 0, 0, 1, 1,
yqin70 3:431877852f14 335 24, 0, 0, 0, 1,
yqin70 3:431877852f14 336 25, 0, 0, 1, 1,
yqin70 3:431877852f14 337 26, 0, 0, 0, 1,
yqin70 3:431877852f14 338 27, 0, 0, 1, 1,
yqin70 3:431877852f14 339 28, 0, 1, 0, 0,
yqin70 3:431877852f14 340 29, 0, 1, 1, 0,
yqin70 3:431877852f14 341 30, 0, 1, 0, 0,
yqin70 3:431877852f14 342 31, 0, 1, 1, 0,
yqin70 3:431877852f14 343 33, 0, 1, 0, 0,
yqin70 3:431877852f14 344 34, 0, 1, 0, 0,
yqin70 3:431877852f14 345 35, 0, 1, 0, 0,
yqin70 3:431877852f14 346 36, 0, 0, 1, 1,
yqin70 3:431877852f14 347 37, 0, 0, 1, 1,
yqin70 3:431877852f14 348 38, 0, 0, 1, 1,
yqin70 3:431877852f14 349 39, 0, 0, 1, 1,
yqin70 3:431877852f14 350 40, 0, 0, 1, 1,
yqin70 3:431877852f14 351 42, 0, 1, 1, 0,
yqin70 3:431877852f14 352 43, 0, 1, 1, 0,
yqin70 3:431877852f14 353 44, 0, 0, 1, 0,
yqin70 3:431877852f14 354 45, 0, 0, 1, 1,
yqin70 3:431877852f14 355 46, 0, 0, 1, 1,
yqin70 3:431877852f14 356 47, 0, 0, 1, 1,
yqin70 3:431877852f14 357 48, 0, 0, 1, 1,
yqin70 3:431877852f14 358 49, 0, 0, 1, 1,
yqin70 3:431877852f14 359 50, 0, 0, 1, 0,
yqin70 3:431877852f14 360 51, 0, 1, 1, 0,
yqin70 3:431877852f14 361 52, 0, 1, 1, 0,
yqin70 3:431877852f14 362 53, 0, 1, 1, 0,
yqin70 3:431877852f14 363 54, 0, 1, 1, 0,
yqin70 3:431877852f14 364 55, 0, 1, 1, 0,
yqin70 3:431877852f14 365 56, 0, 1, 0, 0,
yqin70 3:431877852f14 366 57, 0, 0, 1, 0,
yqin70 3:431877852f14 367 58, 0, 1, 0, 0,
yqin70 3:431877852f14 368 59, 0, 0, 1, 0,
yqin70 3:431877852f14 369 60, 0, 1, 0, 0,
yqin70 3:431877852f14 370 62, 0, 1, 1, 0,
yqin70 3:431877852f14 371 63, 0, 1, 1, 0,
yqin70 3:431877852f14 372 64, 0, 1, 1, 0,
yqin70 3:431877852f14 373 65, 0, 1, 1, 0,
yqin70 3:431877852f14 374 66, 0, 1, 1, 0};
yqin70 3:431877852f14 375
yqin70 3:431877852f14 376 int fireflies[58][5] = {
yqin70 3:431877852f14 377 1, 0, 1, 0, 0,
yqin70 3:431877852f14 378 2, 0, 0, 1, 0,
yqin70 3:431877852f14 379 3, 0, 1, 0, 0,
yqin70 3:431877852f14 380 4, 0, 0, 1, 0,
yqin70 3:431877852f14 381 5, 0, 1, 0, 0,
yqin70 3:431877852f14 382 6, 0, 0, 1, 0,
yqin70 3:431877852f14 383 7, 0, 1, 0, 0,
yqin70 3:431877852f14 384 8, 0, 0, 1, 0,
yqin70 3:431877852f14 385 9, 0, 1, 0, 0,
yqin70 3:431877852f14 386 10, 0, 0, 1, 0,
yqin70 3:431877852f14 387 11, 0, 0, 0, 1,
yqin70 3:431877852f14 388 12, 0, 0, 1, 0,
yqin70 3:431877852f14 389 13, 0, 1, 0, 0,
yqin70 3:431877852f14 390 14, 0, 0, 1, 0,
yqin70 3:431877852f14 391 15, 0, 0, 0, 1,
yqin70 3:431877852f14 392 16, 0, 1, 1, 0,
yqin70 3:431877852f14 393 17, 0, 1, 1, 0,
yqin70 3:431877852f14 394 18, 0, 0, 1, 1,
yqin70 3:431877852f14 395 19, 0, 0, 1, 1,
yqin70 3:431877852f14 396 21, 0, 0, 1, 0,
yqin70 3:431877852f14 397 22, 0, 0, 1, 0,
yqin70 3:431877852f14 398 23, 0, 0, 1, 0,
yqin70 3:431877852f14 399 24, 0, 0, 1, 0,
yqin70 3:431877852f14 400 25, 0, 1, 0, 0,
yqin70 3:431877852f14 401 26, 0, 1, 0, 0,
yqin70 3:431877852f14 402 27, 0, 0, 1, 0,
yqin70 3:431877852f14 403 28, 0, 0, 1, 0,
yqin70 3:431877852f14 404 29, 0, 0, 0, 1,
yqin70 3:431877852f14 405 30, 0, 0, 0, 1,
yqin70 3:431877852f14 406 32, 0, 1, 0, 0,
yqin70 3:431877852f14 407 33, 0, 1, 0, 0,
yqin70 3:431877852f14 408 34, 0, 0, 1, 0,
yqin70 3:431877852f14 409 35, 0, 0, 1, 0,
yqin70 3:431877852f14 410 36, 0, 0, 0, 1,
yqin70 3:431877852f14 411 37, 0, 0, 0, 1,
yqin70 3:431877852f14 412 38, 0, 0, 1, 0,
yqin70 3:431877852f14 413 39, 0, 0, 1, 0,
yqin70 3:431877852f14 414 40, 0, 1, 0, 0,
yqin70 3:431877852f14 415 41, 0, 1, 0, 0,
yqin70 3:431877852f14 416 43, 0, 1, 1, 1,
yqin70 3:431877852f14 417 44, 0, 1, 1, 1,
yqin70 3:431877852f14 418 45, 0, 1, 1, 1,
yqin70 3:431877852f14 419 46, 0, 1, 1, 1,
yqin70 3:431877852f14 420 47, 0, 1, 1, 0,
yqin70 3:431877852f14 421 48, 0, 1, 1, 0,
yqin70 3:431877852f14 422 49, 0, 0, 1, 1,
yqin70 3:431877852f14 423 50, 0, 0, 1, 1,
yqin70 3:431877852f14 424 51, 0, 0, 1, 1,
yqin70 3:431877852f14 425 53, 0, 1, 1, 0,
yqin70 3:431877852f14 426 54, 0, 1, 1, 0,
yqin70 3:431877852f14 427 55, 0, 0, 1, 1,
yqin70 3:431877852f14 428 56, 0, 1, 1, 0,
yqin70 3:431877852f14 429 57, 0, 0, 1, 1,
yqin70 3:431877852f14 430 59, 0, 1, 0, 0,
yqin70 3:431877852f14 431 60, 0, 0, 1, 0,
yqin70 3:431877852f14 432 61, 0, 0, 0, 1,
yqin70 3:431877852f14 433 62, 0, 0, 1, 0,
yqin70 3:431877852f14 434 63, 0, 1, 0, 0};
yqin70 3:431877852f14 435 //doesnt work yet, nee,d to ask hamblen
yqin70 0:4f77ae831ee7 436 uLCD.media_init();
yqin70 0:4f77ae831ee7 437 uLCD.set_sector_address(0x001D, 0x4C01);
yqin70 0:4f77ae831ee7 438 uLCD.display_image(0,0);
yqin70 0:4f77ae831ee7 439 // t1.start(thread1);
yqin70 0:4f77ae831ee7 440 // t2.start(thread2);
yqin70 0:4f77ae831ee7 441 // t3.start(thread3);
yqin70 0:4f77ae831ee7 442 Thread t1(thread1);
yqin70 0:4f77ae831ee7 443 Thread t2(thread2);
yqin70 0:4f77ae831ee7 444 Thread t3(thread3);
yqin70 1:a1aa9a79070a 445 //startup sound. Commented out for testing without SD card
yqin70 1:a1aa9a79070a 446 //FILE *wave_file;
yqin70 1:a1aa9a79070a 447 //wave_file=fopen("/sd/cheer.wav","r");
yqin70 1:a1aa9a79070a 448 //waver.play(wave_file);
yqin70 1:a1aa9a79070a 449 //fclose(wave_file);
yqin70 0:4f77ae831ee7 450 while(1)
yqin70 0:4f77ae831ee7 451 {
yqin70 0:4f77ae831ee7 452
yqin70 1:a1aa9a79070a 453 if (songselect){
yqin70 1:a1aa9a79070a 454 myled = 0;
yqin70 1:a1aa9a79070a 455 homescreen = false;
yqin70 1:a1aa9a79070a 456 lcd_mutex.lock();
yqin70 1:a1aa9a79070a 457 uLCD.cls();
yqin70 1:a1aa9a79070a 458 uLCD.printf("You selected song %2d",songnum);
yqin70 1:a1aa9a79070a 459 lcd_mutex.unlock();
yqin70 1:a1aa9a79070a 460 //add case statement based on songnum or something
yqin70 1:a1aa9a79070a 461 //code for playing song from sd
ShelbyC22 4:59b73f321c0e 462 switch (songnum)
ShelbyC22 4:59b73f321c0e 463 {
ShelbyC22 4:59b73f321c0e 464 case 1:
ShelbyC22 4:59b73f321c0e 465 {
ShelbyC22 4:59b73f321c0e 466 FILE *wave_file;
ShelbyC22 4:59b73f321c0e 467 wave_file =fopen("/sd/4180 final project/Fireflies.wav", "r");
ShelbyC22 4:59b73f321c0e 468 waver.play(wave_file);
ShelbyC22 4:59b73f321c0e 469 fclose(wave_file);
ShelbyC22 4:59b73f321c0e 470 break;
ShelbyC22 4:59b73f321c0e 471 }
ShelbyC22 4:59b73f321c0e 472 case 2:
ShelbyC22 4:59b73f321c0e 473 {
ShelbyC22 4:59b73f321c0e 474 FILE *wave_file;
ShelbyC22 4:59b73f321c0e 475 wave_file =fopen("/sd/4180 final project/The_Middle.wav", "r");
ShelbyC22 4:59b73f321c0e 476 waver.play(wave_file);
ShelbyC22 4:59b73f321c0e 477 fclose(wave_file);
ShelbyC22 4:59b73f321c0e 478 break;
ShelbyC22 4:59b73f321c0e 479 }
ShelbyC22 4:59b73f321c0e 480 case 3:
ShelbyC22 4:59b73f321c0e 481 {
ShelbyC22 4:59b73f321c0e 482 FILE *wave_file;
ShelbyC22 4:59b73f321c0e 483 wave_file =fopen("/sd/4180 final project/Stacy's_Mom.wav", "r");
ShelbyC22 4:59b73f321c0e 484 waver.play(wave_file);
ShelbyC22 4:59b73f321c0e 485 fclose(wave_file);
ShelbyC22 4:59b73f321c0e 486 break;
ShelbyC22 4:59b73f321c0e 487 }
ShelbyC22 4:59b73f321c0e 488 case 4:
ShelbyC22 4:59b73f321c0e 489 {
ShelbyC22 4:59b73f321c0e 490 FILE *wave_file;
ShelbyC22 4:59b73f321c0e 491 wave_file =fopen("/sd/4180 final project/Sins_!_Tragedies.wav", "r");
ShelbyC22 4:59b73f321c0e 492 waver.play(wave_file);
ShelbyC22 4:59b73f321c0e 493 fclose(wave_file);
ShelbyC22 4:59b73f321c0e 494 break;
ShelbyC22 4:59b73f321c0e 495 }
ShelbyC22 4:59b73f321c0e 496 default:
ShelbyC22 4:59b73f321c0e 497 break;
ShelbyC22 4:59b73f321c0e 498 }
ShelbyC22 4:59b73f321c0e 499
yqin70 1:a1aa9a79070a 500 }
yqin70 0:4f77ae831ee7 501 Thread::wait(100);
yqin70 0:4f77ae831ee7 502 }
yqin70 0:4f77ae831ee7 503 }
yqin70 0:4f77ae831ee7 504
yqin70 0:4f77ae831ee7 505