本实验使用的是树莓派3的GPIO口连接:
原理图:
本实验代码使用的编译环境为Python↓
代码示例:
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
#南北灯接口对应GPIO
GREEN_A = 16
YELLOW_A = 18
RED_A = 7
#东西灯对应GPIO
GREEN_B = 32
YELLOW_B = 31
RED_B = 29
def LIANG_A():
GPIO.output(YELLOW_A, GPIO.HIGH)
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.LOW) # 南北红灯亮2秒
GPIO.output(YELLOW_B, GPIO.HIGH)
GPIO.output(GREEN_B, GPIO.LOW) # 东西绿灯亮2秒
GPIO.output(RED_B, GPIO.HIGH)
time.sleep(2)
GPIO.output(YELLOW_A, GPIO.HIGH)
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.LOW) # 南北红灯亮2秒
GPIO.output(YELLOW_B, GPIO.LOW) # 东西黄灯亮2秒
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.HIGH)
time.sleep(2)
#1黄灯闪烁
GPIO.output(YELLOW_B, GPIO.HIGH) # 东西黄灯不亮0.25秒
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(YELLOW_B, GPIO.LOW) # 东西黄灯亮0.25秒
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.HIGH)
time.sleep(0.25)
#2黄灯闪烁
GPIO.output(YELLOW_B, GPIO.HIGH) # 东西黄灯不亮0.25秒
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(YELLOW_B, GPIO.LOW) # 东西黄灯亮0.25秒
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.HIGH)
time.sleep(0.25)
#3黄灯闪烁
GPIO.output(YELLOW_B, GPIO.HIGH) # 东西黄灯不亮0.25秒
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(YELLOW_B, GPIO.HIGH) # 南北黄灯不亮0.25秒
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(YELLOW_B, GPIO.LOW) # 东西黄灯亮0.25秒
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.HIGH)
time.sleep(0.25)
#
GPIO.output(YELLOW_A, GPIO.HIGH)
GPIO.output(GREEN_A, GPIO.LOW) #南北绿灯亮2秒
GPIO.output(RED_A, GPIO.HIGH)
GPIO.output(YELLOW_B, GPIO.HIGH)
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.LOW) #东西红灯亮2秒
time.sleep(2)
GPIO.output(YELLOW_A, GPIO.LOW) #南北黄灯亮2秒
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.HIGH)
GPIO.output(YELLOW_B, GPIO.HIGH)
GPIO.output(GREEN_B, GPIO.HIGH)
GPIO.output(RED_B, GPIO.LOW)#东西红灯亮2秒
time.sleep(2)
#1黄灯闪烁
GPIO.output(YELLOW_A, GPIO.HIGH) # 南北黄灯不亮秒
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(YELLOW_A, GPIO.LOW) # 南北黄灯亮0.25秒
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.HIGH)
time.sleep(0.25)
#2黄灯闪烁
GPIO.output(YELLOW_A, GPIO.HIGH) # 南北黄灯不亮0.25秒
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(YELLOW_A, GPIO.LOW) # 南北黄灯亮0.25秒
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.HIGH)
time.sleep(0.25)
#3黄灯闪烁
GPIO.output(YELLOW_A, GPIO.HIGH) # 南北黄灯不亮0.25秒
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(YELLOW_A, GPIO.LOW) # 南北黄灯亮0.25秒
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(YELLOW_A, GPIO.HIGH) # 南北黄灯不亮0.25秒
GPIO.output(GREEN_A, GPIO.HIGH)
GPIO.output(RED_A, GPIO.HIGH)
time.sleep(0.25)
#
# 设置引脚模式并赋予初值
GPIO.setup(YELLOW_A, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(GREEN_A, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(RED_A, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(YELLOW_B, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(GREEN_B, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(RED_B, GPIO.OUT, initial=GPIO.HIGH)
try:
while True: #循环代码
LIANG_A()
except KeyboardInterrupt:
# print("stop by user!")
GPIO.cleanup() # 清除引脚状态,回收资源