Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
computer:raspberrypi:displays [2013/07/22 22:35]
ristigl [mini-Displays]
computer:raspberrypi:displays [2018/03/16 21:11] (aktuell)
Zeile 12: Zeile 12:
 {{ :​computer:​raspberrypi:​raspberry-pi-display-aufbau.png}} {{ :​computer:​raspberrypi:​raspberry-pi-display-aufbau.png}}
  
 +<code python>
 +#​!/​usr/​bin/​python
 +import time
 +import RPi.GPIO as GPIO
  
-Kleines Skipt, um Daten von der Shell anzeigen zu können: ​+# 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_CHR = True 
 +DISPLAY_CMD = False 
 +E_PULSE = 0.00005 
 +E_DELAY = 0.00005 
 + 
 +def main(): 
 + 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() 
 + 
 + lcd_byte(DISPLAY_LINE_1,​ DISPLAY_CMD) 
 + lcd_string("​Schnatterente"​) 
 + lcd_byte(DISPLAY_LINE_2,​ DISPLAY_CMD) 
 + lcd_string("​Nak nak nak!"​) 
 + 
 + time.sleep(5) 
 + 
 + lcd_byte(DISPLAY_LINE_1,​ DISPLAY_CMD) 
 + lcd_string("​Dein Display"​) 
 + lcd_byte(DISPLAY_LINE_2,​ DISPLAY_CMD) 
 + lcd_string("​funktioniert! :​)"​)  
 + 
 + time.sleep(5) 
 + GPIO.cleanup() 
 + 
 + 
 + 
 + 
 + 
 +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() 
 + 
 +</​code>​ 
 + 
 +Kleines Skipt, um Daten von der Shell anzeigen zu können: ​[[computer:​raspberrypi:​programme:​display_from_shell|]]
  
 ==== Datenblätter ==== ==== Datenblätter ====
Zeile 31: Zeile 139:
 Zwar werden die Monitore mit 12 von außen versorgt, der Betrieb erfolgt aber intern mit 5V. Also wird die 12V-Spannung,​ die auch unregelmäßiger sein kann als die Versorgung beim RaspberryPi auf 12V gedrosselt. Hierfür ist der kleine Chip XL1509 zuständig. Das Datenblatt (http://​bbs.dianyuan.com/​bbs/​u/​65/​1617951209993662.pdf oder {{:​computer:​raspberrypi:​xl1509.pdf|}}) ergibt, dass man 5V an den Pin 2 anlegen muss. Zwar werden die Monitore mit 12 von außen versorgt, der Betrieb erfolgt aber intern mit 5V. Also wird die 12V-Spannung,​ die auch unregelmäßiger sein kann als die Versorgung beim RaspberryPi auf 12V gedrosselt. Hierfür ist der kleine Chip XL1509 zuständig. Das Datenblatt (http://​bbs.dianyuan.com/​bbs/​u/​65/​1617951209993662.pdf oder {{:​computer:​raspberrypi:​xl1509.pdf|}}) ergibt, dass man 5V an den Pin 2 anlegen muss.
  
-Zu beachten ist weiterhin, dass das Netzteil mehr Spannung ​liefern muss. Mein Pi läuft ​zwa mit dem Monitor, beim Hereinstecken in die USB-Buchse bootet der Pi aber neu. Ich nutzte 5V mit 1A.+Zu beachten ist weiterhin, dass das Netzteil mehr Strom liefern muss. Mein Pi läuft ​zwar mit dem Monitor, beim Hereinstecken in die USB-Buchse bootet der Pi aber neu. Ich nutzte 5V mit 1A.
  
 Quellen: Quellen: