commit - a95202bac3e85ef9bcd0d844d5412ad53831b16c
commit + 4a4410927296c7f5cbcc93c3ca9db07c7b52e191
blob - f211938c51feaa91f77f2202114b4ae2b9e7ee19
blob + 27edab4823db3a3d4f60cdb9bf4552fabe8bdf4a
--- src/main.py
+++ src/main.py
import ledmatrix
import framebuf
+from hsvrgb import hsv_to_rgb565
+
class Display:
_buf = None
fb = None
return cet
+def rgb(r, g, b):
+ """RGB565 - (31,63,31)"""
+ return (r << 11) | (g << 5) | b
+
+
def main():
- (ssid, password) = credentials["network"]
+ try:
+ (ssid, password) = credentials["network"]
- nic = network.WLAN(network.STA_IF)
- if not nic.isconnected():
- nic.active(True)
- nic.connect(ssid, password)
- while not nic.isconnected():
- pass
- else:
- print("Already connected")
+ nic = network.WLAN(network.STA_IF)
+ if not nic.isconnected():
+ nic.active(True)
+ nic.connect(ssid, password)
+ tries = 10
+ while not nic.isconnected():
+ print(tries)
+ tries = tries - 1
+ if tries <= 0:
+ raise OSError
+ pass
+ print("NIC: connection established")
+ else:
+ print("NIC: already connected")
- print("Connection successful")
- print(nic.ifconfig())
+ print(nic.ifconfig())
- rtc = RTC()
- ntptime.settime()
- (year, month, day, weekday, hours, minutes, seconds, subseconds) = rtc.datetime()
- print("UTC Time: ")
- print((year, month, day, hours, minutes, seconds))
+ rtc = RTC()
+ ntptime.settime()
+ (year, month, day, weekday, hours, minutes, seconds, subseconds) = rtc.datetime()
+ print("UTC Time: ")
+ print((year, month, day, hours, minutes, seconds))
+ except OSError as e:
+ print(f"NIC: connection could not be established {e}")
# initialize the LED display
ledmatrix.init(io_colors=(25, 26, 27, 14, 12, 13),
ledmatrix.set_brightness(62)
display = Display()
- color = 0xffff
+ color = rgb(31, 63, 31)
+ w = 0.0
while True:
+ w = (w + 2) % 360
t = localtime()
(year, month, day, hour, minute, seconds) = t[0:6]
display.fb.fill(0)
- display.fb.rect(0, 0, 64, 64, 0xff20)
+ display.fb.rect(0, 0, 64, 64, rgb(31, 63, 0))
+
+ display.fb.rect(2, 2, 10, 10, rgb(31, 0, 0), True)
+ display.fb.rect(13, 2, 10, 10, rgb(0, 63, 0), True)
+ display.fb.rect(24, 2, 10, 10, rgb(0, 0, 31), True)
+ display.fb.rect(35, 2, 10, 10, hsv_to_rgb565(w/360.0, 1, 1), True)
+
display.fb.text(f"{day:02d}.{month:02d}.{str(year)[2:]}", 0, 24, color)
display.fb.text(f"{hour:02d}:{minute:02d}:{seconds:02d}", 0, 34, color)
display.show()
blob - /dev/null
blob + 5c936f0d0ba83b9788367a0bba670d6f83d99628 (mode 644)
--- /dev/null
+++ src/hsvrgb.py
+def rgb565(red, green, blue):
+ return (int(red / 255 * 31) << 11) | (int(green / 255 * 63) << 5) | (int(blue / 255 * 31))
+
+
+def hsv_to_rgb565(h: float, s: float, v: float) -> int:
+ if s:
+ if h == 1.0:
+ h = 0.0
+ i = int(h * 6.0)
+ f = h * 6.0 - i
+
+ w = int(255 * (v * (1.0 - s)))
+ q = int(255 * (v * (1.0 - s * f)))
+ t = int(255 * (v * (1.0 - s * (1.0 - f))))
+ v = int(255 * v)
+
+ if i == 0:
+ return rgb565(v, t, w)
+ if i == 1:
+ return rgb565(q, v, w)
+ if i == 2:
+ return rgb565(w, v, t)
+ if i == 3:
+ return rgb565(w, q, v)
+ if i == 4:
+ return rgb565(t, w, v)
+ if i == 5:
+ return rgb565(v, w, q)
+ else:
+ v = int(255 * v)
+ return rgb565(v, v, v)