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/06/21 14:50]
ristigl [mini-Displays]
computer:raspberrypi:displays [2018/03/16 21:11] (aktuell)
Zeile 9: Zeile 9:
 Einbau und Ansteuerung:​ Einbau und Ansteuerung:​
   * http://​www.schnatterente.net/​technik/​raspberry-pi-32-zeichen-hitachi-hd44780-display   * 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
 +
 +# 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 ====
 +  * {{:​computer:​raspberrypi:​lcd-c0802-04.pdf|}}
   *    * 
-===== kleine-Displays ​===== +===== Auto-Monitore ​===== 
-Auto-Monitore,​ z.b.:+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 
 + 
 +