#define SOUND_SPEED 0.034
int ledRed = 32;
int ledOrange1 = 33;
int ledOrange2 = 25;
int ledGreen1 = 26;
int ledGreen2 = 27;
int ledGreen3 = 14;
const int trigPin = 5;
const int echoPin = 18;
long duration;
float distanceCm;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(ledRed, OUTPUT);
pinMode(ledOrange1, OUTPUT);
pinMode(ledOrange2, OUTPUT);
pinMode(ledGreen1, OUTPUT);
pinMode(ledGreen2, OUTPUT);
pinMode(ledGreen3, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculate the distance
distanceCm = duration * SOUND_SPEED/2;
switch (int(distanceCm)) {
case 0 ... 10:
digitalWrite(ledRed, HIGH);
digitalWrite(ledOrange1, LOW);
digitalWrite(ledOrange2, LOW);
digitalWrite(ledGreen1, LOW);
digitalWrite(ledGreen2, LOW);
digitalWrite(ledGreen3, LOW);
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
break;
case 11 ... 20:
digitalWrite(ledRed, LOW);
digitalWrite(ledOrange1, HIGH);
digitalWrite(ledOrange2, LOW);
digitalWrite(ledGreen1, LOW);
digitalWrite(ledGreen2, LOW);
digitalWrite(ledGreen3, LOW);
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
break;
case 21 ... 30:
digitalWrite(ledRed, LOW);
digitalWrite(ledOrange1, LOW);
digitalWrite(ledOrange2, HIGH);
digitalWrite(ledGreen1, LOW);
digitalWrite(ledGreen2, LOW);
digitalWrite(ledGreen3, LOW);
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
break;
case 31 ... 40:
digitalWrite(ledRed, LOW);
digitalWrite(ledOrange1, LOW);
digitalWrite(ledOrange2, LOW);
digitalWrite(ledGreen1, HIGH);
digitalWrite(ledGreen2, LOW);
digitalWrite(ledGreen3, LOW);
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
break;
case 41 ... 50:
digitalWrite(ledRed, LOW);
digitalWrite(ledOrange1, LOW);
digitalWrite(ledOrange2, LOW);
digitalWrite(ledGreen1, HIGH);
digitalWrite(ledGreen2, HIGH);
digitalWrite(ledGreen3, LOW);
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
break;
case 51 ... 80:
digitalWrite(ledRed, LOW);
digitalWrite(ledOrange1, LOW);
digitalWrite(ledOrange2, LOW);
digitalWrite(ledGreen1, LOW);
digitalWrite(ledGreen2, HIGH);
digitalWrite(ledGreen3, HIGH);
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
break;
case 81 ... 400:
digitalWrite(ledRed, LOW);
digitalWrite(ledOrange1, LOW);
digitalWrite(ledOrange2, LOW);
digitalWrite(ledGreen1, HIGH);
digitalWrite(ledGreen2, HIGH);
digitalWrite(ledGreen3, HIGH);
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
break;
default:
digitalWrite(ledRed, LOW);
digitalWrite(ledOrange1, LOW);
digitalWrite(ledOrange2, LOW);
digitalWrite(ledGreen1, LOW);
digitalWrite(ledGreen2, LOW);
digitalWrite(ledGreen3, LOW);
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
break;
}
delay(100);
}