#include #include #define SOUND_SPEED 0.034 #define TIMEOUT 30000 const int trigPinL = 2; const int echoPinL = 3; const int trigPinR = 7; const int echoPinR = 8; long durationL, durationR; float distanceCmL, distanceCmR; LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { Serial.begin(115200); pinMode(trigPinL, OUTPUT); pinMode(echoPinL, INPUT); pinMode(trigPinR, OUTPUT); pinMode(echoPinR, INPUT); lcd.init(); // initialize the LCD lcd.clear(); // clear the LCD display lcd.backlight(); // Make sure backlight is on lcd.setCursor(0, 0); lcd.print("Starting..."); lcd.clear(); delay(1000); } void loop() { digitalWrite(trigPinL, LOW); delayMicroseconds(2); digitalWrite(trigPinL, HIGH); delayMicroseconds(10); digitalWrite(trigPinL, LOW); durationL = pulseIn(echoPinL, HIGH, TIMEOUT); distanceCmL = (durationL > 0) ? (durationL * SOUND_SPEED / 2) : -1; delay(50); digitalWrite(trigPinR, LOW); delayMicroseconds(2); digitalWrite(trigPinR, HIGH); delayMicroseconds(10); digitalWrite(trigPinR, LOW); durationR = pulseIn(echoPinR, HIGH, TIMEOUT); distanceCmR = (durationR > 0) ? (durationR * SOUND_SPEED / 2) : -1; Serial.println("Distance (cm):"); Serial.print("Right: "); Serial.println(distanceCmR); Serial.print("Left: "); Serial.println(distanceCmL); char buffer[7]; lcd.setCursor(0, 0); lcd.print("L:"); dtostrf(distanceCmL, 6, 2, buffer); lcd.setCursor(3, 0); lcd.print(buffer); lcd.setCursor(10, 0); lcd.print("cm"); lcd.setCursor(0, 1); lcd.print("R:"); dtostrf(distanceCmR, 6, 2, buffer); lcd.setCursor(3, 1); lcd.print(buffer); lcd.setCursor(10, 1); lcd.print("cm"); delay(200); }