thread ultrasuoni

Dependencies:   HCSR04 mbed-rtos mbed

Committer:
Wonderjack996
Date:
Mon Mar 06 16:15:39 2017 +0000
Revision:
0:6010d94e58c0
thread e ultrasuoni
;

Who changed what in which revision?

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