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.
Revision 0:a0bf1c99732b, committed 2015-06-12
- Comitter:
- dannellyz
- Date:
- Fri Jun 12 14:58:34 2015 +0000
- Commit message:
- code for interface on mbed coordinator;
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832_lcd.lib Fri Jun 12 14:58:34 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/dreschpe/code/C12832_lcd/#8f86576007d6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Jun 12 14:58:34 2015 +0000
@@ -0,0 +1,95 @@
+// Example of parsing the serial string from the fullAppBaordSend
+/* Code derived from the work of Joe Bradshaw:
+ http://developer.mbed.org/users/jebradshaw/ */
+/******************Declaration of necessary libraries and objects************************/
+#include "mbed.h"
+#include "C12832_lcd.h" // Include for LCD code
+/******************Declaration of necessary variables***********************************/
+DigitalOut myled(LED1); //For LED
+Serial pc(USBTX, USBRX); //tx, rx via USB connection
+Serial xbee(p9, p10); //tx, rx via Xbee socket
+C12832_LCD lcd; // Decalre LCD screen
+LocalFileSystem local("local"); // Create the local filesystem under the name "local"
+float totalTime = 0.0; //Total time used to calulate average wait time
+float avgTime = 0.0; //Average time when error detected
+int errors = 0; //Number of errors
+int total = 0; //Total number of transmissisons
+float pctErr = 0.0; //Percent of transmissions in error
+void keepAverage(float newNum); //Prototype for funciton to make calculations
+
+int main()
+{
+ char abstr[25]; //used to store the whole app board string
+ int joystick; //int value correspponding to the joystick bus
+ float Lpot; //float correspionding to left potentiometer
+ float Rpot; //float correspionding to right potentiometer
+ int id;
+ pc.baud(9600); //crank up the PC baudrate (USB) to avoid latency between data acquisition
+ //xbee.baud(9600);
+ //Setup LCD screen
+ lcd.cls();
+ lcd.locate(0,1);
+ //Set up timers for transmission information
+ Timer t1;
+ Timer t2;
+ //Start timers
+ t1.start();
+ t2.start();
+ while(1) {
+ while(xbee.readable()) //clear out the remaining characters in the buffer
+ char c = xbee.getc();
+ //read the serial string from the xbee (starts with '$', ends with \r\n
+ xbee.scanf("$%s\r\n", &abstr);
+ //Verify that the string has the APPBOARD header
+ if(strncmp(abstr, "APPBOARD", 9)) {
+ //Verify the tring was able to be parsed
+ if (sscanf(abstr, "APPBOARD,%f,%f,%d,%d",&Lpot,&Rpot,&joystick,&id) >= 1) {
+ //Check which input the transmission came from an act accordingly
+ if (id==0) {
+ //Read time and report how long it has been since node was pooled
+ if(t2.read() > 1) {
+ //If time is more than 1 second consider it an error
+ //Run the analysis program
+ keepAverage(t2.read());
+ }
+ //Reset time
+ t2.reset();
+ //Print information to LCD screen
+ lcd.locate(0,1);
+ lcd.printf("M%d: L:%.02f R:%.02f J:%d %.02f\r\n",id,Lpot,Rpot,joystick,t1.read());
+ }
+ if (id==1) {
+ if(t1.read() > 1) {
+ keepAverage(t1.read());
+ }
+ t1.reset();
+ lcd.locate(0,14);
+ lcd.printf("M%d: L:%.02f R:%.02f J:%d %.02f\r\n",id,Lpot,Rpot,joystick,t2.read());
+ }
+ //Print values to screen
+ pc.printf("Mbed %d: L-%.02f:L R-%.02f Joystick:%d\r\n",id,Lpot,Rpot,joystick);
+ } else {
+ //Incorrect parse
+ pc.printf("BAD parse %s\r\n", abstr);
+ }
+ }
+ //Increment total
+ total+=1;
+ myled = !myled; //toggle LED for activity verification
+
+ }//while(1)
+}//main
+
+void keepAverage(float newNum)
+{
+ Timer t3;
+ t3.start();
+ errors ++;
+ totalTime += newNum;
+ avgTime = totalTime/(float)errors;
+ pctErr = (float)errors/(float)total;
+ pc.printf("overNum:%f avgErrTime:%.04f totalErrs:%d totalOut:%d pctErr:%.02f\r\n", newNum,avgTime,errors,total,pctErr);
+ FILE *fp = fopen("/local/out.csv", "a"); // Open "out.txt" on the local file system for writing
+ fprintf(fp,"%f,%.04f,%d,%d,%.02f,%.02f\r\n", newNum,avgTime,errors,total,pctErr,t3.read());
+ fclose(fp);
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Jun 12 14:58:34 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/433970e64889 \ No newline at end of file