写一段-HC-SR04和lcd1602的超声波测距代码
时间: 2025-02-22 16:31:15 浏览: 39
当然可以。HC-SR04是一种常用的超声波传感器模块,而LCD1602是一个16x2字符液晶显示屏。这里提供一个基本的Python示例,假设我们正在使用Arduino作为主控制器:
```python
import RPi.GPIO as GPIO
import time
# HC-SR04设置
TRIG_PIN = 18
ECHO_PIN = 21
GPIO.setmode(GPIO.BCM) # 使用BCM编号模式
GPIO.setup(TRIG_PIN, GPIO.OUT)
GPIO.setup(ECHO_PIN, GPIO.IN)
# LCD1602设置
RS = 23
EN = 24
D4 = 25
D5 = 26
D6 = 19
D7 = 13
LCD_WIDTH = 16
LCD_LINE_1 = 0x80
LCD_LINE_2 = 0xC0
GPIO.setup(RS, GPIO.OUT)
GPIO.setup(EN, GPIO.OUT)
GPIO.setup(D4, GPIO.OUT)
GPIO.setup(D5, GPIO.OUT)
GPIO.setup(D6, GPIO.OUT)
GPIO.setup(D7, GPIO.OUT)
def send_cmd(cmd):
GPIO.output(RS, GPIO.LOW)
GPIO.output(EN, GPIO.HIGH)
GPIO.output([D4, D5, D6, D7], cmd & 0xFF)
time.sleep_us(3)
GPIO.output(EN, GPIO.LOW)
def send_data(data):
GPIO.output(RS, GPIO.HIGH)
GPIO.output(EN, GPIO.HIGH)
GPIO.output([D4, D5, D6, D7], data & 0xFF)
time.sleep_us(1)
GPIO.output(EN, GPIO.LOW)
def ultrasonic_distance():
GPIO.output(TRIG_PIN, False)
time.sleep_us(2)
GPIO.output(TRIG_PIN, True)
time.sleep_us(10)
GPIO.output(TRIG_PIN, False)
while GPIO.input(ECHO_PIN) == 0:
pulse_start_time = time.time()
while GPIO.input(ECHO_PIN) == 1:
pulse_end_time = time.time()
pulse_duration = pulse_end_time - pulse_start_time
distance_cm = (pulse_duration * 34300) / 2
return distance_cm
def display_distance(distance_cm):
send_cmd(LCD_LINE_1 | LCD_WIDTH)
send_data(ord('U'))
send_data(ord(':'))
send_data(int(distance_cm))
send_data(ord(' '))
try:
while True:
distance_cm = ultrasonic_distance()
if distance_cm < 200: # 距离太近,忽略测量结果
continue
display_distance(distance_cm)
time.sleep(1) # 每秒测量一次
except KeyboardInterrupt:
GPIO.cleanup()
阅读全文
相关推荐


















