树莓派用GPIO实现模拟交通红绿灯

需要准备的东西:

1.树莓派3b一台

2.杜邦线若干

3.发光led灯3个:红黄绿各一个

4.220Ω电阻一个

5.面包板一个

6.无源蜂鸣器一个(可选)

接线图:


使用python GPIO模块控制红黄绿灯交替闪烁:绿灯->黄灯->红灯时会有蜂鸣器报警

#!/usr/bin/python
#coding:utf-8

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.OUT)    #设置bcm26负责输出电压 红灯
GPIO.setup(19,GPIO.OUT)     #黄灯
GPIO.setup(13,GPIO.OUT)     #绿灯
GPIO.setup(6,GPIO.OUT)      #喇叭


def blink():
    #通过交替输出高低电频来是LED灯闪烁
    #红灯亮10s
    GPIO.output(26,GPIO.HIGH)
    time.sleep(10)
    GPIO.output(26,GPIO.LOW)
    time.sleep(0.5)
    #黄灯亮3s
    GPIO.output(19,GPIO.HIGH)
    time.sleep(3.0)
    GPIO.output(19,GPIO.LOW)
    time.sleep(0.5)
    
    # 绿灯亮10s
    GPIO.output(13,GPIO.HIGH)
    time.sleep(10)
    GPIO.output(13,GPIO.LOW)
    time.sleep(0.5)
    # 黄灯亮3s
    GPIO.output(19,GPIO.HIGH)
    time.sleep(3.0)
    GPIO.output(19,GPIO.LOW)
    GPIO.output(6,GPIO.HIGH)
    time.sleep(1.0)
    GPIO.output(6,GPIO.LOW)
    

#主程序
try:
    #循环执行
    while True:
        
            blink()

except KeyboardInterrupt:
    pass

GPIO.cleanup()









  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
树莓派交通红绿灯识别的Python实现代码如下: ```python import cv2 import numpy as np import RPi.GPIO as GPIO # 设置GPIO引脚 GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.OUT) # 设置GPIO11为绿灯输出 GPIO.setup(13, GPIO.OUT) # 设置GPIO13为红灯输出 # 加载红绿灯分类器模型 classifier = cv2.CascadeClassifier('traffic_light.xml') # 打开摄像头 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() # 读取摄像头画面 frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 通过分类器检测红绿灯区域 lights = classifier.detectMultiScale(frame_gray, scaleFactor=1.1, minNeighbors=5, minSize=(100, 100)) if len(lights) > 0: # 如果检测到红绿灯 GPIO.output(11, GPIO.HIGH) # 绿灯 GPIO.output(13, GPIO.LOW) # 红灯灭 else: # 如果未检测到红绿灯 GPIO.output(11, GPIO.LOW) # 绿灯GPIO.output(13, GPIO.HIGH) # 红灯 # 显示摄像头画面 cv2.imshow('Traffic Light Recognition', frame) # 按下q键退出程序 if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() # 释放摄像头 cv2.destroyAllWindows() # 关闭窗口 GPIO.cleanup() # 清除GPIO设置 ``` 这段代码使用了OpenCV库来处理图像,并通过分类器来检测摄像头画面中是否存在红绿灯区域。如果检测到红绿灯区域,则点绿灯并熄灭红灯;如果未检测到红绿灯区域,则熄灭绿灯并点红灯程序将通过树莓派GPIO口来控制交通灯的灭状态。同时,程序通过循环读取摄像头画面,并在窗口中显示实时画面。按下q键可以退出程序。最后,程序在关闭窗口时释放摄像头和清除GPIO设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值