Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int trigPin = 13;
- int echoPin = 12;
- int switchPin = 8;
- int maxDist = 200;// 3m
- int cutoff = 0;
- int absenseCounter = 0;
- int timeout = 10;
- int cycleTime = 1500; //ms between checks
- boolean active = false;
- void setup() {
- Serial.begin (9600);
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin, INPUT);
- pinMode(switchPin, OUTPUT);
- }
- void loop() {
- cutoff = map(analogRead(A5),0,1023,0,maxDist);
- long duration, distance;
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration = pulseIn(echoPin, HIGH);
- distance = (duration/2) / 29.1;
- Serial.print("(");
- Serial.print(cutoff);
- Serial.print(") ");
- Serial.print(distance);
- Serial.print(" cm");
- if (distance <= cutoff) {
- if( !active) {
- trigger();
- active = true;
- }
- absenseCounter = 0;
- Serial.println("");
- }else if (distance > cutoff || distance <= 0){
- Serial.println(" (Out of range)");
- if(++absenseCounter >= timeout && active) {
- trigger();
- active = false;
- }
- }
- delay(cycleTime);
- }
- void trigger() {
- digitalWrite(switchPin,HIGH);
- delay(20);
- digitalWrite(switchPin,LOW);
- Serial.println("TRIGGERING");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement