altb_pmic / Mbed 2 deprecated Grove-Barometric_Pressure_Sensor_Example

Dependencies:   HP206C mbed

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?

UserRevisionLine numberNew 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 }