A demo on NXP KL25Z of the telemetry library to publish some sensor data that can be read/plotted on the computer using pytelemetrycli (https://github.com/Overdrivr/pytelemetrycli) Published data: "touch" -> capacitive slider output value "acc:x" -> x channel of the accelerometer "acc:y" -> y channel "acc:z" -> z channel
Dependencies: BufferedSerial MMA8451Q mbed telemetry tsi_sensor
main.cpp@2:9bf273ead1b0, 2016-03-09 (annotated)
- Committer:
- Overdrivr
- Date:
- Wed Mar 09 15:50:16 2016 +0000
- Revision:
- 2:9bf273ead1b0
- Parent:
- 1:b63db8e76533
update include headers
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Overdrivr | 0:d38b884af46a | 1 | #include "mbed.h" |
Overdrivr | 2:9bf273ead1b0 | 2 | #include "Telemetry.hpp" |
Overdrivr | 0:d38b884af46a | 3 | #include "tsi_sensor.h" |
Overdrivr | 0:d38b884af46a | 4 | #include "MMA8451Q.h" |
Overdrivr | 0:d38b884af46a | 5 | |
Overdrivr | 0:d38b884af46a | 6 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
Overdrivr | 0:d38b884af46a | 7 | |
Overdrivr | 1:b63db8e76533 | 8 | /* |
Overdrivr | 1:b63db8e76533 | 9 | Example of the 'Telemetry' library, a portable communication library for embedded devices. |
Overdrivr | 1:b63db8e76533 | 10 | |
Overdrivr | 1:b63db8e76533 | 11 | This code fetches all the data from the KL25Z bord and publishes it on different topics : |
Overdrivr | 1:b63db8e76533 | 12 | |
Overdrivr | 1:b63db8e76533 | 13 | The available data is the following : |
Overdrivr | 1:b63db8e76533 | 14 | * Accelerometer X |
Overdrivr | 1:b63db8e76533 | 15 | * Accelerometer Y |
Overdrivr | 1:b63db8e76533 | 16 | * Accelerometer Z |
Overdrivr | 1:b63db8e76533 | 17 | * Capacitive slider |
Overdrivr | 1:b63db8e76533 | 18 | |
Overdrivr | 1:b63db8e76533 | 19 | You can use the Pytelemetry Command Line Interface to open plots, visualize the received data, |
Overdrivr | 1:b63db8e76533 | 20 | and communicate with the car. |
Overdrivr | 1:b63db8e76533 | 21 | See https://github.com/Overdrivr/pytelemetrycli |
Overdrivr | 1:b63db8e76533 | 22 | */ |
Overdrivr | 0:d38b884af46a | 23 | |
Overdrivr | 0:d38b884af46a | 24 | |
Overdrivr | 1:b63db8e76533 | 25 | DigitalOut led(LED1); |
Overdrivr | 0:d38b884af46a | 26 | |
Overdrivr | 0:d38b884af46a | 27 | int main() |
Overdrivr | 0:d38b884af46a | 28 | { |
Overdrivr | 1:b63db8e76533 | 29 | Telemetry TM(115200); |
Overdrivr | 1:b63db8e76533 | 30 | |
Overdrivr | 0:d38b884af46a | 31 | // Some sensors to read |
Overdrivr | 0:d38b884af46a | 32 | TSIAnalogSlider tsi(PTB16,PTB17,40); |
Overdrivr | 0:d38b884af46a | 33 | MMA8451Q acc(PTE25, PTE24); |
Overdrivr | 0:d38b884af46a | 34 | |
Overdrivr | 0:d38b884af46a | 35 | led = 1; |
Overdrivr | 0:d38b884af46a | 36 | |
Overdrivr | 1:b63db8e76533 | 37 | // Some timers |
Overdrivr | 0:d38b884af46a | 38 | Timer tm_timer; |
Overdrivr | 0:d38b884af46a | 39 | Timer print_timer; |
Overdrivr | 0:d38b884af46a | 40 | Timer led_timer; |
Overdrivr | 0:d38b884af46a | 41 | |
Overdrivr | 0:d38b884af46a | 42 | tm_timer.start(); |
Overdrivr | 0:d38b884af46a | 43 | print_timer.start(); |
Overdrivr | 1:b63db8e76533 | 44 | led_timer.start(); |
Overdrivr | 1:b63db8e76533 | 45 | |
Overdrivr | 1:b63db8e76533 | 46 | // To store accelerometer values |
Overdrivr | 1:b63db8e76533 | 47 | int16_t axis[3]; |
Overdrivr | 0:d38b884af46a | 48 | |
Overdrivr | 0:d38b884af46a | 49 | for(;;) |
Overdrivr | 0:d38b884af46a | 50 | { |
Overdrivr | 0:d38b884af46a | 51 | // update telemetry |
Overdrivr | 0:d38b884af46a | 52 | if(tm_timer.read_ms() > 50) |
Overdrivr | 0:d38b884af46a | 53 | { |
Overdrivr | 0:d38b884af46a | 54 | tm_timer.reset(); |
Overdrivr | 0:d38b884af46a | 55 | TM.update(); |
Overdrivr | 0:d38b884af46a | 56 | } |
Overdrivr | 0:d38b884af46a | 57 | |
Overdrivr | 0:d38b884af46a | 58 | |
Overdrivr | 0:d38b884af46a | 59 | // publish accelerometer data |
Overdrivr | 0:d38b884af46a | 60 | if(print_timer.read_ms() > 50) |
Overdrivr | 0:d38b884af46a | 61 | { |
Overdrivr | 0:d38b884af46a | 62 | print_timer.reset(); |
Overdrivr | 0:d38b884af46a | 63 | TM.pub_f32("touch",tsi.readPercentage()); |
Overdrivr | 0:d38b884af46a | 64 | |
Overdrivr | 0:d38b884af46a | 65 | acc.getAccAllAxis(axis); |
Overdrivr | 0:d38b884af46a | 66 | |
Overdrivr | 1:b63db8e76533 | 67 | TM.pub_i16("acc/x",axis[0]); |
Overdrivr | 1:b63db8e76533 | 68 | TM.pub_i16("acc/y",axis[1]); |
Overdrivr | 1:b63db8e76533 | 69 | TM.pub_i16("acc/z",axis[2]); |
Overdrivr | 0:d38b884af46a | 70 | } |
Overdrivr | 0:d38b884af46a | 71 | |
Overdrivr | 0:d38b884af46a | 72 | if(led_timer.read_ms() > 500) |
Overdrivr | 0:d38b884af46a | 73 | { |
Overdrivr | 0:d38b884af46a | 74 | led_timer.reset(); |
Overdrivr | 0:d38b884af46a | 75 | led = (led == 0) ? 1 : 0; |
Overdrivr | 0:d38b884af46a | 76 | } |
Overdrivr | 0:d38b884af46a | 77 | } |
Overdrivr | 0:d38b884af46a | 78 | } |