A demonstration of the Telemetry library that sends the contents of an array over a single topic 'sin'. The array is a shifting 16-samples window on a sine function
Dependencies: BufferedSerial mbed telemetry
Diff: main.cpp
- Revision:
- 0:2e15d72bfbcf
- Child:
- 1:22e495480269
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Feb 22 21:51:37 2016 +0000 @@ -0,0 +1,58 @@ +#include "mbed.h" +#include "telemetry/Telemetry.h" + +/* + Example of the 'Telemetry' library, a portable communication library for embedded devices. + + This code shows how you can use the powerful topic adressing of the library + to send complex, indexed and sparse data such as arrays, lists, etc. + + You can use the Pytelemetry Command Line Interface to open plots, visualize the received data, + and communicate with the car. + See https://github.com/Overdrivr/pytelemetrycli +*/ + +int main() +{ + Telemetry TM(115200); + + Timer refresh_timer; + refresh_timer.start(); + + // The topic under which the array is published + char topic [] = "sin:000"; + + // The sent array contains 16 elements + // Each element takes the value of a sine function, with a phase difference between each element + // In the command-line interface, the generated data will visualize as a moving sine wave + + // Time for simulating sine function + float t = 0; + + for(;;) + { + // 10 times per second + if(refresh_timer.read_ms() > 100) + { + refresh_timer.reset(); + + // Compute a 16 points window on a sine function that shifts in time + for(uint16_t i = 0 ; i < 16 ; i++) + { + // Compute sinus of point i + float s = sin(2 * 3.14159 * t + i/10.0); + + // Build the topic + // First topic will be 'sin:0' + // Second topic will be 'sin:1', etc + sprintf(topic,"sin:%u",i); + + // Publish sine value at index 'i' to topic 'sin:i' + TM.pub_f32(topic,s); + } + + // Move time forward + t += 0.005; + } + } +} \ No newline at end of file