Nun kommt endlich wie versprochen der Sourcecode des PitRadios V1.2
Dies ist ein funktionsfähiger Code. Klar lässt er sich noch verbessern. Vor der Version 2.0 werde ich den Code aufgeräumt haben. Da ich aber zur Zeit leider nicht ganz so viel Zeit habe kann es also noch eine Weile dauern bis eine neue Version erscheint.
Damit der Code funktioniert benötigt Ihr noch folgende Sachen:
1. The Adafruit_CharLCD
2. Eine Senderliste. Diese findet Ihr am Ende des Beitrages

#!/usr/bin/python

#PitRadio Version 1.2
#Copyright 2014 by Daniel Schwarz
#Daniel.Schwarz@Blackit.eu
#http://blackit.eu/?s=pitradio#

PIN_PREV = 18
PIN_NEXT = 4
PIN_VOLUP = 14
PIN_VOLDOWN = 15
PIN_MENU = 8


# The Adafruit_CharLCD class controls the LCD display  
#  25 = RS (register select)  
#  24 = E (enable/strobe)  
#  23 = Data bit 4  
#  17 = Data bit 5  
#  27 = Data bit 6  
#  22 = Data bit 7  

# Import
import os
import RPi.GPIO as GPIO
from Adafruit_CharLCD import Adafruit_CharLCD
from datetime         import datetime
from subprocess       import *
from time             import sleep, strftime

LCD = Adafruit_CharLCD()
PLAYLIST_MSG = []
STATION = 1
NUM_STATIONS = 0

class mpc_T:
	"Speichert den aktuellen Status des MPC Players"
	def __init__(self):
		self.volume = 70
		self.on = False
		self.station = "station"
		
	def toggle(self):
		LCD.clear()
		os.system("mpc toggle")
		self.on = not self.on
		if self.on:
			LCD.message("play")
		else:
			LCD.message("stop")
	def vol(self):
		LCD.clear()
		LCD.message(volume)			

 
#Stopt das Radio falls es laufen sollte
#Verhindert das gleichzeitige Laufen von mehreren Radio_Prozessen
os.system("mpc stop")

#xx Millisekunden warten.
def delay_milliseconds(milliseconds):
   seconds = milliseconds / float(1000)	# Rechnet Sekunden in Milisekunden um
   sleep(seconds)

#Ueberwacht ob ein Taster gedrueckt wurde oder nicht
def read_switches():
   #Implementierung der Taster
   got_prev = False
   got_next = False
   got_volup = False
   got_voldown = False
   got_menu = False
   
   sw1_prev = GPIO.input(PIN_PREV)
   sw2_next = GPIO.input(PIN_NEXT)
   sw3_volup = GPIO.input(PIN_VOLUP)
   sw4_voldown = GPIO.input(PIN_VOLDOWN)
   sw5_menu = GPIO.input(PIN_MENU)
   
   #Wird ein Taster gedrueckt dann
   while(sw1_prev or sw2_next or sw3_volup or sw4_voldown or sw5_menu): 
      if(sw1_prev):
         got_prev = True
      if(sw2_next):
         got_next = True
      if(sw3_volup):
		 got_volup = True
      if(sw4_voldown):
		got_voldown = True
      if(sw5_menu):
		got_menu = True
      
      delay_milliseconds(1)
      sw1_prev = GPIO.input(PIN_PREV)
      sw2_next = GPIO.input(PIN_NEXT)
      sw3_volup = GPIO.input(PIN_VOLUP)
      sw4_voldown = GPIO.input(PIN_VOLDOWN)
      sw5_menu = GPIO.input(PIN_MENU)
      
   #if(got_prev and got_next): #Wird Taster 1 und 2 gedrueckt dann
      #return 3
   if(got_next):
      return 1
   if(got_prev):
      return 2
   if(got_volup):
	   return 3
   if(got_voldown):
	   return 4
   if(got_menu): 
	   return 5
   return 0

def playlists():
	LCD.message("Playlisten werden n importiert")
	print "Playlisten werden importiert"
	echo=os.system("sh ./radio_playlist.sh")
	LCD.clear()

def mainloop(): #Hauptfunktion
#	volume=70 #Die start Lautstaerke betraegt 70 Prozent
	#GPIO Implementierung
	GPIO.setmode(GPIO.BCM)
	GPIO.setup(PIN_PREV, GPIO.IN)
	GPIO.setup(PIN_NEXT, GPIO.IN)
	GPIO.setup(PIN_VOLUP, GPIO.IN)
	GPIO.setup(PIN_VOLDOWN, GPIO.IN)
	GPIO.setup(PIN_MENU, GPIO.IN)	
	LCD.begin(16,2)
	LCD.clear()
	playlists()
	# Radio wird gestartet
	mpc = mpc_T()
	os.system("mpc play")
	mpc.on = True
	LCD.message("PitRadion...")
	print "Radio startet"
	sleep(0.1)
#	LCD.clear()
	i=0
	while True:
		press = read_switches() #Ueberwacht ob ein Taster gedrueckt wurde
		i += 1
		if(i % 60 == 0):
			LCD.setCursor(0,0)
			sender1=os.popen("mpc current").read()
			sender = (sender1.split(':')[0])[:10]
			titel=os.popen("mpc -f %title% current").read()
			Anzeige = sender ; datetime.now().strftime(' %H:%M')
			print Anzeige
			LCD.clear()
			LCD.message(sender)
			LCD.setCursor(10,0)
			LCD.message(datetime.now().strftime(' %H:%M')) #Zeigt die aktuelle Zeit auf dem Display an
			LCD.message("n%s" %titel)
		if(press == 3):
			LCD.clear()
			LCD.message("lauter")
			os.system("mpc volume +3")
		elif(press == 4):
			LCD.clear()
			LCD.message("leiser")
			os.system("mpc volume -3")
		elif(press == 5):
			mpc.toggle()
		if(press == 1):
			LCD.clear()
			LCD.message("Next")
			os.system("mpc next")
		elif(press == 2):
			LCD.clear()
			LCD.message("Prev")
			os.system("mpc prev")
		LCD.setCursor(0,1)
		LCD.noAutoscroll
		delay_milliseconds(100)	

mainloop() #Ausfuehrung des Programmes

 

radio_playlist.sh

#! /bin/sh
mpc clear 1>/dev/null

#1 SWR3, Hitradio  nrock
mpc add http://swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3

 

Wir nutzen Cookies, um Dir den bestmöglichen Service auf unserer Webseite zu bieten. mehr Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen