Simple example program - Read sensors from Mbed Application Board, build JSON style string from data, Send data via pre-configured Xbee, Receive data from duplicate program on another device, Display data received on LCD, Switch display mode from full string to split string using Joystick Down button.
Dependencies: mbed C12832 LM75B MMA7660
Revision 0:720912d4ddcb, committed 2018-11-28
- Comitter:
- SteakNinja
- Date:
- Wed Nov 28 16:41:20 2018 +0000
- Commit message:
- A simple example program showing how to get data from sensors (Mbed Application Board), send/receive the data via pre-configured Xbee (Serial on Xbee footprint) using a JSON style message structure and switch mode of LCD display with Joystick Down.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832.lib Wed Nov 28 16:41:20 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/chris/code/C12832/#7de323fa46fe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LM75B.lib Wed Nov 28 16:41:20 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/neilt6/code/LM75B/#7ac462ba84ac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA7660.lib Wed Nov 28 16:41:20 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/Sissors/code/MMA7660/#36a163511e34
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Nov 28 16:41:20 2018 +0000
@@ -0,0 +1,108 @@
+#include "mbed.h"
+#include "LM75B.h"
+#include "MMA7660.h"
+#include "C12832.h"
+
+DigitalOut myled(LED1);
+AnalogIn pot1(p19);
+AnalogIn pot2(p20);
+InterruptIn JoyDown(p12);
+LM75B temp(p28, p27);
+MMA7660 MMA(p28,p27);
+C12832 lcd(p5,p7,p6,p8,p11);
+Serial xbee(p9,p10);
+Serial pc(USBTX, USBRX);
+char Buffer[70];
+bool isSplitMode = false;
+char allDelimiters[] = "{}\":,";
+char* strArray[100];
+
+//Split string using preset characters
+void delimitJson()
+{
+ char* pch = strtok(Buffer, allDelimiters);
+ int i = 0;
+ while (pch != NULL) {
+ strArray[i] = pch;
+ pch = strtok (NULL, allDelimiters);
+ i++;
+ }
+ pch = NULL;
+}
+
+void switchMode()
+{
+ //Switch between split display and JSON display mode
+ isSplitMode = !isSplitMode;
+}
+
+void RxData()
+{
+ //Check if data is received
+ if (xbee.readable()) {
+ //Put new serial data into Buffer until a '\n' (New Line) character is detected
+ xbee.scanf("%67s",Buffer);
+ }
+ if (isSplitMode)
+ {
+ //Split the string into a Char Array called strArray
+ delimitJson();
+ //Draw first two entries in the array (Temp: value)
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf("%s:",strArray[0]);
+ lcd.locate(25,0);
+ lcd.printf(strArray[1]);
+ //Draw next two entries in the array (X: value)
+ lcd.locate(0,10);
+ lcd.printf("%s:",strArray[2]);
+ lcd.locate(25,10);
+ lcd.printf(strArray[3]);
+ //Draw next two entries in the array (Y: value)
+ lcd.locate(0,20);
+ lcd.printf("%s:",strArray[4]);
+ lcd.locate(25,20);
+ lcd.printf(strArray[5]);
+ //Draw next two entries in the array (Z: value)
+ lcd.locate(60,0);
+ lcd.printf("%s:",strArray[6]);
+ lcd.locate(85,0);
+ lcd.printf(strArray[7]);
+ //Draw next two entries in the array (Pot1: value)
+ lcd.locate(60,10);
+ lcd.printf("%s:",strArray[8]);
+ lcd.locate(85,10);
+ lcd.printf(strArray[9]);
+ //Draw last two entries in the array (Pot2: value)
+ lcd.locate(60,20);
+ lcd.printf("%s:",strArray[10]);
+ lcd.locate(85,20);
+ lcd.printf(strArray[11]);
+ } else {
+ lcd.cls();
+ lcd.locate(0,0);
+ lcd.printf(Buffer);
+ }
+}
+
+int main()
+{
+ //Attach receive interrupt to xbee serial pins
+ xbee.attach(&RxData, Serial::RxIrq);
+ //Attach button interrupt to the switchMode method
+ JoyDown.rise(&switchMode);
+ //Initialise LM75B temperature sensor
+ if (temp.open()) {
+ pc.printf("\r\nLM75B Operational\r\n");
+ }
+
+ while(1) {
+ //Flash LED so we know program is running
+ myled = 1;
+ wait(0.2);
+ myled = 0;
+ wait(0.2);
+ //Send current data from sensors to Xbee
+ xbee.printf("{Temp:%.3f,X:%.4f,Y:%.4f,Z:%.4f,Pot1:%.3f,Pot2:%.3f}\n", temp.temp(), MMA.x(), MMA.y(), MMA.z(), pot1.read(), pot2.read());
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Nov 28 16:41:20 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc \ No newline at end of file