Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Binary Clock Matrix Animation
#1
Slightly different from the Binary Epoch animation. This one creates a Binary-Coded Decimal clock on a matrix. The animation takes up a 6x4 grid of pixels. The On and Off colors can be specified, as well as the x/y offset (where the top left corner of that 6x4 grid will be located).

[Image: BCDClockAnim.jpg]

Code (added to matrixanimations.py):

Code:
class MatrixBinaryClock(BaseMatrixAnim):

   def __init__(self, led, onColor, offColor, origX, origY):
       super(MatrixBinaryClock, self).__init__(led)
       self._onColor = onColor
       self._offColor = offColor
       self._origX = origX
       self._origY = origY

   def step(self, amt = 1):
       self._led.all_off()
       
       a = "" + time.ctime()
       
       b = bin(128+int(a[11]))        
       for i in range (2):
           if b[6+i+2] == '0':
               self._led.set(self._origX, 2+i+self._origY, self._offColor)
           else:
               self._led.set(self._origX, 2+i+self._origY, self._onColor)
               
       b = bin(128+int(a[12]))        
       for i in range (4):
           if b[6+i] == '0':
               self._led.set(self._origX+1, i+self._origY, self._offColor)
           else:
               self._led.set(self._origX+1, i+self._origY, self._onColor)
               
       b = bin(128+int(a[14]))        
       for i in range (3):
           if b[6+i+1] == '0':
               self._led.set(self._origX+2, 1+i+self._origY, self._offColor)
           else:
               self._led.set(self._origX+2, 1+i+self._origY, self._onColor)
               
       b = bin(128+int(a[15]))        
       for i in range (4):
           if b[6+i] == '0':
               self._led.set(self._origX+3, i+self._origY, self._offColor)
           else:
               self._led.set(self._origX+3, i+self._origY, self._onColor)
               
       b = bin(128+int(a[17]))        
       for i in range (3):
           if b[6+i+1] == '0':
               self._led.set(self._origX+4, 1+i+self._origY, self._offColor)
           else:
               self._led.set(self._origX+4, 1+i+self._origY, self._onColor)
               
       b = bin(128+int(a[18]))        
       for i in range (4):
           if b[6+i] == '0':
               self._led.set(self._origX+5, i+self._origY, self._offColor)
           else:
               self._led.set(self._origX+5, i+self._origY, self._onColor)
                     
       self._step = 0

Usage example:
Code:
anim = MatrixBinaryClock(led, onColor=colors.Red, offColor=colors.Blue, origX=1, origY=2)
anim.run(fps=5, max_steps=60)


Forum Jump:


Users browsing this thread: 1 Guest(s)