Translated comments into English. Added serial display through PC using TeraTerm
Fork of Ultrasonico_HC-SR04 by
main.cpp@0:34f7d9ef2f4b, 2014-11-12 (annotated)
- Committer:
- icarobrito
- Date:
- Wed Nov 12 17:53:57 2014 +0000
- Revision:
- 0:34f7d9ef2f4b
- Child:
- 1:0244dd451883
Program using a HC-SR04 Ultrasonic Sensor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
icarobrito | 0:34f7d9ef2f4b | 1 | /* Programa para utilização do sensor Ultrasom |
icarobrito | 0:34f7d9ef2f4b | 2 | */ |
icarobrito | 0:34f7d9ef2f4b | 3 | /*Interrupções de pinos,só são possíveis nas portas A e D*/ |
icarobrito | 0:34f7d9ef2f4b | 4 | |
icarobrito | 0:34f7d9ef2f4b | 5 | #include "mbed.h" |
icarobrito | 0:34f7d9ef2f4b | 6 | |
icarobrito | 0:34f7d9ef2f4b | 7 | Serial pc(USBTX,USBRX); //Configuração da comunicação serial para enviar o valor do sensor |
icarobrito | 0:34f7d9ef2f4b | 8 | DigitalOut trig(PTE5,0); //Configuração do pino de Trigger |
icarobrito | 0:34f7d9ef2f4b | 9 | InterruptIn echo(PTA16); //Configuração da interrupção por pino de Echo |
icarobrito | 0:34f7d9ef2f4b | 10 | Timer tempo; |
icarobrito | 0:34f7d9ef2f4b | 11 | float tdist=0, distcm=0, distin=0, dist0=0; |
icarobrito | 0:34f7d9ef2f4b | 12 | |
icarobrito | 0:34f7d9ef2f4b | 13 | void iniP(){ //Rotina para receber o pulso inicial do pino Echo |
icarobrito | 0:34f7d9ef2f4b | 14 | tempo.start(); //Rotina para iniciar o contador |
icarobrito | 0:34f7d9ef2f4b | 15 | return; |
icarobrito | 0:34f7d9ef2f4b | 16 | } |
icarobrito | 0:34f7d9ef2f4b | 17 | |
icarobrito | 0:34f7d9ef2f4b | 18 | void finP(){ //Rotina para pegar o tempo final do pulso |
icarobrito | 0:34f7d9ef2f4b | 19 | |
icarobrito | 0:34f7d9ef2f4b | 20 | tdist = tempo.read_us(); //Leitura do tempo transcorrido |
icarobrito | 0:34f7d9ef2f4b | 21 | distcm = tdist/58; //Cálculo da distância detectada em "cm" |
icarobrito | 0:34f7d9ef2f4b | 22 | distin = tdist/148; //Cálculo da distância detectada em "in" |
icarobrito | 0:34f7d9ef2f4b | 23 | |
icarobrito | 0:34f7d9ef2f4b | 24 | tempo.stop(); //Páro o temporizador |
icarobrito | 0:34f7d9ef2f4b | 25 | tempo.reset(); //Reset para o próximo ciclo |
icarobrito | 0:34f7d9ef2f4b | 26 | return; |
icarobrito | 0:34f7d9ef2f4b | 27 | } |
icarobrito | 0:34f7d9ef2f4b | 28 | |
icarobrito | 0:34f7d9ef2f4b | 29 | |
icarobrito | 0:34f7d9ef2f4b | 30 | |
icarobrito | 0:34f7d9ef2f4b | 31 | int main(){ |
icarobrito | 0:34f7d9ef2f4b | 32 | |
icarobrito | 0:34f7d9ef2f4b | 33 | while(1){ |
icarobrito | 0:34f7d9ef2f4b | 34 | |
icarobrito | 0:34f7d9ef2f4b | 35 | trig=1; //Inicio do trigger |
icarobrito | 0:34f7d9ef2f4b | 36 | wait_us(10); // 10us de pulso |
icarobrito | 0:34f7d9ef2f4b | 37 | trig=0; //Fim do trigger |
icarobrito | 0:34f7d9ef2f4b | 38 | |
icarobrito | 0:34f7d9ef2f4b | 39 | echo.rise(&iniP); //leitura do inicio do pulso de retorno |
icarobrito | 0:34f7d9ef2f4b | 40 | echo.fall(&finP); //Leitura do final do pulso de retorno |
icarobrito | 0:34f7d9ef2f4b | 41 | |
icarobrito | 0:34f7d9ef2f4b | 42 | if(distcm != dist0){ //rotina para evitar que se envie muitos valores |
icarobrito | 0:34f7d9ef2f4b | 43 | dist0 = distcm; |
icarobrito | 0:34f7d9ef2f4b | 44 | printf("Distancia detectada pelo sensor %.2f cm \n",distcm); |
icarobrito | 0:34f7d9ef2f4b | 45 | } |
icarobrito | 0:34f7d9ef2f4b | 46 | wait_ms(60); //rotina para evitar que o pulso de "trigger" seja confundido com o "echo" |
icarobrito | 0:34f7d9ef2f4b | 47 | } |
icarobrito | 0:34f7d9ef2f4b | 48 | |
icarobrito | 0:34f7d9ef2f4b | 49 | |
icarobrito | 0:34f7d9ef2f4b | 50 | } |