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.
Diff: main.cpp
- Revision:
- 0:2fda8809cd0e
- Child:
- 1:5cf36d70a7d2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed May 25 02:33:27 2011 +0000
@@ -0,0 +1,102 @@
+#include "mbed.h"
+// EasyVR Speech Recognition and Speech Synthesis Demo
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+Serial device(p13, p14); // tx, rx
+Serial pc(USBTX,USBRX); //USB virtual com port can be used to watch VR command responses
+
+// Function to play a sound file on speaker
+void speak(int num) {
+ device.putc('w');
+ // small delay is needed between characters
+ wait(.001);
+ device.putc('A' + num/10);
+ wait(.001);
+ device.putc('A' + num%10);
+ wait(.001);
+ device.putc('P');
+ while (device.getc()!='o') {}
+ wait(.25);
+}
+
+int main() {
+ char rchar=0;
+ char echar=0;
+ led1=0;
+ led2=0;
+ led3=0;
+ led4=0;
+// wake up EasyVR
+ device.putc('b');
+ while (device.getc()!='o') {
+ device.putc('b');
+ wait(0.1);
+ }
+ // play reset message
+ speak(3);
+// Use SD recogniton and wait for password (mbed)
+ while (rchar!='A') {
+ wait(.001);
+ device.putc('d');
+// a small delay is needed when sending EasyVR several characters
+ wait(.001);
+ device.putc('B');
+ while (device.readable()!=0) {}
+ rchar=device.getc();
+ pc.putc(rchar);
+ // word recognized
+ if (rchar=='r') {
+ wait(.001);
+ device.putc(' ');
+ rchar=device.getc();
+ pc.putc(rchar);
+ // error
+ } else if (rchar=='e') {
+ wait(.001);
+ device.putc(' ');
+ rchar=device.getc();
+ device.putc(' ');
+ rchar=device.getc();
+ }
+ }
+// voice ack for password
+ speak(5);
+ wait(1);
+// loop forever waiting for number commands
+ while (1) {
+ // voice prompt for input - don't prompt after a timeout or error
+ if ((rchar!='t')&&(rchar!='e')) speak(1);
+ wait(.002);
+ // SI recog of numbers 0..10
+ device.putc('i');
+ wait(.001);
+ device.putc('D');
+ while (device.readable()!=0) {}
+ rchar=device.getc();
+ pc.putc(rchar);
+ // number was recognized
+ if (rchar=='s') {
+ wait(.001);
+ device.putc(' ');
+ rchar=device.getc();
+ pc.putc(rchar);
+ if (rchar=='B') led1 = !led1;
+ if (rchar=='C') led2 = !led2;
+ if (rchar=='D') led3 = !led3;
+ if (rchar=='E') led4 = !led4;
+ // voice ack
+ speak(2);
+ // recognition error
+ } else if (rchar=='e') {
+ wait(.001);
+ device.putc(' ');
+ echar=device.getc();
+ device.putc(' ');
+ echar=device.getc();
+ // prompt user to restate command
+ speak(4);
+ }
+ }
+}