HC-SR04

HC-SR04介绍

HC-SR04接线图

HC-SR04接线图

树莓派GPIO

树莓派Rpi.GPIO使用说明

Rpi.GPIO库官方网站:https://pypi.python.org/pypi/RPi.GPIO

作业1

结合1602LCD,将HC-SR04超声波传感器收集的距离数据显示到LCD上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import RPi.GPIO as GPIO
from time import sleep, time
import Adafruit_CharLCD as LCD

lcd = LCD.Adafruit_CharLCDPlate()

TRIG = 17
ECHO = 27

def checkdist():
GPIO.output(TRIG, GPIO.HIGH)
sleep(0.000015)
GPIO.output(TRIG, GPIO.LOW)
while not GPIO.input(ECHO):
pass
t1 = time()
while GPIO.input(ECHO):
pass
t2 = time()
# 声速为340m/s
return (t2 - t1) * 34000 / 2

GPIO.setmode(GPIO.BCM)
GPIO.setup(TRIG, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(ECHO, GPIO.IN)

try:
while True:
print('distance:%0.2fcm' % checkdist())
lcd.clear()
lcd.message('distance:\n%0.2fcm' % checkdist())
sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()

完整代码见:test_hcsr04_lcd.py

作业2

利用HC-SR04超声波传感器和1602LCD液晶显示屏,做一个小小的障碍报警装置(当前方50cm内有物体时,LCD显示警报信息,并将LED显示红色;否则显示安全,并将LED显示为绿色)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import RPi.GPIO as GPIO
from time import sleep, time
import Adafruit_CharLCD as LCD

lcd = LCD.Adafruit_CharLCDPlate()

TRIG = 17
ECHO = 27

def checkdist():
GPIO.output(TRIG, GPIO.HIGH)
sleep(0.000015)
GPIO.output(TRIG, GPIO.LOW)
while not GPIO.input(ECHO):
pass
t1 = time()
while GPIO.input(ECHO):
pass
t2 = time()
# 声速为340m/s
return (t2 - t1) * 34000 / 2

GPIO.setmode(GPIO.BCM)
GPIO.setup(TRIG, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(ECHO, GPIO.IN)

try:
while True:
dist = checkdist()
print(dist)
if dist < 50:
lcd.clear()
lcd.message('Dangerous!!!')
lcd.set_color(1, 0, 0)
else:
lcd.clear()
lcd.message('Safety!!!')
lcd.set_color(0, 1, 0)
sleep(0.5)
except KeyboardInterrupt:
GPIO.cleanup()

完整代码见:test_hcsr04_lcd_ring.py