Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
computer:raspberrypi:displays [2013/06/21 12:48]
ristigl angelegt
computer:raspberrypi:displays [2018/03/16 21:11] (aktuell)
Zeile 7: Zeile 7:
   * http://​www.pollin.de/​shop/​dt/​NzczOTc4OTk-/​Bauelemente_Bauteile/​Aktive_Bauelemente/​Displays/​LCD_Modul_C0802_04.html   * http://​www.pollin.de/​shop/​dt/​NzczOTc4OTk-/​Bauelemente_Bauteile/​Aktive_Bauelemente/​Displays/​LCD_Modul_C0802_04.html
  
 +Einbau und Ansteuerung:​
 +  * http://​www.schnatterente.net/​technik/​raspberry-pi-32-zeichen-hitachi-hd44780-display
 +  * Skirpt (anpassen an die eigenen Pins!): http://​www.schnatterente.net/​code/​raspberrypi/​displaytest.py
 +{{ :​computer:​raspberrypi:​raspberry-pi-display-aufbau.png}}
  
 +<code python>
 +#​!/​usr/​bin/​python
 +import time
 +import RPi.GPIO as GPIO
  
-===== kleine-Displays ​===== +# Zuordnung der GPIO Pins (ggf. anpassen) 
-Auto-Monitore, z.b.:+DISPLAY_RS ​
 +DISPLAY_E  ​
 +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 ==== 
 +  * {{:​computer:​raspberrypi:​lcd-c0802-04.pdf|}} 
 +  *  
 +===== Auto-Monitore ​===== 
 +Z.B.:
   * http://​www.pollin.de/​shop/​dt/​ODI5OTkzOTk-/​HiFi_Car_HiFi_Video_TV/​TV/​Fernseher/​17_8_cm_7_LCD_Monitor_PremiumBlue_Nova_M7.html   * http://​www.pollin.de/​shop/​dt/​ODI5OTkzOTk-/​HiFi_Car_HiFi_Video_TV/​TV/​Fernseher/​17_8_cm_7_LCD_Monitor_PremiumBlue_Nova_M7.html
   * http://​www.amazon.de/​Iharbort-Zoll-Monitor-R%C3%BCckfahrkamera-monitor/​dp/​B00C09LVES/​ref=lh_ni_t?​ie=UTF8&​psc=1&​smid=A10J6HLB3153R2   * http://​www.amazon.de/​Iharbort-Zoll-Monitor-R%C3%BCckfahrkamera-monitor/​dp/​B00C09LVES/​ref=lh_ni_t?​ie=UTF8&​psc=1&​smid=A10J6HLB3153R2
  
-Angeschlossen werden die Monitore über Cinch-Kabel+Angeschlossen werden die Monitore über Cinch-Kabel
 + 
 +==== Umbau von 12V auf 5V ==== 
 + 
 +Die Monitore sind für den 12-Volt-Betrieb auselegt, da die meisten Autos mit der 12V-Spannung arbeiten. Beim RaspberryPi kann das ungünstig sein, denn hier arbeiten wir mit 5V. 
 + 
 +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 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: 
 +  * http://​www.raspberrypi.org/​phpBB3/​viewtopic.php?​f=64&​t=17651 
 +  * http://​www.wisegai.com/​2012/​11/​29/​raspberry-pi-using-a-3-5-tft-car-monitor-optional-powered-using-usb/​ 
 +  * http://​www.raspberrypi.org/​phpBB3/​viewtopic.php?​f=64&​t=17651&​start=125 
 + 
 +