sync with current state
This commit is contained in:
109
apps/fibonacci-clock.py
Executable file
109
apps/fibonacci-clock.py
Executable file
@@ -0,0 +1,109 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
import os
|
||||
from time import strftime
|
||||
import time
|
||||
from math import ceil
|
||||
|
||||
#Nx = int(sys.argv[1])
|
||||
#Ny = int(sys.argv[2])
|
||||
#param = sys.argv[3]
|
||||
Nx = 80
|
||||
Ny = 40
|
||||
|
||||
|
||||
buffer = bytearray(b"\x00"*(3*Nx*Ny))
|
||||
|
||||
def SetPixel(x, y, r, g, b):
|
||||
idx = 3*(x+Nx*y)
|
||||
buffer[idx+0] = r
|
||||
buffer[idx+1] = g
|
||||
buffer[idx+2] = b
|
||||
|
||||
def two(r,g,b):
|
||||
for y in range (1,15):
|
||||
for x in range (9,23):
|
||||
SetPixel(x,y,r,g,b)
|
||||
|
||||
def three(r,g,b):
|
||||
for y in range (17,39):
|
||||
for x in range (9,31):
|
||||
SetPixel(x,y,r,g,b)
|
||||
|
||||
def one(r,g,b):
|
||||
for y in range (1,7):
|
||||
for x in range (25,31):
|
||||
SetPixel(x,y,r,g,b)
|
||||
|
||||
def one_one(r,g,b):
|
||||
for y in range (9,15):
|
||||
for x in range (25,31):
|
||||
SetPixel(x,y,r,g,b)
|
||||
|
||||
def five(r,g,b):
|
||||
for y in range (1,39):
|
||||
for x in range (33,71):
|
||||
SetPixel(x,y,r,g,b)
|
||||
|
||||
def and_gate(hourcol, mincol):
|
||||
if hourcol and mincol:
|
||||
return 'y'
|
||||
if hourcol:
|
||||
return 'r'
|
||||
if mincol:
|
||||
return 'g'
|
||||
if not hourcol and not mincol:
|
||||
return 'b'
|
||||
|
||||
def get_colsquares(hour, minute):
|
||||
coldict = {
|
||||
0: [0, 0, 0, 0, 0],
|
||||
1: [0, 0, 0, 0, 1],
|
||||
2: [0, 0, 0, 1, 1],
|
||||
3: [0, 0, 1, 1, 0],
|
||||
4: [0, 0, 1, 1, 1],
|
||||
5: [0, 1, 1, 0, 0],
|
||||
6: [0, 1, 1, 1, 0],
|
||||
7: [0, 1, 1, 1, 1],
|
||||
8: [1, 1, 0, 0, 0],
|
||||
9: [1, 1, 0, 1, 0],
|
||||
10: [1, 1, 1, 0, 0],
|
||||
11: [1, 1, 1, 1, 0],
|
||||
12: [1, 1, 1, 1, 1]
|
||||
}
|
||||
|
||||
i = 0
|
||||
result = []
|
||||
while i < 5:
|
||||
result.append( and_gate(coldict[hour][i], coldict[minute][i]) )
|
||||
i += 1
|
||||
return result
|
||||
|
||||
def gettime():
|
||||
hour = int(strftime('%I'))
|
||||
minute12 = ceil(int(strftime('%M'))/5.0)
|
||||
minute = int(strftime('%M'))
|
||||
|
||||
return hour, minute12, minute
|
||||
|
||||
while True:
|
||||
rgbw = {
|
||||
'r' : (255, 0, 0),
|
||||
'g' : (0, 255, 0),
|
||||
'b' : (0, 0, 255),
|
||||
'y' : (255, 255, 0)
|
||||
}
|
||||
|
||||
hour, minute12, minute = gettime()
|
||||
colsq = get_colsquares(hour, minute12)
|
||||
|
||||
|
||||
five(rgbw[colsq[0]][0],rgbw[colsq[0]][1],rgbw[colsq[0]][2])
|
||||
three(rgbw[colsq[1]][0],rgbw[colsq[1]][1],rgbw[colsq[1]][2])
|
||||
two(rgbw[colsq[2]][0],rgbw[colsq[2]][1],rgbw[colsq[2]][2])
|
||||
one_one(rgbw[colsq[3]][0],rgbw[colsq[3]][1],rgbw[colsq[3]][2])
|
||||
one(rgbw[colsq[4]][0],rgbw[colsq[4]][1],rgbw[colsq[4]][2])
|
||||
|
||||
os.write(1, buffer)
|
||||
time.sleep(1)
|
||||
#grid()
|
Reference in New Issue
Block a user