pixelserver2/apps/fibonacci-clock.py

110 lines
2.4 KiB
Python
Raw Normal View History

2024-10-28 17:10:03 +00:00
#!/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()