110 lines
2.4 KiB
Python
110 lines
2.4 KiB
Python
|
#!/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()
|