Last active
April 15, 2020 17:15
-
-
Save oschettler/076fd16981a872c5416720b797b992fe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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