def show_digit(val, xd, yd, r, g, b): offset = val * 15 for p in range(offset, offset + 15): xt = p % 3 yt = (p - offset) // 3 ledmatrix.set_pixel(xt + xd, 7 - yt - yd, r * NUMS[p], g * NUMS[p], b * NUMS[p]) ledmatrix.show()
def draw_battery_outline(): # Draw the naked battery for y in range(0, 6): ledmatrix.set_pixel(1, y, 64, 64, 255) ledmatrix.set_pixel(5, y, 64, 64, 255) for x in range(2, 5): ledmatrix.set_pixel(x, 0, 64, 64, 255) ledmatrix.set_pixel(x, 6, 192, 192, 192) ledmatrix.show()
def show_map(r, g, b): for x in range(0, 7): for y in range(0, 7): z = (float(y) + 7.0 * float(x)) / 49.0 rr = int(z * r) gg = int(z * g) bb = int(z * b) ledmatrix.set_pixel(x, y, rr, gg, bb) ledmatrix.show()
def flash_screen(rgb_tuple): for i in range(5): ledmatrix.set_all(rgb_tuple[0], rgb_tuple[1], rgb_tuple[2]) ledmatrix.show() sleep(0.2) ledmatrix.set_all(background_color[0], background_color[1], background_color[2]) ledmatrix.show() sleep(0.2)
def record(record_time, output_file, pause_time=1): print("Recording audio for " + str(record_time) + "s...") ledmatrix.set_all(255, 0, 0) ledmatrix.show() microphone.record() sleep(record_time) microphone.stop() ledmatrix.off() microphone.save(output_file, True) print("Saved to " + output_file) print("") pause(pause_time)
def update_battery_state(charging_state, capacity): r = 0 g = 0 b = 0 if charging_state == 0: if capacity < 11: r = 255 else: g = 255 elif charging_state == 1: r = 255 g = 225 cap = int(capacity / 20) + 1 if cap < 0: cap = 0 if cap > 5: cap = 5 if cap > 0: for y in range(1, cap + 1): ledmatrix.set_pixel(2, y, r, g, b) ledmatrix.set_pixel(3, y, r, g, b) ledmatrix.set_pixel(4, y, r, g, b) if cap == 0: cap = 1 if cap < 6: if (capacity < 50) and (charging_state == 0): # blinking warning for i in range(1, 3): for y in range(cap + 1, 6): ledmatrix.set_pixel(2, y, 0, 0, 0) ledmatrix.set_pixel(3, y, 0, 0, 0) ledmatrix.set_pixel(4, y, 0, 0, 0) ledmatrix.show() sleep(0.4) for y in range(cap + 1, 6): ledmatrix.set_pixel(2, y, 255, 0, 0) ledmatrix.set_pixel(3, y, 255, 0, 0) ledmatrix.set_pixel(4, y, 255, 0, 0) ledmatrix.show() sleep(0.4) else: for y in range(cap + 1, 6): ledmatrix.set_pixel(2, y, 0, 0, 0) ledmatrix.set_pixel(3, y, 0, 0, 0) ledmatrix.set_pixel(4, y, 0, 0, 0) ledmatrix.show() sleep(5) return 0
# Displays a single digit (0-9) def show_digit(val, xd, yd, r, g, b): offset = val * 15 for p in range(offset, offset + 15): xt = p % 3 yt = (p - offset) // 3 ledmatrix.set_pixel(xt + xd, 7 - yt - yd, r * NUMS[p], g * NUMS[p], b * NUMS[p]) ledmatrix.show() # Displays a two-digits positive number (0-99) def show_number(val, r, g, b): abs_val = abs(val) tens = abs_val // 10 units = abs_val % 10 if abs_val > 9: show_digit(tens, OFFSET_LEFT, OFFSET_TOP, r, g, b) show_digit(units, OFFSET_LEFT + 4, OFFSET_TOP, r, g, b) ledmatrix.rotation(0) ledmatrix.clear() for i in range(0, 100): show_number(i, 255, 255, 0) time.sleep(0.5) ledmatrix.clear() ledmatrix.show()