Skip to content

Instantly share code, notes, and snippets.

@oschettler
Last active April 15, 2020 17:15
Show Gist options
  • Save oschettler/076fd16981a872c5416720b797b992fe to your computer and use it in GitHub Desktop.
Save oschettler/076fd16981a872c5416720b797b992fe to your computer and use it in GitHub Desktop.
# Send a message to one of three friends, or all of them at once
from gpiozero import Button, LED, PWMLED
from time import time, sleep
from gpiozero.pins.pigpio import PiGPIOFactory
factory = PiGPIOFactory(host='raspberrypi')
me = "Lena"
friends = [
"+++ALL+++",
"Luzie",
"Daniel",
"Amélie"
]
messages = [
"I am bored",
"Call me!",
"Let's meet in video chat"
]
friend_selected = 0
press_count = 0
press_timeout = 0
led_pins = [17, 27, 22]
leds = []
btn_select = Button(23,
pull_up=True,
bounce_time=0.1,
pin_factory=factory)
btn_confirm = Button(24,
pull_up=True,
bounce_time=0.1,
pin_factory=factory)
def send_message(friend_selected, press_count):
print(
"\nSend", '"' + messages[press_count - 1] + '"',
"to", friends[friend_selected])
def select_friend():
global friend_selected, leds, press_timeout
if press_timeout > 0:
send_message(friend_selected, press_count)
return
if friend_selected > 0:
friend_selected -= 1
else:
friend_selected = len(friends) - 1
print(friends[friend_selected], "selected")
for led in leds:
led.off()
del led
leds = []
if friend_selected == 0:
for led_pin in led_pins:
led = PWMLED(led_pin, pin_factory=factory)
leds.append(led)
for led in leds:
led.blink(0.1, 0.1, 0, 0, 3)
else:
led_pin = led_pins[friend_selected - 1]
led = PWMLED(led_pin, pin_factory=factory)
led.blink(0.1, 0.1, 0, 0, 3)
leds.append(led)
btn_select.when_pressed = select_friend
def count_presses():
global press_count, press_timeout
press_count += 1
if press_count > len(messages):
press_count = 1
print("\n{} presses".format(press_count))
press_timeout = time() + 5
btn_confirm.when_pressed = count_presses
now = round(time())
while True:
if press_timeout > 0:
if round(time()) > now:
print(".", end='', flush=True)
now = round(time())
if time() > press_timeout:
press_count = 0
press_timeout = 0
print("Presses reset")
sleep(0.1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment