Graphic Equalizer with uLCD
Dependencies: 4DGL-uLCD-SE MSGEQ7 SDFileSystem mbed-rtos mbed wave_player
main.cpp@0:ed16e4b21d4c, 2017-03-16 (annotated)
- Committer:
- amussa
- Date:
- Thu Mar 16 17:59:07 2017 +0000
- Revision:
- 0:ed16e4b21d4c
Version 1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
amussa | 0:ed16e4b21d4c | 1 | #include "mbed.h" |
amussa | 0:ed16e4b21d4c | 2 | #include "rtos.h" |
amussa | 0:ed16e4b21d4c | 3 | #include "SDFileSystem.h" |
amussa | 0:ed16e4b21d4c | 4 | #include "uLCD_4DGL.h" |
amussa | 0:ed16e4b21d4c | 5 | #include "wave_player.h" |
amussa | 0:ed16e4b21d4c | 6 | #include "MSGEQ7.h" |
amussa | 0:ed16e4b21d4c | 7 | |
amussa | 0:ed16e4b21d4c | 8 | #define MAX 700 |
amussa | 0:ed16e4b21d4c | 9 | |
amussa | 0:ed16e4b21d4c | 10 | MSGEQ7 eq(p13, p14, p15); |
amussa | 0:ed16e4b21d4c | 11 | SDFileSystem sd(p5, p6, p7, p8, "sd"); |
amussa | 0:ed16e4b21d4c | 12 | uLCD_4DGL uLCD(p9,p10,p17); |
amussa | 0:ed16e4b21d4c | 13 | Mutex lcd_mutex; |
amussa | 0:ed16e4b21d4c | 14 | AnalogOut DACout(p18); |
amussa | 0:ed16e4b21d4c | 15 | wave_player waver(&DACout); |
amussa | 0:ed16e4b21d4c | 16 | Serial pc(USBTX, USBRX); |
amussa | 0:ed16e4b21d4c | 17 | Mutex serialm; |
amussa | 0:ed16e4b21d4c | 18 | PwmOut red(p21); |
amussa | 0:ed16e4b21d4c | 19 | PwmOut green(p22); |
amussa | 0:ed16e4b21d4c | 20 | PwmOut blue(p23); |
amussa | 0:ed16e4b21d4c | 21 | |
amussa | 0:ed16e4b21d4c | 22 | |
amussa | 0:ed16e4b21d4c | 23 | Thread music; |
amussa | 0:ed16e4b21d4c | 24 | Thread image; |
amussa | 0:ed16e4b21d4c | 25 | Thread info; |
amussa | 0:ed16e4b21d4c | 26 | Thread Lighting; |
amussa | 0:ed16e4b21d4c | 27 | |
amussa | 0:ed16e4b21d4c | 28 | void music_thread(){ |
amussa | 0:ed16e4b21d4c | 29 | FILE *wave_file; |
amussa | 0:ed16e4b21d4c | 30 | wave_file=fopen("/sd/mydir/fys.wav","r"); |
amussa | 0:ed16e4b21d4c | 31 | waver.play(wave_file); |
amussa | 0:ed16e4b21d4c | 32 | fclose(wave_file); |
amussa | 0:ed16e4b21d4c | 33 | Thread::wait(1000); |
amussa | 0:ed16e4b21d4c | 34 | } |
amussa | 0:ed16e4b21d4c | 35 | |
amussa | 0:ed16e4b21d4c | 36 | void image_thread(){ |
amussa | 0:ed16e4b21d4c | 37 | while(1){ |
amussa | 0:ed16e4b21d4c | 38 | lcd_mutex.lock(); |
amussa | 0:ed16e4b21d4c | 39 | uLCD.media_init(); |
amussa | 0:ed16e4b21d4c | 40 | uLCD.set_sector_address(0x0000, 0x001E); |
amussa | 0:ed16e4b21d4c | 41 | uLCD.display_image(0,0); |
amussa | 0:ed16e4b21d4c | 42 | lcd_mutex.unlock(); |
amussa | 0:ed16e4b21d4c | 43 | } |
amussa | 0:ed16e4b21d4c | 44 | } |
amussa | 0:ed16e4b21d4c | 45 | |
amussa | 0:ed16e4b21d4c | 46 | void info_thread(){ |
amussa | 0:ed16e4b21d4c | 47 | while(1) { |
amussa | 0:ed16e4b21d4c | 48 | eq.readInt(MAX); |
amussa | 0:ed16e4b21d4c | 49 | lcd_mutex.lock(); |
amussa | 0:ed16e4b21d4c | 50 | for(int i = 0; i < 7; i++){ |
amussa | 0:ed16e4b21d4c | 51 | if (eq.freqDataInt[i] > 10){ |
amussa | 0:ed16e4b21d4c | 52 | uLCD.filled_circle(22+i*14, 106, 6, GREEN); |
amussa | 0:ed16e4b21d4c | 53 | } |
amussa | 0:ed16e4b21d4c | 54 | if (eq.freqDataInt[i] > 100){ |
amussa | 0:ed16e4b21d4c | 55 | uLCD.filled_circle(22+i*14, 92, 6, GREEN); |
amussa | 0:ed16e4b21d4c | 56 | } |
amussa | 0:ed16e4b21d4c | 57 | if (eq.freqDataInt[i] > 200){ |
amussa | 0:ed16e4b21d4c | 58 | uLCD.filled_circle(22+i*14, 78, 6, GREEN); |
amussa | 0:ed16e4b21d4c | 59 | } |
amussa | 0:ed16e4b21d4c | 60 | if (eq.freqDataInt[i] > 300){ |
amussa | 0:ed16e4b21d4c | 61 | uLCD.filled_circle(22+i*14, 64, 6, GREEN); |
amussa | 0:ed16e4b21d4c | 62 | } |
amussa | 0:ed16e4b21d4c | 63 | if (eq.freqDataInt[i] > 400){ |
amussa | 0:ed16e4b21d4c | 64 | uLCD.filled_circle(22+i*14, 50, 6, GREEN); |
amussa | 0:ed16e4b21d4c | 65 | } |
amussa | 0:ed16e4b21d4c | 66 | if (eq.freqDataInt[i] > 500){ |
amussa | 0:ed16e4b21d4c | 67 | uLCD.filled_circle(22+i*14, 36, 6, GREEN); |
amussa | 0:ed16e4b21d4c | 68 | } |
amussa | 0:ed16e4b21d4c | 69 | if (eq.freqDataInt[i] > 600){ |
amussa | 0:ed16e4b21d4c | 70 | uLCD.filled_circle(22+i*14, 22, 6, GREEN); |
amussa | 0:ed16e4b21d4c | 71 | } |
amussa | 0:ed16e4b21d4c | 72 | } |
amussa | 0:ed16e4b21d4c | 73 | lcd_mutex.unlock(); |
amussa | 0:ed16e4b21d4c | 74 | } |
amussa | 0:ed16e4b21d4c | 75 | } |
amussa | 0:ed16e4b21d4c | 76 | |
amussa | 0:ed16e4b21d4c | 77 | void lighting_thread(){ |
amussa | 0:ed16e4b21d4c | 78 | while(1){ |
amussa | 0:ed16e4b21d4c | 79 | red = 0.5; |
amussa | 0:ed16e4b21d4c | 80 | green = 0; |
amussa | 0:ed16e4b21d4c | 81 | blue = 0; |
amussa | 0:ed16e4b21d4c | 82 | Thread::wait(638.297872); |
amussa | 0:ed16e4b21d4c | 83 | red = 0; |
amussa | 0:ed16e4b21d4c | 84 | green = 0.5; |
amussa | 0:ed16e4b21d4c | 85 | blue = 0; |
amussa | 0:ed16e4b21d4c | 86 | Thread::wait(638.297872); |
amussa | 0:ed16e4b21d4c | 87 | red = 0; |
amussa | 0:ed16e4b21d4c | 88 | green = 0; |
amussa | 0:ed16e4b21d4c | 89 | blue = 0.5; |
amussa | 0:ed16e4b21d4c | 90 | Thread::wait(638.297872); |
amussa | 0:ed16e4b21d4c | 91 | red = 0.5; |
amussa | 0:ed16e4b21d4c | 92 | green = 0.5; |
amussa | 0:ed16e4b21d4c | 93 | blue = 0; |
amussa | 0:ed16e4b21d4c | 94 | Thread::wait(638.297872); |
amussa | 0:ed16e4b21d4c | 95 | red = 0.5; |
amussa | 0:ed16e4b21d4c | 96 | blue = 0; |
amussa | 0:ed16e4b21d4c | 97 | green = 0.5; |
amussa | 0:ed16e4b21d4c | 98 | Thread::wait(638.297872); |
amussa | 0:ed16e4b21d4c | 99 | red = 0; |
amussa | 0:ed16e4b21d4c | 100 | blue = 0.5; |
amussa | 0:ed16e4b21d4c | 101 | green = 0.5; |
amussa | 0:ed16e4b21d4c | 102 | Thread::wait(638.297872); |
amussa | 0:ed16e4b21d4c | 103 | } |
amussa | 0:ed16e4b21d4c | 104 | } |
amussa | 0:ed16e4b21d4c | 105 | |
amussa | 0:ed16e4b21d4c | 106 | |
amussa | 0:ed16e4b21d4c | 107 | |
amussa | 0:ed16e4b21d4c | 108 | int main() { |
amussa | 0:ed16e4b21d4c | 109 | music.start(music_thread); |
amussa | 0:ed16e4b21d4c | 110 | image.start(image_thread); |
amussa | 0:ed16e4b21d4c | 111 | info.start(info_thread); |
amussa | 0:ed16e4b21d4c | 112 | Lighting.start(lighting_thread); |
amussa | 0:ed16e4b21d4c | 113 | } |