Hallo,
ich bin gerade dabei mir ein Internet-Radio zu bauen. Also eigentlich schon länger
Mein Problem ist jetzt, dass das LCD-Display nicht aktualisiert wird.
Ich starte den Pi und dann kommt der aktuelle Song und die aktuelle Uhrzeit und Datum und dann bleibt alles stehen.
Eine aktualisierung des Displays kommt erst, wenn ich das Script neu starte.
Kann mir jemand sagen wo der Bock in meinem Script ist ?
Schon mal vielen Dank vorab
#!
Python
#!/usr/bin/python
#
# Script fuer Raspberry Pi Internet Radio
# mit Datum und Uhrzeit
#
# Author: Uwe und Andere
#
#
# Date : 27/05/2015
import RPi.GPIO as GPIO
import sys
from time import sleep
import glob
from datetime import datetime
from time import sleep, strftime
import time
import os
time_stamp_prev=0
# Die Zuordnung der GPIO Pins, wo die Pins des LC- Displays angeschlossen sind.
LCD_RS = 7
LCD_E = 8
LCD_D4 = 25
LCD_D5 = 24
LCD_D6 = 23
LCD_D7 = 18
LCD_WIDTH = 40 # Deklarierung der Zeichen pro Zeile
DISPLAY_LINE_1 = 0x80 # Adresse der ersten Display Zeile
DISPLAY_LINE_2 = 0xC0 # Adresse der zweiten Display Zeile
LCD_CHR = True
LCD_CMD = False
LCD_LINE_1 = 0x80 # Deklarierung der Adresse der ersten Zeile
LCD_LINE_2 = 0xC0 # Deklarierung der Adresse der zweiten Zeile
#LCD_LINE_3 = 0x94 # Deklarierung der Adresse der dritten Zeile
#LCD_LINE_4 = 0xD4 # Deklarierung der Adresse der vierten Zeile
# Zeitkonstanten
E_PULSE = 0.00005 #0.00005
E_DELAY = 0.00005
def main():
# Hauptprogrammblock
GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbers
GPIO.setup(LCD_E, GPIO.OUT) # E
GPIO.setup(LCD_RS, GPIO.OUT) # RS
GPIO.setup(LCD_D4, GPIO.OUT) # DB4
GPIO.setup(LCD_D5, GPIO.OUT) # DB5
GPIO.setup(LCD_D6, GPIO.OUT) # DB6
GPIO.setup(LCD_D7, GPIO.OUT) # DB7
# Initialisieren der Anzeige
lcd_init()
# Ausgabe
title = get_title()
lcd_byte(LCD_LINE_1, LCD_CMD)
lcd_string(title,1)
lcd_byte(LCD_LINE_2, LCD_CMD)
lcd_string(time.strftime(" %d.%m.%Y %H:%M:%S"),1)
time.sleep(0.5)
os.system("mpc play")
def get_title():
f=os.popen("mpc current")
data = ""
for i in f.readlines():
data += i
if len(data) <= 1:
data = "N/A"
data = data[data.find(":")+2:]
data = data[:data.find("|")]
data += " "
return data
def lcd_init():
# Initialise display
lcd_byte(0x33,LCD_CMD)
lcd_byte(0x32,LCD_CMD)
lcd_byte(0x28,LCD_CMD)
lcd_byte(0x0C,LCD_CMD)
lcd_byte(0x06,LCD_CMD)
lcd_byte(0x01,LCD_CMD)
def lcd_string(message,style):
# Send string to display
# style=1 Left justified
# style=2 Centred
# style=3 Right justified
if style==1:
message = message.ljust(LCD_WIDTH," ")
elif style==2:
message = message.center(LCD_WIDTH," ")
elif style==3:
message = message.rjust(LCD_WIDTH," ")
for i in range(LCD_WIDTH):
lcd_byte(ord(message[i]),LCD_CHR)
def lcd_byte(bits, mode):
# Send byte to data pins
# bits = data
# mode = True for character
# False for command
GPIO.output(LCD_RS, mode) # RS
# High bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x10==0x10:
GPIO.output(LCD_D4, True)
if bits&0x20==0x20:
GPIO.output(LCD_D5, True)
if bits&0x40==0x40:
GPIO.output(LCD_D6, True)
if bits&0x80==0x80:
GPIO.output(LCD_D7, True)
# Toggle 'Enable' pin
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)
# Low bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x01==0x01:
GPIO.output(LCD_D4, True)
if bits&0x02==0x02:
GPIO.output(LCD_D5, True)
if bits&0x04==0x04:
GPIO.output(LCD_D6, True)
if bits&0x08==0x08:
GPIO.output(LCD_D7, True)
# Toggle 'Enable' pin
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)
sleep (.1)
if __name__ == '__main__':
main()
Alles anzeigen