ECE 4180 Final

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

Committer:
ShelbyC22
Date:
Wed Dec 04 21:06:43 2019 +0000
Revision:
5:b2cf15651d4e
Parent:
4:59b73f321c0e
Child:
6:cd24147b5e50
code with updated homescreen with title, bubble selection, song titles, with cheer and led light up in the beginning and plays songs after a song has been selected in main menu;

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