Dit is de code:
import RPi.GPIO as GPIO
import time
import os
import sys
from subprocess import Popen
GPIO.setmode(GPIO.BCM)
GPIO.setup(2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
movie1 = ("/home/pi/Downloads/clip4.mp4")
last_state1 = True
input_state1 = True
quit_video = True
player = False
while True:
#Read states of inputs
input_state1 = GPIO.input(2)
#If GPIO(2) is shorted to ground
if input_state1 != last_state1:
if (player and not input_state1):
os.system('killall omxplayer.bin')
omxc = Popen(['omxplayer', '-b', movie1])
player = True
time.sleep(3600.0)
elif not input_state1:
omxc = Popen(['omxplayer', '-b', movie1])
player = True
#Set last_input states
last_state1 = input_state1
-------------
Kort samengevat speelt het filmpje volledig af, nadat een puls op de gpio komt. De 'time.sleep' heb ik erin geplaatst om valse triggers te negeren tijdens het afspelen. Het probleem is dat ik de film op een zelf gekozen moment wil kunnen resetten naar het begin. De code hiervoor staat klaar, met als enige verschil, dat het filmpje speelt zolang gpio verbonden is met ground. Indien het plc contact terug opent stopt de film, en zal opnieuw starten van zodra plc het contact terug sluit. deze code werkt perfect indien ik test met een drukknop, maar zodra de plc in het spel komt is het om zeep.
het aansluitschema is momenteel zo:

- pullup.png (2.5 KiB) Viewed 5596 times
de gebruikte plc is een siemens Logo. De uitgangen van de Logo sturen elk een relais aan, waarvan ik vervolgens de schakelcontacten gebruik.