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))