Particle: SR01 Ultrasonic Sensor

/* 
Ks0206 Keyestudio SR01 Ultrasonic Sensor
_________________________________
|  SETUP                          | 
|Sensor pin  ::    Particle pin   |
|   +        ::        3.3v       |
|   ECHO     ::        D0         |
|   TRIG     ::        D1         |
|   -        ::        GND        |
|_________________________________|
SPECIFICATIONS:
digital sensor
detects distance through echolation
uses a trigger pin that sends a sound wave and a receiver to detect objects proximity
value in cm
max Range 5m
min Range 2cm
src: https://wiki.keyestudio.com/Ks0206_Keyestudio_SR01_Ultrasonic_Sensor

GITHUB REPOSITORY:
https://github.com/apanin/ParticleKeyeStudio37sensorKitExamples
*/

#define echoPin D0 // Echo Pin
#define trigPin D1 // Trigger Pin
#define LEDPin D6 // Onboard LED

#define maximumRange 200
#define minimumRange 0
long duration, distance; // Duration used to calculate distance (time measure)

void setup() {
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
}

void loop() {
/* The following trigPin/echoPin cycle is used to determine the
 distance of the nearest object by bouncing soundwaves off of it. */ 
 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 

 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 digitalWrite(trigPin, LOW);

 duration = pulseIn(echoPin, HIGH);
 
 //Calculate the distance (in cm) based on the speed of sound.
 distance = duration/58.2;
 
 if (distance >= maximumRange || distance <= minimumRange){
 /* Send a negative number to computer and Turn LED ON 
 to indicate "out of range" */
 Serial.println("-1");
 digitalWrite(LEDPin, HIGH); 
 }
 else {
 /* Send the distance to the computer using Serial protocol, and
 turn LED OFF to indicate successful reading. */
 Serial.println(distance);
 digitalWrite(LEDPin, LOW); 
 }
 
 //Delay 50ms before next reading.
 delay(50);
}