![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
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
diff -r 000000000000 -r 720912d4ddcb C12832.lib --- /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
diff -r 000000000000 -r 720912d4ddcb LM75B.lib --- /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
diff -r 000000000000 -r 720912d4ddcb MMA7660.lib --- /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
diff -r 000000000000 -r 720912d4ddcb main.cpp --- /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()); + } +}
diff -r 000000000000 -r 720912d4ddcb mbed.bld --- /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