Rörelseutlöst Music Player (6 / 8 steg)
Steg 6: Koden! PT. 1
Följande är ett grundläggande program för att spela upp en låt när IR-strålen signalen bryts (AKA när du går mellan IR stråle och IR-mottagare).
Här är en länk till github koden.
Spara låten i ditt val till en lätt-till-minas-och-typ mapp, i det här exemplet jag använde "Mappnamn" Ange namnet på mappen där mp3 sparas.
Obs: Detta programmet ut ett meddelande på skärmen varje gång låten spelas. Detta fungerade för mina behov, som jag ville ha en logg över varje tid musik spelas, men denna kod är naturligtvis bara en sammanfattning av vad som är möjligt. Ändra den efter behov. Observera även att avståndet av; Detta är viktigt i Python så måste du "tabify" din kod innan du kör det och kontrollera att mellanrummet är konsekvent.
#DIY rörelse utlöses musikspelare
Importera tid
från threading import tråd
importera RPi.GPIO som GPIO
importera underprocess
klass AutoTrigger():
def call_omxplayer(self):
skriva ut ("spela" + self.file_path)
PID = subprocess.call (['omxplayer', self.file_path], stderr = underprocess. Pipa, stdout = underprocess. PIPE)
Self.is_running = False
def play_song(self):
om inte self.is_running:
Self.song_thread = gänga (target=self.call_omxplayer, args=())
Self.song_thread.start()
Self.is_running = sant
def __init__ (själv, pin, file_path):
Self.PIN = pin
Self.FILE_PATH = file_path
Self.is_running = False
GPIO.setup (pin, GPIO. I)
'''
Detta är en hacka (återuppringning) Tack för python nedläggningar!
'''
GPIO.add_event_detect (self.pin, GPIO. FALLANDE, återuppringning = lambda x: self.play_song(), bouncetime = 10)
def main (): GPIO.setmode (GPIO. BCM)
AutoTrigger (25, "/ home/pi/FolderName/SongName.wav")
AutoTrigger (24, "/ home/pi/FolderName/SongName2.mp3")
skriva ut ("redo:!")
försök:
samtidigt sant:
passera
Förutom KeyboardInterrupt:
GPIO.cleanup()
om __name__ == "__main__":
Main)