#Packet is arriving packet = Packet.from_stream(uart_service) if isinstance(packet, ButtonPacket) and packet.pressed: if packet.button == ButtonPacket.BUTTON_1: # Animation colors change to a random new value after every animation sequence random_color_mode = True elif packet.button == ButtonPacket.BUTTON_2: # Animation colors stay the same unless manually changed random_color_mode = False elif packet.button == ButtonPacket.BUTTON_3: # Stay on the same animation animations._advance_interval = None elif packet.button == ButtonPacket.BUTTON_4: # Auto-advance animations animations._advance_interval = seconds_per_animation*1000 elif packet.button == ButtonPacket.LEFT: # Go to first animation in the sequence animations.activate(0) elif packet.button == ButtonPacket.RIGHT: # Go to the next animation in the sequence animations.next() elif isinstance(packet, ColorPacket): animations.color = packet.color pulse.color = packet.color # temporarily change to pulse display to show off the new color current_display = pulse else: if not ble.advertising: ble.start_advertising(advertisement)
if not bolt_left.value and not bolt_left_state: bolt_left_state = True if not bolt_right.value and not bolt_right_state: bolt_right_state = True # if the left bolt is touched... if bolt_left.value and bolt_left_state: print("Touched left bolt!") # increase color array index by 1 c += 1 # reset debounce state bolt_left_state = False # if the right bolt is touched... if bolt_right.value and bolt_right_state: print("Touched right bolt!") # decrease color array index by 1 c -= 1 # reset debounce state bolt_right_state = False # if the color array index is bigger than 13... if c > 13: # reset it to 0 c = 0 # if the color array index is smaller than 0... if c < 0: # reset it to 13 c = 13 # update animation color to current array index pulse.color = colors[c] time.sleep(0.01)