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