Hi,
ich habe an meinem Slider an den Schienenenden jeweils einen Endschalter verbaut. In offenen Zustand leuchtet für jeden der beiden Schalter eine grüne LED. Wird ein Endschalter geschlossen (der Schlitten hat mechanischen Kontakt zum Schalter und schließt diesen) leuchtet eine rote Led, der Thread mit der Motorsteuerung wird abgebrochen.
Code
...
# led / end switch part
import RPi.GPIO as GPIO
# set GPIO Layout
GPIO.setmode(GPIO.BOARD)
# set Pin 32 (BCM 12) as Input
GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
# set Pin 33 (BCM 13) as Input
GPIO.setup(33, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
# set Pin 36 (BCM 16) as Output
GPIO.setup(36, GPIO.OUT)
# set Pin 35 (BCM 19) as Output
GPIO.setup(35, GPIO.OUT)
# set Pin 38 (BCM 20) as Output
GPIO.setup(38, GPIO.OUT)
# set Pin 40 (BCM 21) as Output
GPIO.setup(40, GPIO.OUT)
...
while running:
# Process touchscreen input
while True:
if GPIO.input(32):
(GPIO.output(35, GPIO.HIGH), GPIO.output(40, GPIO.LOW))
else:
(GPIO.output(35, GPIO.LOW), GPIO.output(40, GPIO.HIGH))
if GPIO.input(33):
(GPIO.output(36, GPIO.HIGH), GPIO.output(38, GPIO.LOW))
else:
(GPIO.output(36, GPIO.LOW), GPIO.output(38, GPIO.HIGH))
for event in pygame.event.get():
if event.type == QUIT:
GPIO.cleanup()
running = False
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
GPIO.cleanup()
running = False
if(event.type is MOUSEBUTTONDOWN):
pos = pygame.mouse.get_pos()
for b in buttons[screenMode]:
if b.selected(pos):
break
elif(event.type is MOUSEBUTTONUP):
motorRunningS = 0
myMotorS.run(Adafruit_MotorHAT.RELEASE)
....
Alles anzeigen
Jetzt fällt mir auf, dass die grünen LED (bei offenen Endschaltern sollten die eigentlich dauerhaft leuchten) zwischendurch mal ausgehen und die roten LED kurz aufblitzen, was natürlich meinen Thread stoppt. Daher meine Frage: sind die OnBoard PullDown Widerstände des Pi unzuverlässig? Oder was könnte hier noch als Ursache in Betracht kommen?
Danke!