Biblioteca para uso do ultrassom HC-SR04
Dependents: Sonar-HC-SR04 CarrinhoLabirinto Nucleo_Us_ticker_20160803 ProjetoSO ... more
HCSR04.cpp
00001 /** 00002 * @author Nestor Pereira-Neto Team: SalvadorEngenharia 00003 * 00004 * @section LICENSE 00005 * 00006 * Copyright (c) 2010 ARM Limited 00007 * 00008 * Permission is hereby granted, free of charge, to any person obtaining a copy 00009 * of this software and associated documentation files (the "Software"), to deal 00010 * in the Software without restriction, including without limitation the rights 00011 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00012 * copies of the Software, and to permit persons to whom the Software is 00013 * furnished to do so, subject to the following conditions: 00014 * 00015 * The above copyright notice and this permission notice shall be included in 00016 * all copies or substantial portions of the Software. 00017 * 00018 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00019 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00020 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00021 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00022 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00023 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00024 * THE SOFTWARE. 00025 * 00026 * @section DESCRIPTION 00027 * 00028 * Biblioteca para uso do sonar HC-SR04, possui rotinas para permitir medições 00029 * de distências retornado valores em centímetros, polegadas ou o tempo 00030 * percorrido pelo som (em microsegundos). 00031 * Esta biblioteca pode ser usada com qualquer pino do microcontrolador. 00032 */ 00033 00034 00035 #include "HCSR04.h" 00036 #include "mbed.h" 00037 00038 00039 HCSR04::HCSR04(PinName trigger, PinName echo) : _t(trigger), _e(echo) { 00040 wait(0.1); 00041 } 00042 00043 float HCSR04::getCm(void){ 00044 distcm = readEcho()/58; 00045 return distcm; 00046 } 00047 00048 float HCSR04::getIn(void){ 00049 distin = readEcho()/148; 00050 return distin; 00051 } 00052 00053 float HCSR04::readEcho(void){ 00054 _t=1; //Inicio do trigger 00055 wait_us(10); //10us de pulso 00056 _t=0; //Fim do trigger 00057 while(!_e); 00058 _tempo.start(); 00059 while(_e); 00060 tdist = _tempo.read_us(); //Leitura do tempo transcorrido 00061 _tempo.stop(); //Paro o temporizador 00062 _tempo.reset(); //Reset para o próximo ciclo 00063 return tdist; 00064 }
Generated on Tue Jul 12 2022 21:12:29 by 1.7.2