feat: 全量同步 254 个常用的 Arduino 扩展库文件
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user