Graphic Equalizer with uLCD

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

Committer:
amussa
Date:
Thu Mar 16 17:59:07 2017 +0000
Revision:
0:ed16e4b21d4c
Version 1

Who changed what in which revision?

UserRevisionLine numberNew 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 }