raspberry pi GIPO LCD-Anzeige für mpc
von pinguin2008- SNIPPET_DESC:
- internet-radio-mpc.py
- SNIPPET_CREATION_TIME:
- 27.10.2013 21:31:44
- SNIPPET_PRUNE_TIME:
- Unendlich
- SNIPPET_TEXT:
-
- #!/usr/bin/python
- import time
- import RPi.GPIO as GPIO
- import re
- import subprocess
- import os
- import datetime
- from time import localtime
- def bytestomb(b):
- mb = round(float(b) / (1024*1024),2)
- return mb
- def get_ram():
- "Returns a tuple (total ram, available ram) in megabytes. See www.linuxatemyram.com"
- try:
- s = subprocess.check_output(["free","-m"])
- lines = s.split('\n')
- return ( int(lines[1].split()[1]), int(lines[2].split()[3]) )
- except:
- return 0
- def get_up_stats():
- "Returns a tuple (uptime, 5 min load average)"
- try:
- s = subprocess.check_output(["uptime"])
- load_split = s.split('load average: ')
- load_five = float(load_split[1].split(',')[1])
- up = load_split[0]
- up_pos = up.rfind(',',0,len(up)-4)
- up = up[:up_pos].split('up ')[1]
- return ( up , load_five )
- except:
- return ( "" , 0 )
- def get_network_bytes(interface):
- output = subprocess.Popen(['ifconfig', interface], stdout=subprocess.PIPE).communicate()[0]
- rx_bytes = re.findall('RX bytes:([0-9]*) ', output)[0]
- tx_bytes = re.findall('TX bytes:([0-9]*) ', output)[0]
- return (bytestomb(rx_bytes), bytestomb(tx_bytes))
- def get_temperature():
- "Returns the temperature in degrees C"
- try:
- s = subprocess.check_output(["/opt/vc/bin/vcgencmd","measure_temp"])
- return float(s.split('=')[1][:-3])
- except:
- return 0
- def get_cpu_speed():
- "Returns the current CPU speed"
- f = os.popen('/opt/vc/bin/vcgencmd get_config arm_freq')
- cpu = f.read()
- return cpu[9:]
- ############################################################
- # read radio station
- def get_mpc():
- f=os.popen("mpc current -f [%name%]")
- station = ""
- station +=' '
- for i in f.readlines():
- station+= i
- ############################################################
- ############################################################
- #localtime = time.strftime("%a %H:%M:%S", time.localtime())
- localtime = time.strftime("%H:%M:%S ", time.localtime())
- ############################################################
- # Zuordnung der GPIO Pins (ggf. anpassen)
- DISPLAY_RS = 7
- DISPLAY_E = 8
- DISPLAY_DATA4 = 25
- DISPLAY_DATA5 = 24
- DISPLAY_DATA6 = 23
- DISPLAY_DATA7 = 18
- DISPLAY_WIDTH = 16 # Zeichen je Zeile
- DISPLAY_LINE_1 = 0x80 # Adresse der ersten Display Zeile
- DISPLAY_LINE_2 = 0xC0 # Adresse der zweiten Display Zeile
- DISPLAY_LINE_3 = 0x90 # Adresse der dritten Display Zeile
- DISPLAY_LINE_4 = 0xD0 # Adresse der vierten Display Zeile
- DISPLAY_CHR = True
- DISPLAY_CMD = False
- E_PULSE = 0.00005
- E_DELAY = 0.00005
- def main():
- while True:
- GPIO.setmode(GPIO.BCM)
- GPIO.setup(DISPLAY_E, GPIO.OUT)
- GPIO.setup(DISPLAY_RS, GPIO.OUT)
- GPIO.setup(DISPLAY_DATA4, GPIO.OUT)
- GPIO.setup(DISPLAY_DATA5, GPIO.OUT)
- GPIO.setup(DISPLAY_DATA6, GPIO.OUT)
- GPIO.setup(DISPLAY_DATA7, GPIO.OUT)
- display_init()
- #rx_bytes, tx_bytes = get_network_bytes('eth0')
- rx1_bytes, tx1_bytes = get_network_bytes('wlan0')
- lcd_byte(DISPLAY_LINE_1, DISPLAY_CMD)
- lcd_string('ONLINE -'+get_up_stats()[0])
- #lcd_string(get_mpc()[0])
- lcd_byte(DISPLAY_LINE_2, DISPLAY_CMD)
- lcd_string('RAM: '+str(get_ram()[1])+'/'+str(get_ram()[0])+'MB')
- #time.sleep(5)
- #lcd_byte(DISPLAY_LINE_3, DISPLAY_CMD)
- #lcd_string('ETH0 send/rec.')
- #lcd_byte(DISPLAY_LINE_4, DISPLAY_CMD)
- #lcd_string(str(rx_bytes)+'/'+str(tx1_bytes)+' MB')
- #time.sleep(5)
- lcd_byte(DISPLAY_LINE_3, DISPLAY_CMD)
- lcd_string('WLAN0 send/rec.')
- lcd_byte(DISPLAY_LINE_4, DISPLAY_CMD)
- lcd_string(str(rx1_bytes)+'/'+str(tx1_bytes)+' MB')
- time.sleep(10)
- def display_init():
- lcd_byte(0x33,DISPLAY_CMD)
- lcd_byte(0x32,DISPLAY_CMD)
- lcd_byte(0x28,DISPLAY_CMD)
- lcd_byte(0x0C,DISPLAY_CMD)
- lcd_byte(0x06,DISPLAY_CMD)
- lcd_byte(0x01,DISPLAY_CMD)
- def lcd_string(message):
- message = message.ljust(DISPLAY_WIDTH," ")
- for i in range(DISPLAY_WIDTH):
- lcd_byte(ord(message[i]),DISPLAY_CHR)
- def lcd_byte(bits, mode):
- GPIO.output(DISPLAY_RS, mode)
- GPIO.output(DISPLAY_DATA4, False)
- GPIO.output(DISPLAY_DATA5, False)
- GPIO.output(DISPLAY_DATA6, False)
- GPIO.output(DISPLAY_DATA7, False)
- if bits&0x10==0x10:
- GPIO.output(DISPLAY_DATA4, True)
- if bits&0x20==0x20:
- GPIO.output(DISPLAY_DATA5, True)
- if bits&0x40==0x40:
- GPIO.output(DISPLAY_DATA6, True)
- if bits&0x80==0x80:
- GPIO.output(DISPLAY_DATA7, True)
- time.sleep(E_DELAY)
- GPIO.output(DISPLAY_E, True)
- time.sleep(E_PULSE)
- GPIO.output(DISPLAY_E, False)
- time.sleep(E_DELAY)
- GPIO.output(DISPLAY_DATA4, False)
- GPIO.output(DISPLAY_DATA5, False)
- GPIO.output(DISPLAY_DATA6, False)
- GPIO.output(DISPLAY_DATA7, False)
- if bits&0x01==0x01:
- GPIO.output(DISPLAY_DATA4, True)
- if bits&0x02==0x02:
- GPIO.output(DISPLAY_DATA5, True)
- if bits&0x04==0x04:
- GPIO.output(DISPLAY_DATA6, True)
- if bits&0x08==0x08:
- GPIO.output(DISPLAY_DATA7, True)
- time.sleep(E_DELAY)
- GPIO.output(DISPLAY_E, True)
- time.sleep(E_PULSE)
- GPIO.output(DISPLAY_E, False)
- time.sleep(E_DELAY)
- if __name__ == '__main__':
- main()
Quellcode
Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN