kopia lustrzana https://github.com/pimoroni/pimoroni-pico
104 wiersze
3.5 KiB
Python
104 wiersze
3.5 KiB
Python
|
import time
|
||
|
from galactic import GalacticUnicorn
|
||
|
|
||
|
gu = GalacticUnicorn()
|
||
|
|
||
|
|
||
|
c64 = [
|
||
|
" ",
|
||
|
" ",
|
||
|
" OOOOO OOOOOO OO OOOO OO OO XXXXXXX ",
|
||
|
" OO OO OO OOOO OO OO OO OO XXXXXXX ",
|
||
|
" OO OO OO OO OO OO OO OO OO XXXXXXX ",
|
||
|
" OOOOO OOOO OOOOOO OO OO OOOO XXXXXXX ",
|
||
|
" OOOO OO OO OO OO OO OO XXXXXXX ",
|
||
|
" OO OO OO OO OO OO OO OO OO XXXXXXX ",
|
||
|
" OO OO OOOOOO OO OO OOOO OO OO XXXXXXX ",
|
||
|
" XXXXXXX ",
|
||
|
" "
|
||
|
]
|
||
|
FOREGROUND_C64 = (230, 210, 250)
|
||
|
BACKGROUND_C64 = (20, 20, 120)
|
||
|
|
||
|
spectrum = [
|
||
|
" ",
|
||
|
" ",
|
||
|
" O OOOO OOOO OOOOO O O O O XXXXXXXX ",
|
||
|
" O O O O O O O O O O O X XXXXXX ",
|
||
|
" O O O O O O O X XXXXXX ",
|
||
|
" O O O OOOOOO O O X XXXXXX ",
|
||
|
" O O O O O O O X XXXXXX ",
|
||
|
" OOOOOO OOOO O O OOOOO X XXXXXX ",
|
||
|
" X X ",
|
||
|
" XXXXXXXX ",
|
||
|
" "
|
||
|
]
|
||
|
FOREGROUND_SPECTRUM = (0, 0, 0)
|
||
|
BACKGROUND_SPECTRUM = (180, 150, 150)
|
||
|
|
||
|
bbc_micro = [
|
||
|
" ",
|
||
|
" ",
|
||
|
" OOOOO OO OOOO OOO OOOO O ",
|
||
|
" O O O O O O O O O O ",
|
||
|
" O O O O O O O O ",
|
||
|
" OOOOO O O OOOO O O O ",
|
||
|
" O O OOOOOO O O O O ",
|
||
|
" O O O O O O O O O O ",
|
||
|
" OOOOO O O OOOO OOO OOOO O ",
|
||
|
" XXXXXXX ",
|
||
|
" "
|
||
|
]
|
||
|
FOREGROUND_BBC_MICRO = (255, 255, 255)
|
||
|
BACKGROUND_BBC_MICRO = (0, 0, 0)
|
||
|
|
||
|
PROMPT_C64 = 0
|
||
|
PROMPT_SPECTRUM = 1
|
||
|
PROMPT_BBC_MICRO = 2
|
||
|
prompt = 0
|
||
|
|
||
|
|
||
|
@micropython.native
|
||
|
def draw(image, fg, bg, time_ms):
|
||
|
for y in range(len(image)):
|
||
|
row = image[y]
|
||
|
for x in range(len(row)):
|
||
|
pixel = row[x]
|
||
|
# draw the prompt text
|
||
|
if pixel == 'O':
|
||
|
gu.set_pixel(x, y, fg[0], fg[1], fg[2])
|
||
|
|
||
|
# draw the caret blinking
|
||
|
elif pixel == 'X' and (time_ms // 300) % 2:
|
||
|
gu.set_pixel(x, y, fg[0], fg[1], fg[2])
|
||
|
|
||
|
else:
|
||
|
gu.set_pixel(x, y, bg[0], bg[1], bg[2])
|
||
|
|
||
|
|
||
|
gu.set_brightness(0.5)
|
||
|
|
||
|
while True:
|
||
|
|
||
|
time_ms = time.ticks_ms()
|
||
|
prompt = (time_ms // 3000) % 3
|
||
|
|
||
|
if gu.is_pressed(GalacticUnicorn.SWITCH_BRIGHTNESS_UP):
|
||
|
gu.adjust_brightness(+0.01)
|
||
|
|
||
|
if gu.is_pressed(GalacticUnicorn.SWITCH_BRIGHTNESS_DOWN):
|
||
|
gu.adjust_brightness(-0.01)
|
||
|
|
||
|
start = time.ticks_ms()
|
||
|
|
||
|
if prompt == PROMPT_C64:
|
||
|
draw(c64, FOREGROUND_C64, BACKGROUND_C64, time_ms)
|
||
|
|
||
|
elif prompt == PROMPT_SPECTRUM:
|
||
|
draw(spectrum, FOREGROUND_SPECTRUM, BACKGROUND_SPECTRUM, time_ms)
|
||
|
|
||
|
elif prompt == PROMPT_BBC_MICRO:
|
||
|
draw(bbc_micro, FOREGROUND_BBC_MICRO, BACKGROUND_BBC_MICRO, time_ms)
|
||
|
|
||
|
print("total took: {} ms".format(time.ticks_ms() - start))
|