Translated comments into English. Added serial display through PC using TeraTerm
Fork of Ultrasonico_HC-SR04 by
Revision 1:0244dd451883, committed 2015-07-14
- Comitter:
- nmoorthy2001
- Date:
- Tue Jul 14 09:32:34 2015 +0000
- Parent:
- 0:34f7d9ef2f4b
- Commit message:
- Translated the comments into English
Changed in this revision
TextLCD.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 34f7d9ef2f4b -r 0244dd451883 TextLCD.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Tue Jul 14 09:32:34 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
diff -r 34f7d9ef2f4b -r 0244dd451883 main.cpp --- a/main.cpp Wed Nov 12 17:53:57 2014 +0000 +++ b/main.cpp Tue Jul 14 09:32:34 2015 +0000 @@ -1,50 +1,73 @@ -/* Programa para utilização do sensor Ultrasom -*/ -/*Interrupções de pinos,só são possíveis nas portas A e D*/ +/* Program for using Ultrasonic Sensor - Modified by Moorthy Muthukrishnan. + April 2015. */ +/* Trigger is supplied through Port E, Pin 5 for sending the pulse + Uses interrupt in Port A, pin 16 to determine the pulse width */ #include "mbed.h" - - Serial pc(USBTX,USBRX); //Configuração da comunicação serial para enviar o valor do sensor - DigitalOut trig(PTE5,0); //Configuração do pino de Trigger - InterruptIn echo(PTA16); //Configuração da interrupção por pino de Echo - Timer tempo; - float tdist=0, distcm=0, distin=0, dist0=0; +#include "TextLCD.h" - void iniP(){ //Rotina para receber o pulso inicial do pino Echo - tempo.start(); //Rotina para iniciar o contador - return; - } - - void finP(){ //Rotina para pegar o tempo final do pulso + Serial pc(USBTX,USBRX); //Serial port to communicate with the PC + TextLCD lcd(PTA13, PTD5, PTD0, PTD1, PTD2, PTD3, TextLCD::LCD16x2); // RS, E, D4-D7 + DigitalOut trig(PTE5,0); //Configuring the pin for Trigger + InterruptIn echo(PTA16); //Configuring the pin for Echo + Timer temp; + float tdist=0, distcm=0, distin=0, dist0=0; - tdist = tempo.read_us(); //Leitura do tempo transcorrido - distcm = tdist/58; //Cálculo da distância detectada em "cm" - distin = tdist/148; //Cálculo da distância detectada em "in" - - tempo.stop(); //Páro o temporizador - tempo.reset(); //Reset para o próximo ciclo - return; - } +// Function for starting the timer to mark the first edge of echo +void iniP() +{ + temp.start(); + return; +} + +//Function for stopping the timer to mark the end of echo pulse +void finP() +{ + + tdist = temp.read_us(); //Read the timer in Microseconds + distcm = tdist/58; //Calculate the distance in "cm" + distin = tdist/148; //Calculate the distance in "inch" - - - int main(){ + temp.stop(); //Stop the timer + temp.reset(); //Reset the timer + return; +} + +int main() +{ + pc.printf("Starting the Distance sensor\n"); + lcd.locate(0, 0); + lcd.printf("Distance sensor\n"); - while(1){ + while(1) + { + trig=1; //make the trigger = 1 + wait_us(10); // 10us pulse + trig=0; //Make trigger = 0 - trig=1; //Inicio do trigger - wait_us(10); // 10us de pulso - trig=0; //Fim do trigger + echo.rise(&iniP); //Rising edte of the pulse + echo.fall(&finP); //Falling edge of the pulse - echo.rise(&iniP); //leitura do inicio do pulso de retorno - echo.fall(&finP); //Leitura do final do pulso de retorno - - if(distcm != dist0){ //rotina para evitar que se envie muitos valores - dist0 = distcm; - printf("Distancia detectada pelo sensor %.2f cm \n",distcm); + // display the distance in cm + if(distcm != dist0) + { + dist0 = distcm; + if (distcm < 3000.0) + { + pc.printf("Distance detected by the sensor %.2f cm \n\n",distcm); + lcd.locate(0,1); + lcd.printf("Distance=%.2fcm\n", distcm); } - wait_ms(60); //rotina para evitar que o pulso de "trigger" seja confundido com o "echo" + else + { + pc.printf("Error in distance measurement \n\n"); + lcd.locate(0,1); + lcd.printf("Error\n"); + } } + wait_ms(3000); //Wait before sending the next pulse + } - - } \ No newline at end of file +} + +// End of main \ No newline at end of file