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.
main.cpp@6:898a83da0661, 2019-06-25 (annotated)
- Committer:
- pmic
- Date:
- Tue Jun 25 14:51:58 2019 +0000
- Revision:
- 6:898a83da0661
- Parent:
- 4:cdf9641ba817
- Child:
- 7:3f4048c1cc81
change main
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pmic | 0:5119eeafd9ce | 1 | #include "mbed.h" |
pmic | 2:ecd5c6118888 | 2 | #include "HP206C.h" |
pmic | 6:898a83da0661 | 3 | #include "IIR_filter.h" |
pmic | 0:5119eeafd9ce | 4 | |
pmic | 6:898a83da0661 | 5 | /* Notes pmic 25.06.2019: |
pmic | 6:898a83da0661 | 6 | - |
pmic | 6:898a83da0661 | 7 | */ |
pmic | 6:898a83da0661 | 8 | |
pmic | 6:898a83da0661 | 9 | HP206C barometer(D14, D15); // 20 Hz parametrization |
pmic | 0:5119eeafd9ce | 10 | float altitude = 0.0f; |
pmic | 0:5119eeafd9ce | 11 | |
pmic | 6:898a83da0661 | 12 | Serial pc(SERIAL_TX, SERIAL_RX); // serial connection via USB - programmer |
pmic | 6:898a83da0661 | 13 | InterruptIn Button(USER_BUTTON); // User Button |
pmic | 6:898a83da0661 | 14 | Ticker LoopTimer; // interrupt for control loop |
pmic | 6:898a83da0661 | 15 | Timer t; // timer to analyse Button |
pmic | 6:898a83da0661 | 16 | |
pmic | 6:898a83da0661 | 17 | int k; |
pmic | 6:898a83da0661 | 18 | bool doRun = false; |
pmic | 6:898a83da0661 | 19 | float Ts = 0.05f; // sample time of main loop, 20 Hz |
pmic | 6:898a83da0661 | 20 | |
pmic | 6:898a83da0661 | 21 | IIR_filter pt1(0.2f, Ts, 1.0f); |
pmic | 6:898a83da0661 | 22 | float altitudef = 0.0f; |
pmic | 6:898a83da0661 | 23 | |
pmic | 6:898a83da0661 | 24 | // user defined functions |
pmic | 6:898a83da0661 | 25 | void updateLoop(void); // loop (via interrupt) |
pmic | 6:898a83da0661 | 26 | void pressed(void); // user Button pressed |
pmic | 6:898a83da0661 | 27 | void released(void); // user Button released |
pmic | 6:898a83da0661 | 28 | |
pmic | 6:898a83da0661 | 29 | // main program and control loop |
pmic | 6:898a83da0661 | 30 | // ----------------------------------------------------------------------------- |
pmic | 0:5119eeafd9ce | 31 | int main() |
pmic | 0:5119eeafd9ce | 32 | { |
pmic | 6:898a83da0661 | 33 | pc.baud(2000000); // for serial comm. |
pmic | 6:898a83da0661 | 34 | LoopTimer.attach(&updateLoop, Ts); // attach loop to timer interrupt |
pmic | 6:898a83da0661 | 35 | Button.fall(&pressed); // attach key pressed function |
pmic | 6:898a83da0661 | 36 | Button.rise(&released); // attach key pressed function |
pmic | 6:898a83da0661 | 37 | k = 0; |
pmic | 6:898a83da0661 | 38 | pt1.reset(0.0f); |
pmic | 2:ecd5c6118888 | 39 | barometer.reset(); |
pmic | 6:898a83da0661 | 40 | wait_us(100); |
pmic | 6:898a83da0661 | 41 | } |
pmic | 6:898a83da0661 | 42 | |
pmic | 6:898a83da0661 | 43 | // the updateLoop starts as soon as you pressed the blue botton |
pmic | 6:898a83da0661 | 44 | void updateLoop(void) |
pmic | 6:898a83da0661 | 45 | { |
pmic | 6:898a83da0661 | 46 | altitude = barometer(); |
pmic | 6:898a83da0661 | 47 | altitudef = pt1(altitude); |
pmic | 6:898a83da0661 | 48 | // pc.printf("%10i %10.6e\r\n", k, altitude); |
pmic | 6:898a83da0661 | 49 | if(doRun) { |
pmic | 6:898a83da0661 | 50 | /* |
pmic | 6:898a83da0661 | 51 | // use this section to do dynamical measurements |
pmic | 6:898a83da0661 | 52 | if(doRun && k++ < 4000) { |
pmic | 6:898a83da0661 | 53 | pc.printf("%10i %10.9e\r\n", k, altitude); |
pmic | 6:898a83da0661 | 54 | } |
pmic | 6:898a83da0661 | 55 | */ |
pmic | 6:898a83da0661 | 56 | ///* |
pmic | 6:898a83da0661 | 57 | // use this section to do static measurements |
pmic | 6:898a83da0661 | 58 | if(doRun && k++%25 == 0) { |
pmic | 6:898a83da0661 | 59 | pc.printf("%10i %10.6e\r\n", k, altitudef); |
pmic | 6:898a83da0661 | 60 | } |
pmic | 6:898a83da0661 | 61 | //*/ |
pmic | 0:5119eeafd9ce | 62 | } |
pmic | 0:5119eeafd9ce | 63 | } |
pmic | 6:898a83da0661 | 64 | |
pmic | 6:898a83da0661 | 65 | // buttonhandling |
pmic | 6:898a83da0661 | 66 | // ----------------------------------------------------------------------------- |
pmic | 6:898a83da0661 | 67 | // start timer as soon as button is pressed |
pmic | 6:898a83da0661 | 68 | void pressed() |
pmic | 6:898a83da0661 | 69 | { |
pmic | 6:898a83da0661 | 70 | t.start(); |
pmic | 6:898a83da0661 | 71 | } |
pmic | 6:898a83da0661 | 72 | |
pmic | 6:898a83da0661 | 73 | // evaluating statemachine |
pmic | 6:898a83da0661 | 74 | void released() |
pmic | 6:898a83da0661 | 75 | { |
pmic | 6:898a83da0661 | 76 | // toggle state over boolean |
pmic | 6:898a83da0661 | 77 | if(doRun) { |
pmic | 6:898a83da0661 | 78 | k = 0; |
pmic | 6:898a83da0661 | 79 | pt1.reset(0.0f); |
pmic | 6:898a83da0661 | 80 | } |
pmic | 6:898a83da0661 | 81 | doRun = !doRun; |
pmic | 6:898a83da0661 | 82 | t.stop(); |
pmic | 6:898a83da0661 | 83 | t.reset(); |
pmic | 6:898a83da0661 | 84 | } |