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: 4DGL-uLCD-SE Queue SDFileSystem mbed wave_player
Fork of WavePlayer_HelloWorld by
Revision 2:09abe388d23e, committed 2017-04-26
- Comitter:
- ychen644
- Date:
- Wed Apr 26 14:41:00 2017 +0000
- Parent:
- 1:5b8e223e983d
- Commit message:
- a
Changed in this revision
diff -r 5b8e223e983d -r 09abe388d23e 4DGL-uLCD-SE.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/4DGL-uLCD-SE.lib Wed Apr 26 14:41:00 2017 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/4180_1/code/4DGL-uLCD-SE/#2cb1845d7681
diff -r 5b8e223e983d -r 09abe388d23e Queue.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Queue.lib Wed Apr 26 14:41:00 2017 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/wbasser/code/Queue/#a03810d46457
diff -r 5b8e223e983d -r 09abe388d23e SDFileSystem.lib --- a/SDFileSystem.lib Thu Jan 24 02:59:05 2013 +0000 +++ b/SDFileSystem.lib Wed Apr 26 14:41:00 2017 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/SDFileSystem/#c8f66dc765d4 +https://developer.mbed.org/users/ychen644/code/SDFileSystem/#804ae40c8276
diff -r 5b8e223e983d -r 09abe388d23e main.cpp
--- a/main.cpp Thu Jan 24 02:59:05 2013 +0000
+++ b/main.cpp Wed Apr 26 14:41:00 2017 +0000
@@ -1,20 +1,287 @@
+//
+//#include "mbed.h"
+//#include "SDFileSystem.h"
+//#include "wave_player.h"
+//
+//
+//SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
+//
+//AnalogOut DACout(p18);
+//
+//wave_player waver(&DACout);
+//
+//int main()
+//{
+// FILE *wave_file;
+// printf("\n\n\nHello, wave world!\n");
+// wave_file=fopen("/sd/wavfiles/increasing.wav","r");
+// waver.play(wave_file);
+// fclose(wave_file);
+//}
+
#include "mbed.h"
+#include "uLCD_4DGL.h"
+#include "queue.h"
#include "SDFileSystem.h"
#include "wave_player.h"
-
-
+#include <string>
+#include <vector>
+#include <stdio.h>
+
SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
AnalogOut DACout(p18);
wave_player waver(&DACout);
+
+ // uLCD
+ uLCD_4DGL uLCD(p28,p27,p29); // serial tx, serial rx, reset pin;
+
+ // Serial PC
+ Serial myPc( USBTX, USBRX );
+
+ // Bluetooth
+ Serial blue(p9,p10);
+
+ // Queue
+ Queue myQueue(1,15);
+ Queue tempQueue(1,15);
+
+ // Shiftbrite LED
+ DigitalOut latch(p15);
+ DigitalOut enable(p16);
+ SPI spi(p11, p12, p13);
+
+ // LED code
+ void RGB_LED(int red, int green, int blue) {
+ unsigned int low_color=0;
+ unsigned int high_color=0;
+ high_color=(blue<<4)|((red&0x3C0)>>6);
+ low_color=(((red&0x3F)<<10)|(green));
+ spi.write(high_color);
+ spi.write(low_color);
+ latch=1;
+ latch=0;
+}
+FILE *wave_file;
+void speaker(const char* path) {
+ wave_file=fopen(path,"r");
+ waver.play(wave_file);
+ fclose(wave_file);
+}
-int main()
-{
- FILE *wave_file;
- printf("\n\n\nHello, wave world!\n");
- wave_file=fopen("/sd/sample.wav","r");
- waver.play(wave_file);
- fclose(wave_file);
-}
\ No newline at end of file
+// vector data structure that holds patient info
+vector <string> v;
+
+string getCommand(int i) {
+ string tempStr = v.at(i);
+ int pos = tempStr.find(",");
+ return tempStr.substr(0,pos);
+}
+
+string getName(int i) {
+ string tempStr = v.at(i);
+ int pos = tempStr.find(",");
+ string command = tempStr.substr(0,pos);
+ tempStr.erase(0,pos + 1);
+ pos = tempStr.find(",");
+ return tempStr.substr(0,pos);
+
+}
+
+string getNumber(int i) {
+ string tempStr = v.at(i);
+ int pos = tempStr.find(",");
+ string command = tempStr.substr(0,pos);
+ tempStr.erase(0,pos + 1);
+ pos = tempStr.find(",");
+ string name = tempStr.substr(0,pos);
+ tempStr.erase(0,pos + 1);
+ return tempStr;
+}
+
+int main()
+ {
+ //FILE *wave_file;
+ //printf("\n\n\nHello, wave world!\n");
+ //wave_file=fopen("/sd/wavfiles/increasing.wav","r");
+ //waver.play(wave_file);
+ //fclose(wave_file);
+ // variables for Serial Port
+ char value[100];
+
+ // starting wait time
+ int waitTime = 0;
+
+ // variables used for getting bluetooth button
+ char bnum=0;
+ char bhit=0;
+
+ // LED variables
+ int r=0;
+ int g=50;
+ int b=0;
+ spi.format(16,0);
+ spi.frequency(500000);
+ enable=0;
+ latch=0;
+ wait(1);
+
+ while(1) {
+ // Get bluetooth signal
+ if (blue.readable()) {
+ if (blue.getc()=='!') {
+ if (blue.getc()=='B') { //button data packet
+ bnum = blue.getc(); //button number
+ bhit = blue.getc(); //1=hit, 0=release
+ if (bhit=='1')
+ uLCD.cls();
+ uLCD.locate(3,1);
+ //if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK?
+ switch (bnum) {
+ case '1': //number button 1
+ if (bhit=='1') {
+ //uLCD.printf("Next patient");
+ waitTime -= 15;
+ //int patientNum = stoi(v.at(0));
+ int patientNum = std::atoi(getNumber(0).c_str());
+ switch (patientNum) {
+ case 1:
+ speaker("/sd/wavfiles/1.wav");
+ break;
+ case 2:
+ speaker("/sd/wavfiles/2.wav");
+ break;
+ case 3:
+ speaker("/sd/wavfiles/3.wav");
+ break;
+ case 4:
+ speaker("/sd/wavfiles/4.wav");
+ break;
+ case 5:
+ speaker("/sd/wavfiles/5.wav");
+ break;
+ case 6:
+ speaker("/sd/wavfiles/6.wav");
+ break;
+ case 7:
+ speaker("/sd/wavfiles/7.wav");
+ break;
+ case 8:
+ speaker("/sd/wavfiles/8.wav");
+ break;
+ case 9:
+ speaker("/sd/wavfiles/9.wav");
+ break;
+ case 10:
+ speaker("/sd/wavfiles/10.wav");
+ break;
+ }
+ v.erase(v.begin());
+ myPc.putc('1');
+ }
+ break;
+ case '2': //number button 2
+ if (bhit=='1') {
+ //uLCD.printf("Increase wait time");
+ waitTime += 5;
+ myPc.putc('2');
+ speaker("/sd/wavfiles/increasing.wav");
+ }
+ break;
+ case '3': //number button 3
+ if (bhit=='1') {
+ //uLCD.printf("Decrease wait time");
+ waitTime -= 5;
+ myPc.putc('3');
+ speaker("/sd/wavfiles/decreasing.wav");
+ }
+ break;
+ case '4': //number button 4
+ if (bhit=='1') {
+ //uLCD.printf("Change LED");
+ if (r == 0) {
+ r = 50;
+ g = 0;
+ speaker("/sd/wavfiles/busy.wav");
+ } else {
+ r = 0;
+ g = 50;
+ speaker("/sd/wavfiles/available.wav");
+ }
+ }
+ break;
+ }
+ //}
+ }
+ }
+ }
+ // update LED color
+ RGB_LED(r,g,b);
+
+ // Display wait time on LCD
+ uLCD.locate(0,14);
+ if (waitTime < 0)
+ waitTime = 0;
+ uLCD.printf("Wait Time: %d", waitTime);
+
+ // get input from Serial Port
+ if (myPc.readable()) {
+ // store char[] in value
+ myPc.gets(value, 20);
+ // convert to string
+ string temp (value);
+ temp = value;
+ // decode information
+ // (command, name, number)
+ int pos = temp.find(",");
+ string command = temp.substr(0,pos);
+ // if adding patient
+ if (command == "Add") {
+ v.push_back(temp);
+ waitTime += 15;
+ // if removing patient
+ } else {
+ temp.erase(0,pos + 1);
+ pos = temp.find(",");
+ string name = temp.substr(0,pos);
+ // find patient in vector and remove
+ for (int i = 0; i < v.size(); i++) {
+ // TODO
+ // make function that handles this
+ string tempStr = v.at(i);
+ int pos = tempStr.find(",");
+ string command = tempStr.substr(0,pos);
+ tempStr.erase(0,pos + 1);
+ pos = tempStr.find(",");
+ string currentName = tempStr.substr(0,pos);
+ if (currentName == name) {
+ v.erase(v.begin() + i);
+ }
+ }
+ waitTime -= 15;
+ }
+ uLCD.cls();
+ }
+ // update patient list on LCD display
+ for (int i = 0; i < v.size(); i++) {
+ // TODO
+ // make function that handles this
+ /*string tempStr = v.at(i);
+ int pos = tempStr.find(",");
+ string command = tempStr.substr(0,pos);
+ tempStr.erase(0,pos + 1);
+ pos = tempStr.find(",");
+ string name = tempStr.substr(0,pos);
+ tempStr.erase(0,pos + 1);
+ string number = tempStr;*/
+
+ uLCD.locate(0,i*2);
+ uLCD.printf("%s", getNumber(i));
+ uLCD.locate(3,i*2);
+ uLCD.printf("%s", getName(i));
+
+ }
+ }
+ }
\ No newline at end of file
