1 sensor using RTOS Timer, another 2 over RTOS Semaphore

Dependents:   Autonomous_quadcopter

Fork of HCSR04 by Antoniolinux B.

Committer:
edy05
Date:
Thu Oct 26 15:54:16 2017 +0000
Revision:
1:53657de3246f
Parent:
0:86b2086be101
Child:
3:81512ca9a13c
hcsro4 runs in its own thread

Who changed what in which revision?

UserRevisionLine numberNew contents of line
antoniolinux 0:86b2086be101 1 /* File: HCSR04.h
antoniolinux 0:86b2086be101 2 * Author: Antonio Buonanno
antoniolinux 0:86b2086be101 3 *Board: STM NUCLEO F401RE,
antoniolinux 0:86b2086be101 4 *Hardware: Ultrasonic Range HC-SR04,
antoniolinux 0:86b2086be101 5 *
antoniolinux 0:86b2086be101 6 *This work derived from Arduino library,
antoniolinux 0:86b2086be101 7 *
antoniolinux 0:86b2086be101 8 * Desc: driver for HCSR04 Ultrasonic Range Finder. The returned range
antoniolinux 0:86b2086be101 9 * is in units of meters.
antoniolinux 0:86b2086be101 10 *
antoniolinux 0:86b2086be101 11 *
antoniolinux 0:86b2086be101 12 *
antoniolinux 0:86b2086be101 13 */
antoniolinux 0:86b2086be101 14
antoniolinux 0:86b2086be101 15 /* EXAMPLE
antoniolinux 0:86b2086be101 16 #include "mbed.h"
antoniolinux 0:86b2086be101 17 #include "hcsr04.h"
antoniolinux 0:86b2086be101 18
antoniolinux 0:86b2086be101 19 //D12 TRIGGER D11 ECHO
antoniolinux 0:86b2086be101 20 HCSR04 sensor(D12, D11);
antoniolinux 0:86b2086be101 21 int main() {
antoniolinux 0:86b2086be101 22 while(1) {
antoniolinux 0:86b2086be101 23
antoniolinux 0:86b2086be101 24 long distance = sensor.distance();
antoniolinux 0:86b2086be101 25 printf("distanza %d \n",distance);
antoniolinux 0:86b2086be101 26 wait(1.0); // 1 sec
antoniolinux 0:86b2086be101 27
antoniolinux 0:86b2086be101 28 }
antoniolinux 0:86b2086be101 29 }
antoniolinux 0:86b2086be101 30 */
antoniolinux 0:86b2086be101 31 #ifndef hcsr04_H
antoniolinux 0:86b2086be101 32 #define hcsr04_H
antoniolinux 0:86b2086be101 33 #include "mbed.h"
edy05 1:53657de3246f 34 #include "rtos.h"
antoniolinux 0:86b2086be101 35
antoniolinux 0:86b2086be101 36
antoniolinux 0:86b2086be101 37
antoniolinux 0:86b2086be101 38 class HCSR04 {
antoniolinux 0:86b2086be101 39 public:
antoniolinux 0:86b2086be101 40 HCSR04(PinName t, PinName e);
edy05 1:53657de3246f 41 uint16_t getDistance();
edy05 1:53657de3246f 42 uint16_t getDistan();
antoniolinux 0:86b2086be101 43
antoniolinux 0:86b2086be101 44 private:
edy05 1:53657de3246f 45 static void threadWorker(void const *p);
edy05 1:53657de3246f 46
antoniolinux 0:86b2086be101 47 DigitalOut trig;
antoniolinux 0:86b2086be101 48 DigitalIn echo;
antoniolinux 0:86b2086be101 49 Timer timer;
edy05 1:53657de3246f 50 Thread* thread;
edy05 1:53657de3246f 51 uint16_t distance_cm;
edy05 1:53657de3246f 52 uint32_t distan;
antoniolinux 0:86b2086be101 53 };
antoniolinux 0:86b2086be101 54
antoniolinux 0:86b2086be101 55 #endif