Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ViliusKraujutis/2bf2e7d2ba1f91b50dcb to your computer and use it in GitHub Desktop.
Save ViliusKraujutis/2bf2e7d2ba1f91b50dcb to your computer and use it in GitHub Desktop.
Test script to try PIR sensor and Ultrasonic distance measure. Here distance measure method uses precalculated constant 29.1 which is 1 divided by sound speed. Would be good to update this formula to use actual air temperature to measure distance more precisely.
const int pirLedPin = 31;
const int distanceLedPin = 32;
const int pirPin = 33;
const int echoPin = 22;
const int trigPin = 24;
const int distanceMeasureTimeout = 1000;
long lastDistanceMeasureTimestamp = 0;
void setup() {
Serial.begin(9600);
pinMode(pirLedPin, OUTPUT);
pinMode(distanceLedPin, OUTPUT);
pinMode(pirPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.println("Started");
}
void loop() {
if (digitalRead(pirPin) == HIGH) {
digitalWrite(pirLedPin, HIGH);
} else {
digitalWrite(pirLedPin, LOW);
}
int distance = measureDistance(trigPin, echoPin);
if (distance == -1) {
// timeout - do nothing
} else if (distance <= 0 || distance > 200) {
Serial.print("Out of range: ");
Serial.println(distance);
digitalWrite(distanceLedPin, LOW);
} else {
Serial.print("Distance: ");
Serial.println(distance);
if (distance < 100) {
digitalWrite(distanceLedPin, HIGH);
} else {
digitalWrite(distanceLedPin, LOW);
}
}
}
float measureDistance(const int trigPin, const int echoPin) {
long duration;
digitalWrite(trigPin, LOW);
if (millis() - lastDistanceMeasureTimestamp < distanceMeasureTimeout) {
return -1; // can't measure right now;
}
lastDistanceMeasureTimestamp = millis();
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
return duration / 2 / 29.1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment