diff --git a/python_payload/main.py b/python_payload/main.py index b8fbae8a5188bc7c21169bc0027044ec1f610c94..f886ff4fa6821e43dcb1f078037a0fbc9f327430 100644 --- a/python_payload/main.py +++ b/python_payload/main.py @@ -1,5 +1,6 @@ from machine import Pin from hardware import * +import utils import time import cap_touch_demo import melodic_demo @@ -27,9 +28,6 @@ SELECT_TEXT = [ ] BACKGROUND_COLOR = 0 -GREEN = 0b0000011111100000 -RED = 0b1111100000000000 -BLUE = 0b0000000000011111 # pin numbers # right side: left 37, down 0, right 35 @@ -37,84 +35,37 @@ BLUE = 0b0000000000011111 # NOTE: All except for 0 should be initialized with Pin.PULL_UP # 0 (bootsel) probably not but idk? never tried -def clear_all_leds(): - for i in range(40): - set_led_rgb(i, 0, 0, 0) - update_leds() - -def draw_text_big(text, x, y): - ypos = 120+int(len(text)/2) + int(y) - xpos = 120+int(len(text[0])/2) + int(x) - for l, line in enumerate(text): - for p, pixel in enumerate(line): - if(pixel == '#'): - display_draw_pixel(xpos - 2*p, ypos - 2*l, RED) - display_draw_pixel(xpos - 2*p, ypos - 2*l-1, BLUE) - display_draw_pixel(xpos - 2*p-1, ypos - 2*l, BLUE) - display_draw_pixel(xpos - 2*p-1, ypos - 2*l-1, RED) - -def highlight_bottom_petal(num, RED, GREEN, BLUE): - start = 4 + 8*num - for i in range(7): - set_led_rgb(((i+start)%40), RED, GREEN, BLUE) - update_leds() - -def long_bottom_petal_captouch_blocking(num, ms): - if(get_captouch((num*2) + 1) == 1): - time.sleep_ms(ms) - if(get_captouch((num*2) + 1) == 1): - return True - return False - -def draw_rect(x,y,w,h,col): - for j in range(w): - for k in range(h): - display_draw_pixel(x+j,y+k,col) - -def draw_volume_slider(): - global volume - length = 96 + ((volume - 20) * 1.6) - if length > 96: - length = 96 - if length < 0: - length = 0 - length = int(length) - draw_rect(70,20,100,10,GREEN) - draw_rect(71,21,98,8, 0) - draw_rect(72+96-length,22,length,6,GREEN) - - def run_menu(): global foreground display_fill(BACKGROUND_COLOR) - draw_text_big(SELECT_TEXT, 0, 0) - draw_volume_slider() + utils.draw_text_big(SELECT_TEXT, 0, 0) + utils.draw_volume_slider(volume) display_update() selected_petal = None selected_module = None for petal, module in enumerate(MODULES): - if long_bottom_petal_captouch_blocking(petal, 20): + if utils.long_bottom_petal_captouch_blocking(petal, 20): selected_petal = petal selected_module = module break if selected_petal is not None: - clear_all_leds() - highlight_bottom_petal(selected_petal, 55, 0, 0) + utils.clear_all_leds() + utils.highlight_bottom_petal(selected_petal, 55, 0, 0) display_fill(BACKGROUND_COLOR) display_update() foreground = selected_module.run time.sleep_ms(100) - clear_all_leds() + utils.clear_all_leds() selected_module.foreground() def foreground_menu(): - clear_all_leds() - highlight_bottom_petal(0,0,55,55); - highlight_bottom_petal(1,55,0,55); + utils.clear_all_leds() + utils.highlight_bottom_petal(0,0,55,55); + utils.highlight_bottom_petal(1,55,0,55); display_fill(BACKGROUND_COLOR) - draw_text_big(SELECT_TEXT, 0, 0) + utils.draw_text_big(SELECT_TEXT, 0, 0) display_update() def set_rel_volume(vol): diff --git a/python_payload/utils.py b/python_payload/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..52b2b00f509c8a66ab0328fe396598dd63d2ef6c --- /dev/null +++ b/python_payload/utils.py @@ -0,0 +1,51 @@ +import time +from hardware import * + +RED = 0b1111100000000000 +GREEN = 0b0000011111100000 +BLUE = 0b0000000000011111 + +def clear_all_leds(): + for i in range(40): + set_led_rgb(i, 0, 0, 0) + update_leds() + +def draw_text_big(text, x, y): + ypos = 120+int(len(text)/2) + int(y) + xpos = 120+int(len(text[0])/2) + int(x) + for l, line in enumerate(text): + for p, pixel in enumerate(line): + if(pixel == '#'): + display_draw_pixel(xpos - 2*p, ypos - 2*l, RED) + display_draw_pixel(xpos - 2*p, ypos - 2*l-1, BLUE) + display_draw_pixel(xpos - 2*p-1, ypos - 2*l, BLUE) + display_draw_pixel(xpos - 2*p-1, ypos - 2*l-1, RED) + +def highlight_bottom_petal(num, RED, GREEN, BLUE): + start = 4 + 8*num + for i in range(7): + set_led_rgb(((i+start)%40), RED, GREEN, BLUE) + update_leds() + +def long_bottom_petal_captouch_blocking(num, ms): + if(get_captouch((num*2) + 1) == 1): + time.sleep_ms(ms) + if(get_captouch((num*2) + 1) == 1): + return True + return False + +def draw_rect(x,y,w,h,col): + for j in range(w): + for k in range(h): + display_draw_pixel(x+j,y+k,col) + +def draw_volume_slider(volume): + length = 96 + ((volume - 20) * 1.6) + if length > 96: + length = 96 + if length < 0: + length = 0 + length = int(length) + draw_rect(70,20,100,10,GREEN) + draw_rect(71,21,98,8, 0) + draw_rect(72+96-length,22,length,6,GREEN)