Bill Bright <wcb_...@bellsouth.net> Wrote in message: > 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 > >
So what you're saying is that you want t do an action anytime you notice a change in the input state from True to False. So you just need to store the old state in your own variable. Whever old is True and new is False, perform the action. In your initialization, create a new list of bools, length at least 26. oldstates = [True] * 32 Now write a function changed, that detects the state change for one of the inputs : def changed(num): newstate = GPIO.input(num) change = oldstates[num] and not newstate oldstates[num] = newstate return change Now each of the if clauses can be written : if changed(23): os.system.... Hopefully this will give you some ideas how you could generalize and/or streamline the code. If you decide to use more than 3 switches, or if some want to detect the opposite transition, or ... -- DaveA _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor