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: mbed wave_player mbed-rtos C12832_lcd 4DGL-uLCD-SE LCD_fonts SDFileSystem
Revision 0:4f77ae831ee7, committed 2019-12-03
- Comitter:
- yqin70
- Date:
- Tue Dec 03 21:24:00 2019 +0000
- Child:
- 1:a1aa9a79070a
- Commit message:
- kk
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/4DGL-uLCD-SE.lib Tue Dec 03 21:24:00 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#2cb1845d7681
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832_lcd.lib Tue Dec 03 21:24:00 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/dreschpe/code/C12832_lcd/#c9afe58d786a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LCD_fonts.lib Tue Dec 03 21:24:00 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/dreschpe/code/LCD_fonts/#d0b7d7bf1f56
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Tue Dec 03 21:24:00 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/neilt6/code/SDFileSystem/#e4d2567200db
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Dec 03 21:24:00 2019 +0000
@@ -0,0 +1,207 @@
+// example to test the mbed Lab Board lcd lib with the mbed rtos
+// Pot1 changes the contrast
+// Pot2 changes the speed of the sin wave
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "wave_player.h"
+#include "uLCD_4DGL.h"
+//setup some color objects in flash using const's
+
+#include "rtos.h"
+#include "Small_6.h"
+#include "Small_7.h"
+#include "Arial_9.h"
+#include "stdio.h"
+#include "C12832_lcd.h"
+
+//class for 3 PWM color values for RGBLED
+class LEDColor
+{
+public:
+ LEDColor(float r, float g, float b);
+ float red;
+ float green;
+ float blue;
+};
+LEDColor:: LEDColor(float r, float g, float b)
+ : red(r), green(g), blue(b)
+{
+}
+//Operator overload to adjust brightness with no color change
+LEDColor operator * (const LEDColor& x, const float& b)
+{
+ return LEDColor(x.red*b,x.green*b,x.blue*b);
+}
+//Operator overload to add colors
+LEDColor operator + (const LEDColor& x, const LEDColor& y)
+{
+ return LEDColor(x.red+y.red,x.green+y.green,x.blue+y.blue);
+}
+
+//Class to control an RGB LED using three PWM pins
+class RGBLed
+{
+public:
+ RGBLed(PinName redpin, PinName greenpin, PinName bluepin);
+ void write(float red,float green, float blue);
+ void write(LEDColor c);
+ RGBLed operator = (LEDColor c) {
+ write(c);
+ return *this;
+ };
+private:
+ PwmOut _redpin;
+ PwmOut _greenpin;
+ PwmOut _bluepin;
+};
+
+RGBLed::RGBLed (PinName redpin, PinName greenpin, PinName bluepin)
+ : _redpin(redpin), _greenpin(greenpin), _bluepin(bluepin)
+{
+ //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker)
+ _redpin.period(0.0005);
+}
+
+void RGBLed::write(float red,float green, float blue)
+{
+ _redpin = red;
+ _greenpin = green;
+ _bluepin = blue;
+}
+void RGBLed::write(LEDColor c)
+{
+ _redpin = c.red;
+ _greenpin = c.green;
+ _bluepin = c.blue;
+}
+
+//classes could be moved to include file
+
+//Setup RGB led using PWM pins and class
+RGBLed myRGBled(p23,p22,p21); //RGB PWM pins
+const LEDColor red(1.0,0.0,0.0);
+const LEDColor green(0.0,0.2,0.0);
+//brighter green LED is scaled down to same as red and
+//blue LED outputs on Sparkfun RGBLED
+const LEDColor blue(0.0,0.0,1.0);
+const LEDColor yellow(1.0,0.2,0.0);
+const LEDColor white(1.0,0.2,1.0);
+const LEDColor black(0.0,0.0,0.0);
+char bred=0;
+char bgreen=0;
+char bblue=0;
+
+volatile bool songselect = false;
+volatile bool homescreen = true;
+uLCD_4DGL uLCD(p28,p27,p30);
+SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
+DigitalOut myled(LED1);
+DigitalIn pb1(p20);
+DigitalIn pb2(p19);
+
+// mutex to make the lcd lib thread safe
+Mutex lcd_mutex;
+int songnum = 1;
+AnalogIn joy_pot(p16);
+// Thread 1
+// print counter into first line and wait for 1 s
+void thread1(void const *args)
+{
+
+ while(true) { // thread loop
+
+ if (homescreen){
+ lcd_mutex.lock();
+ uLCD.cls();
+ uLCD.text_height(1.8);
+ uLCD.text_width(1.8);
+ uLCD.color(WHITE);
+ uLCD.locate(0,0);
+ uLCD.printf("Pick a song");
+ uLCD.text_height(2);
+ uLCD.text_width(2);
+ uLCD.locate(1,2);
+ uLCD.printf("Song1");
+ uLCD.locate(1,4);
+ uLCD.printf("Song2");
+ uLCD.locate(1,6);
+ uLCD.printf("Song3");
+ uLCD.rectangle(5, songnum*30, 100, songnum*30+25 ,GREEN);
+ lcd_mutex.unlock();
+ if (songselect){
+ myled = 0;
+ homescreen = false;
+ lcd_mutex.lock();
+ uLCD.cls();
+ uLCD.printf("You selected song %2d",songnum);
+ lcd_mutex.unlock();
+
+ }
+ //FILE *fp = fopen("/sd/sdtest.txt", "r");
+ //char c = fgetc(fp);
+ //while(c){
+ // c = fgetc(fp);
+ // }
+ }
+ Thread::wait(200);
+ }
+}
+
+void thread2(void const *args)
+{
+
+ while(1){
+ //if (homescreen){
+ if ((joy_pot <= (1.4/3.3)) && songnum>1) {
+ songnum--;
+ }
+ else if ((joy_pot >= (1.8/3.3)) && songnum<3){
+ songnum++;
+ }
+ // }
+ Thread::wait(250);
+
+ }
+}
+
+// Thread 3
+// print a sin function in a small window
+// the value of pot 1 changes the speed of the sine wave
+void thread3(void const *args)
+{
+ pb1.mode(PullUp);
+ pb2.mode(PullUp);
+ while(true) { // thread loop
+ if (!pb2)
+ {
+ homescreen = true;
+ songselect = false;
+ }
+ if (!pb1)
+ {
+ songselect = true;
+ }
+ Thread::wait(100); // value of pot1 / 100
+ }
+}
+
+int main()
+{
+ uLCD.media_init();
+ uLCD.set_sector_address(0x001D, 0x4C01);
+ uLCD.display_image(0,0);
+// t1.start(thread1);
+// t2.start(thread2);
+// t3.start(thread3);
+ Thread t1(thread1);
+ Thread t2(thread2);
+ myled = 1;
+ Thread t3(thread3);
+ while(1)
+ {
+
+ Thread::wait(100);
+ }
+}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Tue Dec 03 21:24:00 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#58563e6cba1e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Dec 03 21:24:00 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/0ab6a29f35bf \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wave_player.lib Tue Dec 03 21:24:00 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/sravet/code/wave_player/#acc3e18e77ad
