On Sun, Oct 26, 2014 at 6:35 AM, Bill Bright <wcb_...@bellsouth.net> wrote:
> 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 > Using callbacks instead of polling might help. You can do something like this - def play(channel) : #your action here if channel == 23 : os.system('mpg321 -g 95 a.mp3') GPIO.add_event_detect(23, GPIO.RISING, callback=play) and similarly for the other pins. Check the "Events and Callback Functions" section of this tutorial - http://makezine.com/projects/tutorial-raspberry-pi-gpio-pins-and-python/ Cheers, Anish Tambe
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor