Files
matrixclock/matrixclock.py
2021-11-30 18:24:30 +02:00

74 lines
2.5 KiB
Python

import machine,neopixel
from time import sleep
words={"it":[0,1],
"is":[3,4],
"twenty":[6,11],
"-one":[13,15],
}
bigletters={"a":[0,2,4,6,8,10],
"b":[1,3,5,7,9,11],
}
class display(object):
"""Initialises a NeoPixel-String."""
def __init__(self,DataPin,Rows=1,Columns=17):
self.np=neopixel.NeoPixel(machine.Pin(DataPin),Rows*Columns)
self.number=Rows*Columns
self.Rows=Rows
self.Columns=Columns
def write(self,Pos,Colour=(0,0,0), Immediate=True):
"""write(Pos,Colour=(0,0,0), Immediate=True): Writes a colour (given as an RGB triplet) to the Pixel
at position 'Pos'. If 'Immediate' is set, change immediately, otherwise, wait until the display is
explicitly written or a write with 'Immediate' is called."""
if Pos >= self.number:
print("Out of range")
else:
self.np[Pos]=Colour
if Immediate:
self.np.write()
def clear(self,Immediate=True):
"""Clears all pixels"""
for i in range(self.number):
self.np[i]=(0,0,0)
if Immediate:
self.np.write()
def writeword(self,word,colour=(50,50,50)):
try:
Begin=words[word][0]
End=words[word][1]
print("Writing '%s' from %s to %s" % (word,Begin,End))
for i in range(Begin,End+1):
self.write(i,colour,False)
self.np.write()
except KeyError:
print("No such word")
def writesentence(self,sentence,color=(25,25,0)):
self.clear(Immediate=False)
for word in sentence.split(" "):
self.writeword(word,color)
def scrollleft(self):
for i in range(1,self.number):
if int(i/self.Columns) == int((i-1)/self.Columns):
self.np[i-1]=self.np[i]
self.np.write()
def scrollright(self):
self.np[0]=(0,0,0)
for i in range(self.number-1,0,-1):
if int(i/self.Columns) == int((i+1)/self.Columns):
self.np[i]=self.np[i-1]
self.np.write()
def Num2Column(self,Number):
return(Number-int(Number/self.Columns)*self.Columns)
def Num2Row(self,Number):
return(int(Number/self.Columns))