为了更新而更新,为了维持更新状态而更新。
向学生讲解用gpiozero库控制八段管和8x8共阳极LED光栅。 已经对各个LED的控制、RGB彩色灯珠的控制进行了说明。 对8段管进行说明很容易理解。 关于多个8级管进行说明有点麻烦。 而且,为了便于理解,LED点编制了演示程序,用于演示线扫描模式的变化过程,以及设定阳极高低管脚模式的变化。 8短数码管很简单,LED点有点复杂。
模拟阴极八级数码管
image.png
from turtle import *
速度(0) )。
sega=Turtle ()
sega.pu () )。
sega.goto (0,300 ) )。
w=150
h=20
defrect(t,flag=True,fill=False ) :
forIinrange(2) :
if fill:
t.begin_fill ()
if flag:
t.FD(w ) )。
叔叔(90 )。
t.FD(h ) )。
叔叔(90 )。
else:
t.FD(h ) )。
叔叔(90 )。
t.FD(w ) )。
叔叔(90 )。
if fill:
t.end_fill ()
sega.pd ()。
是rect(sega )
segg=Turtle ()
segg.pu () )。
segg.goto (0,120 ) )。
segg.pd () )。
是重置(segg )
segd=Turtle ()
segd.pu (
SEGD.goto(0,-65 ) )。
segd.pd ()
是RECT(segd )
segb=Turtle ()
segb.pu (
segb.goto (130,275 ) )。
segb.pd ()
rect(segb,False ) )。
segc=Turtle ()
segc.pu ()。
segc.goto (130,90 ) )。
segc.pd ()。
rect(segc,False ) ) )。
sege=Turtle ()
sege.pu () )。
sege.goto (0,90 ) )。
sege.pd () )。
rect(sege,False ) ) ) )。
segf=Turtle ()
segf.pu (
segf.goto (0,275 ) )。
segf.pd ()
rect(segf,False ) ) ) ) ) ) )。
segh=Turtle ()
segh.pu ()。
segh.goto (180,30 ) )。
segh.pd ()。
rect(segh,False ) ) )。
zero=[ 1,1,1,1,1,1,1,0,0 ]
one=[ 0,1,1,0,0,0,0,0 ]
two=[ 1,1,0,1,1,0,1,0 ]
three=[ 1,1,1,1,0,0,1,0 ]
our=[ 0,1,1,0,0,1,1,0 ]
five=[ 1,0,1,1,0,1,1,0 ]
segs=[sega,segb,segc,segd,sege,segf,segg,segh]
dirt=[True,False,False,True,False,False,True,False]
segs :
seg.speed(0) )。
forIinrange(8) :
if five[i]==1:
rect(segs[I],flag=dirt[i],fill=True ) )
else:
rect(segs[I],flag=dirt[i],fill=False ) )
image.png
模拟阳极8x8led点
image.png
from turtle import *
跟踪(40,2 ) )。
类led () :
def __init__(self,x,y,r=15 ) :
self.r=r
self.neg=0
self.pos=0
self.t=Turtle ()
self.t.pu (
self.t.goto(x,y ) )。
self.t.speed(0) )。
self.t.ht (
self.Setneg(self.neg ) )。
self.display (
defsetneg(self,value ) :
self.neg=value
self.display (
efdisplay(self ) :
if self.neg==1:
self.t.color () 0.4、0.4、0.4 )、)、0、0 ) )
else:
self.t.color ()、0.4、0.4、0.4 )、' white ' ) )。
self.t.begin_fill ()
self.t.pd ()
self.t.circle(self.r ) )。
self.t.pu (
self.t.end_fill ()
offx=-200
offy=200
leds=[]
gap=50
color () )、0.4、0.4 ) )
pu () )
GOTO(offx-gap/2,offy 3*gap/4 ) ) ) ) ) ) ) ) ) ) goto ) ) ) ) ) ) ) )。
pd () )
begin_fill ()
forIinrange(4) :
软盘(8* gap )
是rt(90 )
end_fill ()
#forrowinrange(8) :
## led_row=[]
#forcolinrange(8) :
#led=led(offxgap*col,offy - gap * row ) ) ) ) ) ) ) ) ) ) ) led=led ) ) ) ) ) ) 65 )
## # led.display (
#led_row.append(led(offx20*col,offy - 20 * row ) )
#leds.append(led_row ) )。
forjinrange(8) :
forIinrange(8) :
led=led(offxgap*I,offy - gap * j ) ) )。
leds.append(row )
from time import sleep
[ 0,0,0,0,0,0,0,0 ],
[ 0,1,1,0,0,1,1,0 ],
[ 1,1,1,1,1,1,1 ],
[ 1,1,1,1,1,1,1 ],
[ 0,1,1,1,1,1,1,0 ],
[ 0,0,1,1,1,1,0,0 ],
[ 0,0,0,1,1,0,0,0 ],
[ 0,0,0,0,0,0,0,0 ],
[ 0,0,0,0,0,0,0,0 ],
[ 0,0,0,0,0,0,0,0 ],
[ 0,1,1,0,0,1,1,0 ],
[ 1,1,1,1,1,1,1 ],
[ 1,1,1,1,1,1,1 ],
[ 0,1,1,1,1,1,1,0 ],
[ 0,0,1,1,1,1,0,0 ],
[ 0,0,0,1,1,0,0,0 ],
while True:
forrowinrange(8) :
forcolinrange(8) :
LEDs [ row ] [ col ].setneg [ heart [ row ] [ col ] ]
leds[row][col].display (
forrowinrange(8) :
forcolinrange(8) :
LEDs [ row ] [ col ].setneg [ heart _ sm [ row ] [ col ] ]
leds[row][col].display (
image.png
image.png
image.png