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
Diff: main.cpp
- Revision:
- 0:8080080b83cf
diff -r 000000000000 -r 8080080b83cf main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Aug 12 13:29:07 2019 +0000
@@ -0,0 +1,82 @@
+#include "mbed.h"
+#include "IIR_filter.h"
+
+/* Notes pmic 07.08.2019:
+ - ...
+*/
+
+AnalogIn dist(PC_4); // analog IN (acc x) on PA_0
+float d = 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, 50 Hz
+
+IIR_filter pt1(0.5f, Ts, 1.0f);
+float df = 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()
+{
+ 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);
+}
+
+// the updateLoop starts as soon as you pressed the blue botton
+void updateLoop(void)
+{
+ // d = usGain*rangefinder() + usOffset;
+ d = dist.read();
+ df = pt1(d);
+ if(doRun) {
+ ///*
+ // use this section to do dynamical measurements
+ if(doRun && k++ < 1600) {
+ pc.printf("%10i %10.9e\r\n", k, d);
+ }
+ //*/
+ /*
+ // use this section to do static measurements
+ if(doRun && k++%25 == 0) {
+ pc.printf("%10i %10.6e\r\n", k, df);
+ }
+ */
+ }
+}
+
+// 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();
+}
+