#include <blinker.h>
#include <mapper.h>
int trigPin = 9;
int echoPin = 10;
int relayPin = 7;
int ledPin = 8;
blinker ourLED(ledPin);
mapper freqPerCm(0,400,200,700);
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(relayPin, OUTPUT);
ourLED.setOnOff(true);
}
// distance in cm
float doDistance(void) {
unsigned long duration;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
return(duration * 0.034 / 2);
}
void loop() {
float distance;
float period;
idle(); // Runs the magic..
distance = doDistance();
Serial.print("Distance: ");
Serial.println(distance);
// --- Control Relay ---
if(distance < 10) {
digitalWrite(relayPin, HIGH); // Relay ON
} else {
digitalWrite(relayPin, LOW); // Relay OFF
}
// --- Adjust LED Blinking Speed ---
period = freqPerCm.map(distance);
ourLED.setPeriod(period);
}