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

Committer:
nhardy6
Date:
Thu Oct 13 01:30:40 2016 +0000
Revision:
0:da1bd63907ee
Child:
1:5445ff4fd6a7
finished product

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nhardy6 0:da1bd63907ee 1 #include "mbed.h"
nhardy6 0:da1bd63907ee 2 #include "rtos.h"
nhardy6 0:da1bd63907ee 3 #include "uLCD_4DGL.h"
nhardy6 0:da1bd63907ee 4 #include "wave_player.h"
nhardy6 0:da1bd63907ee 5 #include "SDFileSystem.h"
nhardy6 0:da1bd63907ee 6
nhardy6 0:da1bd63907ee 7 DigitalOut led1(LED1);
nhardy6 0:da1bd63907ee 8 DigitalOut led2(LED2);
nhardy6 0:da1bd63907ee 9 DigitalOut led3(LED3);
nhardy6 0:da1bd63907ee 10 DigitalOut led4(LED4);
nhardy6 0:da1bd63907ee 11
nhardy6 0:da1bd63907ee 12 Ticker flipper;
nhardy6 0:da1bd63907ee 13 Ticker flipper2;
nhardy6 0:da1bd63907ee 14 Ticker flipper3;
nhardy6 0:da1bd63907ee 15 Ticker flipper4;
nhardy6 0:da1bd63907ee 16 /*
nhardy6 0:da1bd63907ee 17 //part 1
nhardy6 0:da1bd63907ee 18 void flip1() {
nhardy6 0:da1bd63907ee 19 led1 = !led1;
nhardy6 0:da1bd63907ee 20 }
nhardy6 0:da1bd63907ee 21 void flip2() {
nhardy6 0:da1bd63907ee 22 led2 = !led2;
nhardy6 0:da1bd63907ee 23 }
nhardy6 0:da1bd63907ee 24 void flip3() {
nhardy6 0:da1bd63907ee 25 led3 = !led3;
nhardy6 0:da1bd63907ee 26 }
nhardy6 0:da1bd63907ee 27 void flip4() {
nhardy6 0:da1bd63907ee 28 led4 = !led4;
nhardy6 0:da1bd63907ee 29 }
nhardy6 0:da1bd63907ee 30 int main() {
nhardy6 0:da1bd63907ee 31 //%%%%%%%%%%%%%%
nhardy6 0:da1bd63907ee 32 flipper.attach(&flip1, .5);
nhardy6 0:da1bd63907ee 33 flipper2.attach(&flip2, 1);
nhardy6 0:da1bd63907ee 34 flipper3.attach(&flip3, 2);
nhardy6 0:da1bd63907ee 35 flipper4.attach(&flip4, 4);
nhardy6 0:da1bd63907ee 36 //%%%%%%%%%%%%%%
nhardy6 0:da1bd63907ee 37 }
nhardy6 0:da1bd63907ee 38 */
nhardy6 0:da1bd63907ee 39
nhardy6 0:da1bd63907ee 40 //part 2
nhardy6 0:da1bd63907ee 41 //shiftbrite setup
nhardy6 0:da1bd63907ee 42
nhardy6 0:da1bd63907ee 43 DigitalOut latch(p15);
nhardy6 0:da1bd63907ee 44 DigitalOut enable(p16);
nhardy6 0:da1bd63907ee 45 SPI spi(p11, p12, p13);
nhardy6 0:da1bd63907ee 46 //SD card and amp set up
nhardy6 0:da1bd63907ee 47 SDFileSystem sd(p5, p6, p7, p8, "sd");//SD card
nhardy6 0:da1bd63907ee 48 AnalogOut DACout(p18);
nhardy6 0:da1bd63907ee 49 wave_player waver(&DACout);
nhardy6 0:da1bd63907ee 50 Mutex uLCD_mutex;
nhardy6 0:da1bd63907ee 51 DigitalOut ampShutdown(p20);
nhardy6 0:da1bd63907ee 52 uLCD_4DGL uLCD(p28, p27, p29);
nhardy6 0:da1bd63907ee 53
nhardy6 0:da1bd63907ee 54 void notify(const char* name, int state) {
nhardy6 0:da1bd63907ee 55 //wait until the mutex is available for us to lock
nhardy6 0:da1bd63907ee 56 led2 = 1;
nhardy6 0:da1bd63907ee 57 //while(!uLCD_mutex.trylock());
nhardy6 0:da1bd63907ee 58 //>>>Critical Section
nhardy6 0:da1bd63907ee 59 uLCD_mutex.lock();
nhardy6 0:da1bd63907ee 60 //print the name of the thread you are on
nhardy6 0:da1bd63907ee 61 uLCD.printf("%s: %d\n\r", name, state);
nhardy6 0:da1bd63907ee 62 uLCD_mutex.unlock();
nhardy6 0:da1bd63907ee 63 }
nhardy6 0:da1bd63907ee 64
nhardy6 0:da1bd63907ee 65 void test_thread(void const *args) {
nhardy6 0:da1bd63907ee 66 //led3 = 1;
nhardy6 0:da1bd63907ee 67 while (true) {
nhardy6 0:da1bd63907ee 68 notify((const char*)args, 0); Thread::wait(2000);
nhardy6 0:da1bd63907ee 69 notify((const char*)args, 1); Thread::wait(2000);
nhardy6 0:da1bd63907ee 70 }
nhardy6 0:da1bd63907ee 71 }
nhardy6 0:da1bd63907ee 72 unsigned int red, blue, green = 0;
nhardy6 0:da1bd63907ee 73 unsigned int low_color=0;
nhardy6 0:da1bd63907ee 74 unsigned int high_color=0;
nhardy6 0:da1bd63907ee 75
nhardy6 0:da1bd63907ee 76 void shiftBrite(void const *args) {
nhardy6 0:da1bd63907ee 77 while (true) {
nhardy6 0:da1bd63907ee 78 led4 = 1;
nhardy6 0:da1bd63907ee 79 red = (red + 1)%255;
nhardy6 0:da1bd63907ee 80 blue = (blue + 3) %255;
nhardy6 0:da1bd63907ee 81 green = (green + 5)%255;
nhardy6 0:da1bd63907ee 82 high_color=(blue<<4)|((red&0x3C0)>>6);
nhardy6 0:da1bd63907ee 83 low_color=(((red&0x3F)<<10)|(green));
nhardy6 0:da1bd63907ee 84 led4 = 0;
nhardy6 0:da1bd63907ee 85 spi.write(high_color);
nhardy6 0:da1bd63907ee 86 spi.write(low_color);
nhardy6 0:da1bd63907ee 87 latch=1;
nhardy6 0:da1bd63907ee 88 latch=0;
nhardy6 0:da1bd63907ee 89 Thread::wait(400);
nhardy6 0:da1bd63907ee 90 }
nhardy6 0:da1bd63907ee 91 }
nhardy6 0:da1bd63907ee 92
nhardy6 0:da1bd63907ee 93 //main is already a thread
nhardy6 0:da1bd63907ee 94 int main () {
nhardy6 0:da1bd63907ee 95 //shift brite initialization
nhardy6 0:da1bd63907ee 96 spi.format(16,0);
nhardy6 0:da1bd63907ee 97 spi.frequency(500000);
nhardy6 0:da1bd63907ee 98 enable=0;
nhardy6 0:da1bd63907ee 99 latch=0;
nhardy6 0:da1bd63907ee 100 wait(2);
nhardy6 0:da1bd63907ee 101 //ampShutdown = 1;
nhardy6 0:da1bd63907ee 102 uLCD.cls();
nhardy6 0:da1bd63907ee 103
nhardy6 0:da1bd63907ee 104 //thread initialization
nhardy6 0:da1bd63907ee 105 Thread thread2(shiftBrite, (void *) "Th 2");
nhardy6 0:da1bd63907ee 106 Thread thread3(test_thread, (void *)"Th 3");
nhardy6 0:da1bd63907ee 107 Thread thread4(test_thread, (void *)"Th 4");
nhardy6 0:da1bd63907ee 108 led1 = 1;
nhardy6 0:da1bd63907ee 109
nhardy6 0:da1bd63907ee 110 FILE *wave_file;
nhardy6 0:da1bd63907ee 111 led2 = 1;
nhardy6 0:da1bd63907ee 112 wave_file=fopen("/sd/sample.wav","r");
nhardy6 0:da1bd63907ee 113 led3 = 1;
nhardy6 0:da1bd63907ee 114 waver.play(wave_file);
nhardy6 0:da1bd63907ee 115 led4 = 1;
nhardy6 0:da1bd63907ee 116 fclose(wave_file);
nhardy6 0:da1bd63907ee 117 }