Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem mbed-rtos mbed wave_player
main.cpp
00001 //#include "mbed.h" 00002 //#include "rtos.h" 00003 //#include "wave_player.h" 00004 //#include "SDFileSystem.h" 00005 //SDFileSystem sd(p5, p6, p7, p8, "sd"); 00006 //PwmOut red(p21); 00007 //PwmOut green(p22); 00008 //PwmOut blue(p23); 00009 //AnalogOut speaker(p18); 00010 //wave_player waver(&speaker); 00011 //Thread thread1; 00012 //Thread thread2; 00013 //void t1() { 00014 // red = 0; 00015 // green = 0; 00016 // blue = 0; 00017 // while (1) { 00018 // red = 1; 00019 // green = 0; 00020 // blue = 0; 00021 // Thread::wait(300); 00022 // red = 0; 00023 // green = 1; 00024 // blue = 0; 00025 // Thread::wait(300); 00026 // red = 0; 00027 // green = 0; 00028 // blue = 1; 00029 // Thread::wait(300); 00030 // 00031 // } 00032 //void t2() { 00033 // FILE *wave_file; 00034 // //open wav file and play it 00035 // wave_file=fopen("/sd/thread_sound.wav","r"); 00036 // waver.play(wave_file); 00037 // fclose(wave_file); 00038 // //end of program 00039 // Thread::wait(500); 00040 //} 00041 // 00042 //int main() { 00043 // thread1.start(t1); 00044 // thread2.start(t2); 00045 // while(1) { 00046 // 00047 // } 00048 //} 00049 00050 00051 #include "mbed.h" 00052 #include "rtos.h" 00053 #include "wave_player.h" 00054 #include "SDFileSystem.h" 00055 #include "uLCD_4DGL.h" 00056 SDFileSystem sd(p5, p6, p7, p8, "sd"); 00057 PwmOut red(p21); 00058 PwmOut green(p22); 00059 PwmOut blue(p23); 00060 PwmOut speaker(p26); 00061 Serial bluemod(p13,p14); 00062 //wave_player waver(&speaker); 00063 uLCD_4DGL uLCD(p28,p27,p11); 00064 //Thread thread1; 00065 Thread thread2; 00066 Thread thread3; 00067 Thread thread4; 00068 Mutex u_mutex; 00069 void t1() { 00070 red = 0; 00071 green = 0; 00072 blue = 0; 00073 while (1) { 00074 red = 1; 00075 green = 0; 00076 blue = 0; 00077 Thread::wait(300); 00078 red = 0; 00079 green = 1; 00080 blue = 0; 00081 Thread::wait(300); 00082 red = 0; 00083 green = 0; 00084 blue = 1; 00085 Thread::wait(300); 00086 } 00087 } 00088 void t2() { 00089 /* 00090 FILE *wave_file; 00091 //open wav file and play it 00092 wave_file=fopen("/sd/mario_sound.wav","r"); 00093 waver.play(wave_file); 00094 fclose(wave_file); 00095 //end of program 00096 Thread::wait(500); 00097 */ 00098 speaker.period(1.0/500.0); // 500hz period 00099 speaker =0.5; //50% duty cycle - max volume 00100 Thread::wait(3); 00101 speaker=0.0; // turn off audio 00102 Thread::wait(2); 00103 } 00104 void t3() { 00105 while (1) { 00106 u_mutex.lock(); 00107 uLCD.text_width(2); //4X size text 00108 uLCD.text_height(2); 00109 u_mutex.unlock(); 00110 u_mutex.lock(); 00111 uLCD.color(RED); 00112 u_mutex.unlock(); 00113 for (int i=10; i>=0; --i) { 00114 u_mutex.lock(); 00115 uLCD.locate(1,2); 00116 uLCD.printf("%2D",i); 00117 u_mutex.unlock(); 00118 Thread::wait(750); 00119 } 00120 //u_mutex.unlock(); 00121 Thread::wait(1000); 00122 } 00123 } 00124 void t4() { 00125 while (1) { 00126 u_mutex.lock(); 00127 uLCD.text_width(2); //4X size text 00128 uLCD.text_height(2); 00129 u_mutex.unlock(); 00130 u_mutex.lock(); 00131 uLCD.color(GREEN); 00132 u_mutex.unlock(); 00133 for (int i=10; i>=0; --i) { 00134 u_mutex.lock(); 00135 uLCD.locate(1,4); 00136 uLCD.printf("%2D",i); 00137 u_mutex.unlock(); 00138 Thread::wait(1000); 00139 } 00140 //u_mutex.unlock(); 00141 Thread::wait(1200); 00142 } 00143 } 00144 int main() { 00145 //thread1.start(t1); 00146 thread2.start(t2); 00147 thread3.start(t3); 00148 thread4.start(t4); 00149 char bred=0; 00150 char bgreen=0; 00151 char bblue=0; 00152 red = green = blue = 0; 00153 while(1) { 00154 if (bluemod.readable()) { 00155 u_mutex.lock(); 00156 00157 if (bluemod.getc()=='!') { 00158 if (bluemod.getc()=='C') { //color data packet 00159 bred = bluemod.getc(); // RGB color values 00160 bgreen = bluemod.getc(); 00161 bblue = bluemod.getc(); 00162 if (bluemod.getc()==char(~('!' + 'C' + bred + bgreen + bblue))) { //checksum OK? 00163 red = bred/255.0; //send new color to RGB LED PWM outputs 00164 green = bgreen/255.0; 00165 blue = bblue/255.0; 00166 } 00167 } 00168 } 00169 u_mutex.unlock(); 00170 } 00171 00172 00173 00174 00175 00176 00177 00178 /* 00179 red = 0; 00180 green = 0; 00181 blue = 0; 00182 while (1) { 00183 red = 1; 00184 green = 0; 00185 blue = 0; 00186 Thread::wait(300); 00187 //wait(.3); 00188 red = 0; 00189 green = 1; 00190 blue = 0; 00191 Thread::wait(300); 00192 //wait(.3); 00193 red = 0; 00194 green = 0; 00195 blue = 1; 00196 Thread::wait(300); 00197 //wait(.3); 00198 00199 } 00200 */ 00201 /* 00202 FILE *wave_file; 00203 //open wav file and play it 00204 wave_file=fopen("/sd/mario_sound.wav","r"); 00205 waver.play(wave_file); 00206 fclose(wave_file); 00207 //end of program 00208 Thread::wait(500); 00209 */ 00210 00211 /* 00212 u_mutex.lock(); 00213 uLCD.text_width(2); //4X size text 00214 uLCD.text_height(2); 00215 u_mutex.unlock(); 00216 u_mutex.lock(); 00217 uLCD.color(RED); 00218 u_mutex.unlock(); 00219 for (int i=10; i>=0; --i) { 00220 u_mutex.lock(); 00221 uLCD.locate(1,2); 00222 uLCD.printf("%2D",i); 00223 u_mutex.unlock(); 00224 Thread::wait(750); 00225 } 00226 Thread::wait(1000); 00227 */ 00228 00229 /* 00230 speaker.period(1.0/500.0); // 500hz period 00231 speaker =0.5; //50% duty cycle - max volume 00232 Thread::wait(10); 00233 speaker=0.0; // turn off audio 00234 Thread::wait(10); 00235 */ 00236 00237 } 00238 }
Generated on Fri Oct 14 2022 19:36:45 by
1.7.2