#include <LiquidCrystal.h>
LiquidCrystal lcd(PA6, PA5, PA4, PA3, PA2, PA1);
const int trigP = PB8;
const int echoP = PB9;
long duration;
int distanceCm;
float distanceM;
void setup() {
lcd.begin(16, 2);
lcd.print(" US Range Meter ");
lcd.setCursor(0, 1);
lcd.print("Cm:"); // Cm label at column 0 of row 1
pinMode(trigP, OUTPUT);
pinMode(echoP, INPUT);
delay(1000);
}
void loop() {
digitalWrite(trigP, LOW);
delayMicroseconds(2);
digitalWrite(trigP, HIGH);
delayMicroseconds(10);
digitalWrite(trigP, LOW);
duration = pulseIn(echoP, HIGH);
distanceCm = duration * 0.034 / 2;
distanceM = distanceCm / 100.0; // Convert to meters
// Clear only the number part of the display to avoid flickering
lcd.setCursor(3, 1);
lcd.print(" ");
lcd.setCursor(7, 1);
lcd.print(" ");
lcd.setCursor(11, 1);
lcd.print(" ");
// Print cm value
lcd.setCursor(3, 1);
lcd.print(distanceCm);
lcd.print(" ");
// Print m value (at column 11, row 1)
lcd.setCursor(11, 1);
lcd.print("M:");
lcd.print(distanceM, 2); // 2 decimal places for meter
delay(1000);
}
Loading
stm32-bluepill
stm32-bluepill