基于树莓派的交通灯设计

基于树莓派的交通灯设计

    • 步骤(对新手,老油条可跳过)
    • 二极管电路设计
    • 二位数码管原理图
    • 万能板原理图
    • 树莓派引脚原理图
    • 红外传感器原理图
    • 蜂鸣器原理图
    • 总体框架图
    • 源码
    • 效果图

原创,第一条博客文章,希望对你有帮助

步骤(对新手,老油条可跳过)

  1. 可先用protues软件使用c81,c52,c51模拟一遍交通灯过程,网上很多资源,自行百度。
  2. 使用万能板布置线路
  3. 在树莓派里编写代码
    cd mkdir lq
    vim.tiny led.py
    写入代码
    第一次新建.py的话有一些系统可能加权限
    chmod 744 led.py
    python led.py

二极管电路设计

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n9xxreaF-1621815736471)()]东西灯接线设计/南北灯接法一样

二位数码管原理图

在这里插入图片描述

万能板原理图

在这里插入图片描述

树莓派引脚原理图

在这里插入图片描述
BCM模式引脚 树莓派与万能板对应引脚设计
1 VCC
4 R1
17 Y1
27 G1
22 R2
5 Y2
6 G2
13 A
19 B
26 C
18 D
23 E
24 F
25 G
12 DIG1
16 DIG2
20 DIG3
21 DIG4
ID_SC Key1
7 Key2
8 Key3
14 Beep_in
15 Beep_out

红外传感器原理图

在这里插入图片描述

蜂鸣器原理图

在这里插入图片描述

总体框架图

在这里插入图片描述

源码

import RPi.GPIO as GPIO
import timeF=False
T=True
dx_red=4
dx_yellow=17
dx_green=27nb_red=22
nb_yellow=5
nb_green=6
beep_in=14
beep_out=15key1=1
key2=7
key3=8LED_A=13
LED_B=19
LED_C=26
LED_D=18
LED_E=23
LED_F=24
LED_G=25
LED_pins = [LED_A,LED_B,LED_C,LED_D,LED_E,LED_F,LED_G]DIG1=12
DIG2=16
DIG3=20
DIG4=21
All_dig  = [DIG1,DIG2,DIG3,DIG4]
All_pins = [LED_A,LED_B,LED_C,LED_D,LED_E,LED_F,LED_G,DIG1,DIG2,DIG3,DIG4]#Pin Setup:
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(dx_red,GPIO.OUT)
GPIO.setup(dx_yellow,GPIO.OUT)
GPIO.setup(dx_green,GPIO.OUT)
GPIO.setup(nb_red,GPIO.OUT)
GPIO.setup(nb_yellow,GPIO.OUT)
GPIO.setup(nb_green,GPIO.OUT)GPIO.setup(beep_in,GPIO.IN)
GPIO.setup(beep_out,GPIO.OUT)GPIO.setup(key1,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(key2,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(key3,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)GPIO.add_event_detect(key1,GPIO.RISING,bouncetime=200)
GPIO.add_event_detect(key2,GPIO.RISING,bouncetime=200)
GPIO.add_event_detect(key3,GPIO.RISING,bouncetime=200)GPIO.setup(All_pins,GPIO.OUT)zero = [F,F,F,F,F,F,T]
one  = [T,F,F,T,T,T,T]
two  = [F,F,T,F,F,T,F]
three= [F,F,F,F,T,T,F]
four = [T,F,F,T,T,F,F]
five = [F,T,F,F,T,F,F]
six  = [F,T,F,F,F,F,F]
seven= [F,F,F,T,T,T,T]
eight= [F,F,F,F,F,F,F]
nine = [F,F,F,F,T,F,F]
ff   = [T,T,T,T,T,T,T]dug  = [zero,one,two,three,four,five,six,seven,eight,nine,ff]
dug_s= [zero,one,two,three,four,five,six,seven,eight]dx_time =15
nb_time =20
dx_s    =0
flag_q  =1
flag_p  =1
flag_nb =1
flag_dx =1
flag_dx_nb=0
cnt     =1
flag_500ms=1
flag_l  =1
flag_e  =1
flag_5s =1
flag_2s =1
flag_3s =1
flag_key1=1
flag_key2=1
flag_key3=1
flag_lock=1
flag_k1=1
flag_k2=1
flag_k3=1
flag_key11=0
flag_key22=0
flag_key33=0def beep():global flag_3sglobal flag_5sglobal dx_sglobal cntglobal flag_beepwhile GPIO.input((beep_in))==False:if(flag_beep==1):GPIO.output(beep_out,GPIO.LOW)if(cnt>=5000):cnt=1jian()if(dx_s<=5):flag_5s=flag_5s+1flag_3s=flag_3s+1jiaotongdeng_dis()display()def detct():global flag_3sif(GPIO.input(beep_in))==False:print("someone isclosing")beep()else:GPIO.output(beep_out,GPIO.HIGH)if(flag_3s>3):print("noanybody")flag_3s=1def smg_dig_switch(ll):if(ll==0):GPIO.output(DIG1,T)elif(ll==1):GPIO.output(DIG2,T)elif(ll==2):GPIO.output(DIG3,T)elif(ll==3):GPIO.output(DIG4,T)
def display():global cntglobal flag_lockglobal flag_key11global flag_key22global flag_key33global flag_k1global flag_k2global flag_k3global flag_500msglobal flag_5si=0while(i<4):GPIO.output(DIG1,F)GPIO.output(DIG2,F)GPIO.output(DIG3,F)GPIO.output(DIG4,F)GPIO.output(LED_pins,dug[10])smg_dig_switch(i)GPIO.output(LED_pins,dug_s[i])i=i+1time.sleep(0.0002)cnt=cnt+1flag_500ms=flag_500ms+1def jian():global nb_timeglobal dx_timeglobal flag_qglobal flag_pglobal dx_sglobal flag_dx_nbglobal flag_key1global flag_key2global flag_key3nb_time =nb_time-1dx_time =dx_time-1dx_s    =dx_s-1if(dx_time==0):if(flag_q==1):dx_time=nb_timeflag_q=0dx_s=dx_timeelse:nb_time=15dx_time=20flag_q =1dx_s=nb_timeflag_dx_nb=1if(nb_time==0):if(flag_p==1):nb_time=dx_timeflag_p =0dx_s=nb_timeelse:nb_time=20dx_time=15flag_p=1dx_s=dx_timeflag_dx_nb=0def jiaotongdeng_dis():global dx_sglobal flag_dx_nbglobal nb_timeglobal dx_timeglobal flag_dxglobal flag_qglobal flag_pglobal flag_500msglobal flag_nbglobal dx_redglobal dx_greenglobal dx_yellowglobal nb_redglobal nb_greenglobal nb_yellowglobal flag_5sdug_s[0]=dug[nb_time%10]dug_s[1]=dug[nb_time/10]dug_s[2]=dug[dx_time/10]dug_s[3]=dug[dx_time%10]if(flag_dx_nb==0):if(dx_s>5):GPIO.output(dx_green,F)GPIO.output(dx_yellow,T)GPIO.output(dx_red,T)GPIO.output(nb_green,T)GPIO.output(nb_yellow,T)GPIO.output(nb_red,F)elif(dx_s<=5):if(flag_5s<7):GPIO.output(nb_red,F)elif(flag_5s>=7):GPIO.output(dx_red,T)GPIO.output(dx_green,T)GPIO.output(nb_green,T)GPIO.output(nb_yellow,T)if(flag_500ms<=5000):GPIO.output(dx_yellow,F)elif(flag_500ms>5000):GPIO.output(dx_yellow,T)if(flag_500ms>10000):flag_500ms=0elif(flag_5s>11):flag_5s=0if(flag_dx_nb==1):if(dx_s>5):GPIO.output(dx_red,F)GPIO.output(dx_green,T)GPIO.output(dx_yellow,T)GPIO.output(nb_red,T)GPIO.output(nb_green,F)GPIO.output(nb_yellow,T)elif(dx_s<=5):if(flag_5s<7):GPIO.output(dx_red,F)elif(flag_5s>=7):GPIO.output(dx_red,F)GPIO.output(dx_green,T)GPIO.output(dx_yellow,T)GPIO.output(nb_red,T)GPIO.output(nb_green,T)if(flag_500ms<=5000):GPIO.output(nb_yellow,F)elif(flag_500ms>5000):GPIO.output(nb_yellow,T)if(flag_500ms>10000):flag_500ms=1elif(flag_5s>11):flag_5s=0
def key1_dis():dug_s[0]=dug[0]dug_s[1]=dug[0]dug_s[2]=dug[0]dug_s[3]=dug[0]display()GPIO.output(dx_yellow,F)GPIO.output(dx_red,T)GPIO.output(dx_green,T)GPIO.output(nb_yellow,F)GPIO.output(nb_red,T)GPIO.output(nb_green,T)
def key2_dis():dug_s[0]=dug[9]dug_s[1]=dug[9]dug_s[2]=dug[0]dug_s[3]=dug[0]display()GPIO.output(dx_yellow,T)GPIO.output(dx_red,T)GPIO.output(dx_green,F)GPIO.output(nb_yellow,T)GPIO.output(nb_red,F)GPIO.output(nb_green,T)
def key3_dis():dug_s[0]=dug[0]dug_s[1]=dug[0]dug_s[2]=dug[9]dug_s[3]=dug[9]display()GPIO.output(dx_yellow,T)GPIO.output(dx_red,F)GPIO.output(dx_green,T)GPIO.output(nb_yellow,T)GPIO.output(nb_red,T)GPIO.output(nb_green,F)
def key1_1():print("key1")
def key3_1():print("key3")
def key2_1():print("key2")
try:dx_s=dx_timewhile (1):t=2if t==1:if GPIO.event_detected(key1):if(flag_key1==1):key1_1()flag_key1=2elif(flag_key1==2):key1_2()flag_key1=1detct()print('open2')if t==2:if(flag_k1==1):if GPIO.event_detected(key1):if(flag_key1==1):key1_1()flag_key1=2flag_lock=0flag_key11=1flag_k2=0flag_k3=0elif(flag_key1==2):flag_key1=1flag_lock=1flag_k2=1flag_k3=1flag_key11=0if(flag_k2==1):if GPIO.event_detected(key2):if(flag_key2==1):key2_1()flag_key22=1flag_key2=2flag_lock=0flag_k1=0flag_k3=0elif(flag_key2==2):flag_key2=1flag_lock=1flag_k1=1flag_k3=1flag_key22=0if(flag_k3==1):if GPIO.event_detected(key3):if(flag_key3==1):key3_1()flag_key33=1flag_k2=0flag_k1=0flag_lock=0flag_key3=2elif(flag_key3==2):flag_key33=0flag_k2=1flag_k1=1flag_lock=1flag_key3=1if(flag_key11==1):key1_dis()if(flag_key22==1):key2_dis()if(flag_key33==1):key3_dis()if(flag_lock==1):if(cnt>=5000):cnt=1jian()if(dx_s<=5):flag_5s=flag_5s+1flag_2s=flag_2s+1flag_3s=flag_3s+1jiaotongdeng_dis()GPIO.output(LED_pins,dug[10])display()detct()
except KeyboardInterrupt:passGPIO.cleanup()

效果图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部