[Tutor] Python GPIO Code Help Needed
I have been working on a piece of code that I got from another tutorial. The code polls the GPIO pins on a Raspberry Pi. When it detects a switch being flipped, it plays a corresponding audio file. My problem is, if the switch remains flipped, the audio repeats again and again. What I would like to do is when a switch is flipped have the audio play, then have the code pause until the switch is returned to normal (not repeating the audio), and then return to the while loop to poll for the next switch flip. I am apparently not smart enough to figure out the correct code. I really need some help with this and I would appreciate any assistance. Here is the code I'm working with. #!/usr/bin/env python from time import sleep import os import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.IN) GPIO.setup(24, GPIO.IN) GPIO.setup(25, GPIO.IN) while True: if ( GPIO.input(23) == False ): os.system('mpg321 -g 95 a.mp3') if ( GPIO.input(24) == False ): os.system('mpg321 -g 95 b.mp3') if ( GPIO.input(25)== False ): os.system('mpg321 -g 95 c.mp3') sleep(1.1); ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Python GPIO Code Help Needed
Thanks to everyone for the help. The code below seems to work. My question is why does oldstates need to multiplied by 32? Does this mean that the code will only work for 32 switches before I have to reset the Pi? Code: #!/usr/bin/env python from time import sleep import os import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.IN) GPIO.setup(24, GPIO.IN) GPIO.setup(25, GPIO.IN) oldstates=[True]*32 def changed(channel): newstate = GPIO.input(channel) change = oldstates[channel] and not newstate oldstates[channel] = newstate return change while True: if changed(23): os.system('mpg321 -g 95 a.mp3') if changed(24): os.system('mpg321 -g 95 b.mp3') if changed(25): os.system('mpg321 -g 95 c.mp3') sleep(1.1);___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor
[Tutor] Python GPIO Code Help Needed
Thanks to all for the help. The code below seems to work. My question is why does oldstates need to be multiplied by 32? Does this means the code will only read 32 switch changes? That would be a problem. Code: #!/usr/bin/env python from time import sleep import os import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.IN) GPIO.setup(24, GPIO.IN) GPIO.setup(25, GPIO.IN) oldstates=[True]*32 def changed(channel): newstate = GPIO.input(channel) change = oldstates[channel] and not newstate oldstates[channel] = newstate return change while True: if changed(23): os.system('mpg321 -g 95 a.mp3') if changed(24): os.system('mpg321 -g 95 b.mp3') if changed(25): os.system('mpg321 -g 95 c.mp3') sleep(1.1);___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor