// https://wokwi.com/projects/349517308198126162
// https://forum.arduino.cc/t/sensor-for-car-lift/1058371
# define trigPin 13
# define echoPin 12
# define led 11
# define rele 10
# define buzzer 9
int buzzerState = 0;
unsigned long currentMillis;
unsigned long previousMillis;
const long interval = 777; // was 5000 - life too short!
void setup()
{
Serial.begin (115200); // it's 2022, not 1984
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
pinMode(rele, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop()
{
long distance;
distance = getEcho();
currentMillis = millis();
// check distance, set LED and relay and maybe launch a tone burst
if (distance < 10) {
if (buzzerState == 0) {
tone(buzzer, 1000); // hearing this better at 1000 Hz
buzzerState = 1; // no more tone until we've seen the distnace go > 10
previousMillis = currentMillis;
}
digitalWrite(led, HIGH);
digitalWrite(rele, LOW);
}
else {
// noTone(buzzer); would immediately stop buzzer
buzzerState = 0; // allow again the tone to trigger on
digitalWrite(led, LOW);
digitalWrite(rele, HIGH);
}
// always check to see if a tone burst has gone on long enough
if (currentMillis - previousMillis >= interval)
noTone(buzzer);
// print the distance occasionally
static unsigned long lastPrint;
if (currentMillis - lastPrint > 777) {
Serial.print(distance);
Serial.println(" cm");
lastPrint = currentMillis;
}
// delay(50); no delay is necessary. loop() is running at full speed.
}
long getEcho()
{
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;
return distance;
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
bz1:1
bz1:2
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
led1:A
led1:C
led2:A
led2:C
r2:1
r2:2
r3:1
r3:2