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 4DGL-uLCD-SE SDFileSystem X_NUCLEO_53L0A1 HC_SR04_Ultrasonic_Library
Diff: main.cpp
- Revision:
- 3:94d9434576af
- Parent:
- 2:4845e2dae429
- Child:
- 4:1ef667567942
--- a/main.cpp Wed Feb 19 18:48:09 2020 +0000
+++ b/main.cpp Mon Feb 24 17:01:46 2020 +0000
@@ -1,35 +1,51 @@
#include "mbed.h"
#include "rtos.h"
+#include "uLCD_4DGL.h"
+#include "SDFileSystem.h"
+#include "wave_player.h"
+
//#include "part2.h"
//#include "part3.h"
#include "part4_led.h"
//#include "lidar_theremin.h"
Serial pc(USBTX, USBRX);
-RawSerial dev(p13,p14);
+RawSerial dev(p9,p10);
DigitalOut myled1(LED1);
+DigitalOut myled2(LED2);
+DigitalOut myled3(LED3);
+DigitalOut myled4(LED4);
RGBLed led = RGBLed(p21, p22, p23);
Color colors[] = { _red, _pink, _orange, _yellow };
+uLCD_4DGL lcd(p28,p27,p30);
+
Thread led_thread;
+Thread lcd_thread1;
+Thread lcd_thread2;
+Thread audio_thread;
-void changeColor(char c) {
- if (c == 'r') {
- colors[0] = _red;
- colors[1] = _pink;
- colors[2] = _orange;
- colors[3] = _yellow;
- } else if (c == 'b') {
- colors[0] = _teal;
- colors[1] = _light_blue;
- colors[2] = _blue;
- colors[3] = _purple;
- } else if (c == 'g') {
- colors[0] = _yellow;
- colors[1] = _light_green;
- colors[2] = _green;
- colors[3] = _teal;
+void changeColor() {
+ while (dev.readable()) {
+ char c = dev.getc();
+
+ if (c == 'r') {
+ colors[0] = _red;
+ colors[1] = _pink;
+ colors[2] = _orange;
+ colors[3] = _yellow;
+ } else if (c == 'b') {
+ colors[0] = _teal;
+ colors[1] = _light_blue;
+ colors[2] = _blue;
+ colors[3] = _purple;
+ } else if (c == 'g') {
+ colors[0] = _yellow;
+ colors[1] = _light_green;
+ colors[2] = _green;
+ colors[3] = _teal;
+ }
}
}
@@ -45,22 +61,93 @@
}
}
+Mutex lcd_mutex;
+//Semaphore sem(1);
+
+
+void lcd1_handler() {
+ int i = 0;
+ while (1) {
+ lcd_mutex.lock();
+// sem.wait();
+ lcd.locate(0, 0);
+ lcd.printf("Counter: %d", i);
+ lcd_mutex.unlock();
+// sem.release();
+
+ i++;
+ Thread::wait(1000);
+ }
+}
+
+void lcd2_handler() {
+ int i,k, offset;
+ double s,a;
+ k = 1;
+ offset = 50;
+ lcd_mutex.lock();
+// sem.wait();
+ lcd.rectangle(89,0,127,17,1);
+ lcd_mutex.unlock();
+// sem.release();
+
+ while(1) { // thread loop
+// v = 1;
+ lcd_mutex.lock();
+// sem.wait();
+ for (i=0; i<127; i++) {
+ s = 8 * sin((long double)(i+k) /5); // pixel to print
+ a = 8 * sin((long double)(i+k-1) /5); // old pixel to erase
+ lcd.pixel(i,offset + (int)a, BLACK); // erase pixel
+ lcd.pixel(i,offset + (int)s, WHITE); // print pixel
+ }
+ lcd_mutex.unlock();
+// sem.release();
+ k++;
+ Thread::wait(100); // value of pot1 / 100
+ }
+}
+
+SDFileSystem sd(p5, p6, p7, p8, "sd");
+AnalogOut DACout(p18);
+wave_player waver(&DACout);
+
+void audio_handler() {
+ FILE *wave_file;
+ myled2 = !myled2;
+// printf("\n\n\nHello, wave world!\n");
+// myled4 = !myled4;
+ while (1) {
+ myled4 = !myled4;
+ wave_file=fopen("/sd/sample.wav","r");
+ waver.play(wave_file);
+ fclose(wave_file);
+ Thread::wait(1000);
+ }
+}
+
int main() {
// run_part2();
// run_part2_EC();
// run_lidar_theremin();
// run_part3();
+
+ pc.baud(9600);
+ dev.baud(9600);
led_thread.start(led_handler);
+ lcd.cls();
+ lcd_thread1.start(lcd1_handler);
+ lcd_thread2.start(lcd2_handler);
+ myled2 = !myled2;
+ audio_thread.start(audio_handler);
+ myled3 = !myled3;
+
+ dev.attach(&changeColor, Serial::RxIrq);
while (1) {
myled1 = !myled1;
-
- if (dev.readable()) {
-// changeColor(dev.getc());
- pc.putc(dev.getc());
- }
Thread::wait(500);
}