Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions keywords.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#######################################
# Datatypes (KEYWORD1)
#######################################

Ultrasonic KEYWORD1

#######################################
# Methods and Functions (KEYWORD2)
#######################################
read KEYWORD2
distanceRead KEYWORD2

#######################################
# Constants (LITERAL1)
#######################################
CM LITERAL1 Constants
INC LITERAL1 Constants

10 changes: 10 additions & 0 deletions library.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name=Ultrasonic
version=2.1.0
author=Erick Simões <erick.simoes@live.com>
maintainer=Erick Simões <erick.simoes@live.com>
sentence=Minimalist library for ultrasound module to Arduino
paragraph=Work with ultrasound module in a simple and light way. Compatible with the modules HC-SR04, Ping))) and Seeed Studio sensor. This library aims to resource efficiency and to simplify access to data.
category=Sensors
url=https://github.com/ErickSimoes/Ultrasonic
architectures=*
includes=Ultrasonic.h
1 change: 1 addition & 0 deletions repositories.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6506,3 +6506,4 @@ https://github.com/scheffield/sic45x-driver
https://github.com/GabyGold67/SevenSegDisplaysRTOSLib
https://github.com/randomouscrap98/arduboy_raycast
https://github.com/Xinyuan-LilyGO/LilyGo-AMOLED-Series.git
https://github.com/Subodh-roy2/test_libr
75 changes: 75 additions & 0 deletions src/Ultrasonic.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
* Ultrasonic.cpp
*
* Library for Ultrasonic Ranging Module in a minimalist way
*
* created 3 Apr 2014
* by Erick Simões (github: @ErickSimoes | twitter: @AloErickSimoes)
* modified 23 Jan 2017
* by Erick Simões (github: @ErickSimoes | twitter: @AloErickSimoes)
* modified 04 Mar 2017
* by Erick Simões (github: @ErickSimoes | twitter: @AloErickSimoes)
* modified 15 May 2017
* by Eliot Lim (github: @eliotlim)
* modified 10 Jun 2018
* by Erick Simões (github: @ErickSimoes | twitter: @AloErickSimoes)
* modified 14 Jun 2018
* by Otacilio Maia (github: @OtacilioN | linkedIn: in/otacilio)
*
* Released into the MIT License.
*/

#if ARDUINO >= 100
#include <Arduino.h>
#else
#include <WProgram.h>
#endif

#include "Ultrasonic.h"

Ultrasonic::Ultrasonic(uint8_t trigPin, uint8_t echoPin, unsigned long timeOut) {
trig = trigPin;
echo = echoPin;
threePins = trig == echo ? true : false;
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
timeout = timeOut;
}

unsigned int Ultrasonic::timing() {
if (threePins)
pinMode(trig, OUTPUT);

digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);

if (threePins)
pinMode(trig, INPUT);

previousMicros = micros();
while(!digitalRead(echo) && (micros() - previousMicros) <= timeout); // wait for the echo pin HIGH or timeout
previousMicros = micros();
while(digitalRead(echo) && (micros() - previousMicros) <= timeout); // wait for the echo pin LOW or timeout

return micros() - previousMicros; // duration
}

/*
* If the unit of measure is not passed as a parameter,
* sby default, it will return the distance in centimeters.
* To change the default, replace CM by INC.
*/
unsigned int Ultrasonic::read(uint8_t und) {
return timing() / und / 2; //distance by divisor
}

/*
* This method is too verbal, so, it's deprecated.
* Use read() instead.
*/
unsigned int Ultrasonic::distanceRead(uint8_t und) {
return read(und);
}
46 changes: 46 additions & 0 deletions src/Ultrasonic.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* Ultrasonic.h
*
* Library for Ultrasonic Ranging Module in a minimalist way
*
* created 3 Apr 2014
* by Erick Simões (github: @ErickSimoes | twitter: @AloErickSimoes)
* modified 23 Jan 2017
* by Erick Simões (github: @ErickSimoes | twitter: @AloErickSimoes)
* modified 04 Mar 2017
* by Erick Simões (github: @ErickSimoes | twitter: @AloErickSimoes)
* modified 15 May 2017
* by Eliot Lim (github: @eliotlim)
* modified 10 Jun 2018
* by Erick Simões (github: @ErickSimoes | twitter: @AloErickSimoes)
*
* Released into the MIT License.
*/

#ifndef Ultrasonic_h
#define Ultrasonic_h

/*
* Values of divisors
*/
#define CM 28
#define INC 71

class Ultrasonic {
public:
Ultrasonic(uint8_t sigPin) : Ultrasonic(sigPin, sigPin) {};
Ultrasonic(uint8_t trigPin, uint8_t echoPin, unsigned long timeOut = 20000UL);
unsigned int read(uint8_t und = CM);
unsigned int distanceRead(uint8_t und = CM) __attribute__ ((deprecated ("This method is deprecated, use read() instead.")));
void setTimeout(unsigned long timeOut) {timeout = timeOut;}

private:
uint8_t trig;
uint8_t echo;
boolean threePins = false;
unsigned long previousMicros;
unsigned long timeout;
unsigned int timing();
};

#endif // Ultrasonic_h