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: TextLCD_improved mbed Distance_HC_SR04
Revision 0:6fd0fbcfc7e1, committed 2015-12-20
- Comitter:
- dzoni
- Date:
- Sun Dec 20 20:27:09 2015 +0000
- Child:
- 1:d89dcba8d3df
- Commit message:
- Prvn? verze kompletn?. Funkce pln? implementovan? v main() + timeout.
Changed in this revision
diff -r 000000000000 -r 6fd0fbcfc7e1 TextLCD_improved.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD_improved.lib Sun Dec 20 20:27:09 2015 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/dzoni/code/TextLCD_improved/#43c7f34925ac
diff -r 000000000000 -r 6fd0fbcfc7e1 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sun Dec 20 20:27:09 2015 +0000
@@ -0,0 +1,162 @@
+/*
+ * TSK_MAIN.CPP
+ */
+#include "mbed.h"
+
+#include "TextLCD.h"
+
+#define TIMEOUT_DELAY_US (25000)
+#define CALC_COEFF (1000.0f*340.0f/2)
+#define TICKS_RANGE_MAX (15000)
+#define TICKS_RANGE_MIN (150)
+
+TextLCD lcd(PA_8, PA_7, PA_9, PA_1, PB_5, PA_10, TextLCD::LCD16x2);
+
+static DigitalOut trigDist(PB_9);
+static DigitalIn echoDist(PA_6);
+
+static uint32_t timer_ticks;
+static float time_float;
+static uint32_t timer_ticks_min;
+
+static Timer timer;
+
+static Timeout timeout;
+
+static volatile enum { IDLE, STARTED, COMPLETED, TIMEOUT, OUT_OF_RANGE_MIN, OUT_OF_RANGE_MAX, ERROR_SIG } state;
+
+void tout(void) {
+ if (state == STARTED)
+ state = TIMEOUT;
+}
+
+int main() {
+
+ trigDist = 0;
+ state = IDLE;
+ timer_ticks_min = 999999;
+
+ wait_ms(250);
+ lcd.cls();
+
+ lcd.cls();
+ lcd.printf("Row 1");
+ lcd.locate(0, 1);
+ lcd.printf("Row 2");
+
+ while (true) {
+ // Priprava
+ state = STARTED;
+ timeout.attach_us(&tout, TIMEOUT_DELAY_US);
+
+ // Dej puls na trig
+ trigDist = 1;
+ wait_us(500);
+ trigDist = 0;
+
+ // Zkontroluj signal
+ if (echoDist != 0) {
+ state = ERROR_SIG;
+ timer_ticks = 0;
+ lcd.cls();
+ lcd.printf("Dist.: ---", timer_ticks);
+ lcd.locate(0, 1);
+ lcd.printf("ERROR_SIG");
+ } else {
+ // Vynuluj timer
+ timer.stop();
+ timer.reset();
+
+ // Cekej na hrany na Echo
+ while (echoDist == 0 && state == STARTED)
+ ;
+
+ timer.start();
+
+ while (echoDist == 1 && state == STARTED)
+ ;
+
+ if (state == STARTED) {
+ state = COMPLETED;
+ timer.stop();
+
+ timer_ticks = timer.read_us();
+ time_float = timer.read()*CALC_COEFF;
+
+ timer_ticks_min = (timer_ticks_min < timer_ticks) ? timer_ticks_min : timer_ticks;
+
+ if (timer_ticks < TICKS_RANGE_MIN) {
+ timer_ticks = 0;
+ time_float = 0.0f;
+
+ state = OUT_OF_RANGE_MIN;
+
+ lcd.cls();
+ lcd.printf("Dist.: ---");
+ lcd.locate(0, 1);
+ lcd.printf("OUT_OF_RANGE_MIN");
+ } else if (timer_ticks > TICKS_RANGE_MAX) {
+ timer_ticks = 0;
+ time_float = 0.0f;
+
+ state = OUT_OF_RANGE_MAX;
+
+ lcd.cls();
+ lcd.printf("Dist.: ---");
+ lcd.locate(0, 1);
+ lcd.printf("OUT_OF_RANGE_MAX");
+ } else {
+ lcd.cls();
+ lcd.printf("Dist.: %u %u", timer_ticks, timer_ticks_min);
+ lcd.locate(0, 1);
+ lcd.printf("Dist.: %.3f", time_float);
+ }
+ } else {
+ timer.stop();
+ timer_ticks = 0;
+ time_float = 0.0f;
+
+ lcd.cls();
+ lcd.printf("Dist.: ---", timer_ticks);
+ lcd.locate(0, 1);
+ lcd.printf("TIMEOUT");
+ }
+ }
+ timeout.detach();
+
+ wait_ms(100);
+
+ state = IDLE;
+ }
+}
+
+
+/*
+// A class for flip()-ing a DigitalOut
+class Flipper {
+public:
+ Flipper(PinName pin) : _pin(pin) {
+ _pin = 0;
+ }
+ void flip() {
+ _pin = !_pin;
+ }
+private:
+ DigitalOut _pin;
+};
+
+DigitalOut led1(LED1);
+Flipper f(LED2);
+Timeout t;
+
+int main() {
+ t.attach(&f, &Flipper::flip, 2.0); // the address of the object, member function, and interval
+
+ // spin in a main loop. flipper will interrupt it to call flip
+ while(1) {
+ led1 = !led1;
+ wait(0.2);
+ }
+}
+
+ */
\ No newline at end of file
diff -r 000000000000 -r 6fd0fbcfc7e1 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Dec 20 20:27:09 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/4336505e4b1c \ No newline at end of file