Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player
main.cpp@0:da1bd63907ee, 2016-10-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |