# This script requires a Raspberry Pi 2, 3 or Zero. Circuit Python must # be installed and it is strongly recommended that you use the latest # release of Raspbian. import os import board import digitalio import pygame from tasko import Loop dirname = os.path.dirname(os.path.abspath(__file__)) button_pins = ['D23', 'D24', 'D25', 'D16', 'D26'] led_pins = ['D17', 'D27', 'D22', 'D5', 'D6'] sounds = ['walk', 'play', 'toby', 'potty', 'food'] buttons = [{} for i in range(len(button_pins))] for i, button in enumerate(buttons): pin = digitalio.DigitalInOut(getattr(board, button_pins[i])) pin.direction = digitalio.Direction.INPUT pin.pull = digitalio.Pull.UP button['button'] = pin pin = digitalio.DigitalInOut(getattr(board, led_pins[i])) pin.direction = digitalio.Direction.OUTPUT button['led'] = pin button['sound'] = sounds[i] pygame.mixer.init() pygame.mixer.music.load(dirname + "/hello.mp3") speakerVolume = "1" pygame.mixer.music.set_volume(float(speakerVolume)) pygame.mixer.music.play() async def blink(led): for n in range (5): led.value = True await loop.sleep(0.5) led.value = False await loop.sleep(0.5) def play(button): filename = button['sound'] + '.mp3' led = button['led'] pygame.mixer.music.load(os.path.join(dirname, filename)) pygame.mixer.music.play() loop.add_task(blink(led)) async def read_sensors(): for button in buttons: if not button['button'].value: play(button) loop = Loop() loop.schedule(hz=100, coroutine_function=read_sensors) loop.run()