I am a newbie with Python 3 and I have been working on code that will play 4 different videos when one of the five assigned buttons is pressed, and 3 of the videos have timed blinking of LEDs using time.sleep(). I have all the timing working well; however I can not get one video to play/blink LEDs and then on another button do the same even if it interrupts the previous video/blinking. Once the button is pressed and the LEDs blink, they no longer blink if the video ends and the button is pressed again. The 5th button is set to kill the program (as emergency) but sometimes I have to perform "sudo killall omxplayer" manually from LXterminal. Plus I am receiving new errors with omxplayer.bin 'terminating on line 67' after OS upgrade. I need some assistance with coding this and what I may be missing or need to remove:
import RPi.GPIO as GPIO
import time,signal,sys,os
from omxplayer.player import OMXPlayer
def playerExit(code):
global command1
print('exit',code)
os.system(command1)
global videoPlaying
videoPlaying=False
def playVideo(video):
global player,videoPlaying
if player==None:
player = OMXPlayer(video, args=['--no-osd', '--no-keys',])
player.exitEvent += lambda _, exit_code: playerExit(exit_code)
if buttonVideo[1] == "/home/pi/Videos/noman.mp4":
time.sleep(164)
nomanh16()
nomanr16()
if buttonVideo[1] == "/home/pi/Videos/cobro.mp4":
time.sleep(45)
cobro1()
cobro2()
cobror1()
else:
player.load(video)
videoPlaying = True
def signalHandler(sig,frame):
print('Ctrl+C pressed')
os.system(command1)
sys.exit(0)
def quitPlayerLED():
global ledGPIO
for index in ledGPIO:
GPIO.output(index,GPIO.LOW)
if player != None:
player.exit()
def nomanh16():
for f in range(0,62):
GPIO.output(13,GPIO.HIGH) #<<< Turn ON LED
time.sleep(0.7) #<<< wait 1/8 of a second
GPIO.output(13,GPIO.LOW) #<<< Turn OFF LED
time.sleep(0.7) #<<< wait 1/8 of a second
def nomanr16():
for f in range(0,34):
GPIO.output(13,GPIO.HIGH)
GPIO.output(17,GPIO.HIGH)
GPIO.output(18,GPIO.HIGH)
GPIO.output(23,GPIO.HIGH)
time.sleep(0.7)
GPIO.output(13,GPIO.LOW)
GPIO.output(17,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
time.sleep(0.7)
def cobro1():
for f in range(0,28):
GPIO.output(13,GPIO.HIGH) #<<< Turn ON LED
time.sleep(0.6) #<<< wait 1/8 of a second
GPIO.output(13,GPIO.LOW) #<<< Turn OFF LED
time.sleep(0.6) #<<< wait 1/8 of a second
def cobro2():
for f in range(0,107):
if f >= 86:
time.sleep(0.4)
GPIO.output(17,GPIO.HIGH)
GPIO.output(18,GPIO.HIGH)
GPIO.output(23,GPIO.HIGH)
GPIO.output(13,GPIO.HIGH)
time.sleep(0.4)
GPIO.output(13,GPIO.LOW)
GPIO.output(17,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
time.sleep(0.4)
def cobror1():
for j in range(0,104):
if j >= 42:
GPIO.output(13,GPIO.HIGH)
GPIO.output(17,GPIO.HIGH)
GPIO.output(18,GPIO.HIGH)
GPIO.output(23,GPIO.HIGH)
time.sleep(0.7)
GPIO.output(13,GPIO.LOW)
GPIO.output(17,GPIO.LOW)
GPIO.output(18,GPIO.LOW)
GPIO.output(23,GPIO.LOW)
time.sleep(0.7)
# gpio,video/quit,blink T/F
buttonVideos = [[16,"/home/pi/Videos/noman.mp4",False],
[20,"/home/pi/Videos/cobro.mp4",False],
[26,"quit",False]]
ledGPIO = [13,17,18,23] #<==== LEDS
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
for index in ledGPIO:
GPIO.setup(index,GPIO.OUT)
GPIO.output(index,GPIO.LOW)
for buttonVideo in buttonVideos:
GPIO.setup(buttonVideo[0], GPIO.IN, pull_up_down=GPIO.PUD_UP)
signal.signal(signal.SIGINT,signalHandler)
command1 = "sudo killall omxplayer.bin"
player = None
videoPlaying = False
try:
while True:
# check buttons
for buttonVideo in buttonVideos:
if GPIO.input(buttonVideo[0]) == GPIO.LOW:
print(buttonVideo[0],'pressed')
if(buttonVideo[1] == "quit"):
quitPlayerLED()
else:
playVideo(buttonVideo[1])
break
except KeyboardInterrupt:
command1 = "sudo killall -s 9 omxplayer.bin"
os.system(command1)
os.system("exit")
except NameError as error:
command1 = "sudo killall -s 9 omxplayer.bin"
os.system(command1)
os.system("exit")
except TypeError as error:
command1 = "sudo killall -s 9 omxplayer.bin"
os.system(command1)
os.system("exit")
except Exception as exception:
command1 = "sudo killall -s 9 omxplayer.bin"
os.system(command1)
os.system("exit")