thread ultrasuoni
Dependencies: HCSR04 mbed-rtos mbed
main.cpp@0:6010d94e58c0, 2017-03-06 (annotated)
- Committer:
- Wonderjack996
- Date:
- Mon Mar 06 16:15:39 2017 +0000
- Revision:
- 0:6010d94e58c0
thread e ultrasuoni
;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Wonderjack996 | 0:6010d94e58c0 | 1 | /**************************************************** |
Wonderjack996 | 0:6010d94e58c0 | 2 | * FAST PROTOTYPING WITH NUCLEO * |
Wonderjack996 | 0:6010d94e58c0 | 3 | * Example Code 13: Ultrasound HCSR04 * |
Wonderjack996 | 0:6010d94e58c0 | 4 | * Author: Mauro D'Angelo * |
Wonderjack996 | 0:6010d94e58c0 | 5 | * Organization: Perlatecnica no-profit organization * |
Wonderjack996 | 0:6010d94e58c0 | 6 | *****************************************************/ |
Wonderjack996 | 0:6010d94e58c0 | 7 | |
Wonderjack996 | 0:6010d94e58c0 | 8 | #include "mbed.h" |
Wonderjack996 | 0:6010d94e58c0 | 9 | #include "hcsr04.h" |
Wonderjack996 | 0:6010d94e58c0 | 10 | #include "rtos.h" |
Wonderjack996 | 0:6010d94e58c0 | 11 | |
Wonderjack996 | 0:6010d94e58c0 | 12 | // Instanzio un oggetto di tipo HCSR04 ed assegno i pin di trigger e di echo |
Wonderjack996 | 0:6010d94e58c0 | 13 | HCSR04 sensor(PB_8, PB_9); |
Wonderjack996 | 0:6010d94e58c0 | 14 | HCSR04 sensor1(PA_5, PA_6); |
Wonderjack996 | 0:6010d94e58c0 | 15 | |
Wonderjack996 | 0:6010d94e58c0 | 16 | DigitalOut led(D11); |
Wonderjack996 | 0:6010d94e58c0 | 17 | |
Wonderjack996 | 0:6010d94e58c0 | 18 | // Serial |
Wonderjack996 | 0:6010d94e58c0 | 19 | Serial pc(USBTX, USBRX); |
Wonderjack996 | 0:6010d94e58c0 | 20 | |
Wonderjack996 | 0:6010d94e58c0 | 21 | int distanza; |
Wonderjack996 | 0:6010d94e58c0 | 22 | |
Wonderjack996 | 0:6010d94e58c0 | 23 | void thread(void const *args) { |
Wonderjack996 | 0:6010d94e58c0 | 24 | // Main loop |
Wonderjack996 | 0:6010d94e58c0 | 25 | while(1) { |
Wonderjack996 | 0:6010d94e58c0 | 26 | // Avvia un impulso della durata di 10us sul pin di trigger |
Wonderjack996 | 0:6010d94e58c0 | 27 | sensor.start(); |
Wonderjack996 | 0:6010d94e58c0 | 28 | |
Wonderjack996 | 0:6010d94e58c0 | 29 | // Aspetta prima della prossima lettura |
Wonderjack996 | 0:6010d94e58c0 | 30 | wait_ms(100); |
Wonderjack996 | 0:6010d94e58c0 | 31 | |
Wonderjack996 | 0:6010d94e58c0 | 32 | // Stampa sulla seriale la misura della distanza in cm |
Wonderjack996 | 0:6010d94e58c0 | 33 | distanza = sensor.get_dist_cm(); |
Wonderjack996 | 0:6010d94e58c0 | 34 | pc.printf("%dcm\r\n", distanza); |
Wonderjack996 | 0:6010d94e58c0 | 35 | } |
Wonderjack996 | 0:6010d94e58c0 | 36 | } |
Wonderjack996 | 0:6010d94e58c0 | 37 | |
Wonderjack996 | 0:6010d94e58c0 | 38 | int main() { |
Wonderjack996 | 0:6010d94e58c0 | 39 | // Fisso il baudrate |
Wonderjack996 | 0:6010d94e58c0 | 40 | pc.baud(9600); |
Wonderjack996 | 0:6010d94e58c0 | 41 | |
Wonderjack996 | 0:6010d94e58c0 | 42 | Thread th(thread); // Threads start here |
Wonderjack996 | 0:6010d94e58c0 | 43 | |
Wonderjack996 | 0:6010d94e58c0 | 44 | while(1){ |
Wonderjack996 | 0:6010d94e58c0 | 45 | if(distanza < 20) |
Wonderjack996 | 0:6010d94e58c0 | 46 | led = 1; |
Wonderjack996 | 0:6010d94e58c0 | 47 | else |
Wonderjack996 | 0:6010d94e58c0 | 48 | led = 0; |
Wonderjack996 | 0:6010d94e58c0 | 49 | } |
Wonderjack996 | 0:6010d94e58c0 | 50 | } |
Wonderjack996 | 0:6010d94e58c0 | 51 |