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.
Diff: main.cpp
- Revision:
- 6:898a83da0661
- Parent:
- 4:cdf9641ba817
- Child:
- 7:3f4048c1cc81
--- a/main.cpp Tue Jun 25 14:20:21 2019 +0000 +++ b/main.cpp Tue Jun 25 14:51:58 2019 +0000 @@ -1,17 +1,84 @@ #include "mbed.h" #include "HP206C.h" +#include "IIR_filter.h" -Serial serial(SERIAL_TX, SERIAL_RX); -HP206C barometer(D14, D15); +/* Notes pmic 25.06.2019: + - +*/ + +HP206C barometer(D14, D15); // 20 Hz parametrization float altitude = 0.0f; +Serial pc(SERIAL_TX, SERIAL_RX); // serial connection via USB - programmer +InterruptIn Button(USER_BUTTON); // User Button +Ticker LoopTimer; // interrupt for control loop +Timer t; // timer to analyse Button + +int k; +bool doRun = false; +float Ts = 0.05f; // sample time of main loop, 20 Hz + +IIR_filter pt1(0.2f, Ts, 1.0f); +float altitudef = 0.0f; + +// user defined functions +void updateLoop(void); // loop (via interrupt) +void pressed(void); // user Button pressed +void released(void); // user Button released + +// main program and control loop +// ----------------------------------------------------------------------------- int main() { - serial.baud(115200); + pc.baud(2000000); // for serial comm. + LoopTimer.attach(&updateLoop, Ts); // attach loop to timer interrupt + Button.fall(&pressed); // attach key pressed function + Button.rise(&released); // attach key pressed function + k = 0; + pt1.reset(0.0f); barometer.reset(); - while(1) { - altitude = barometer(); - serial.printf("altitude %f\r\n", altitude); - wait_ms(20); // don't hammer the serial console + wait_us(100); +} + +// the updateLoop starts as soon as you pressed the blue botton +void updateLoop(void) +{ + altitude = barometer(); + altitudef = pt1(altitude); + // pc.printf("%10i %10.6e\r\n", k, altitude); + if(doRun) { + /* + // use this section to do dynamical measurements + if(doRun && k++ < 4000) { + pc.printf("%10i %10.9e\r\n", k, altitude); + } + */ + ///* + // use this section to do static measurements + if(doRun && k++%25 == 0) { + pc.printf("%10i %10.6e\r\n", k, altitudef); + } + //*/ } } + +// buttonhandling +// ----------------------------------------------------------------------------- +// start timer as soon as button is pressed +void pressed() +{ + t.start(); +} + +// evaluating statemachine +void released() +{ + // toggle state over boolean + if(doRun) { + k = 0; + pt1.reset(0.0f); + } + doRun = !doRun; + t.stop(); + t.reset(); +} \ No newline at end of file