Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
computer:raspberrypi:displays [2013/07/22 22:34] 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}} | ||
- | Angepasstes Skript: | ||
<code python> | <code python> | ||
#!/usr/bin/python | #!/usr/bin/python | ||
import time | import time | ||
import RPi.GPIO as GPIO | import RPi.GPIO as GPIO | ||
- | import sys | ||
# Zuordnung der GPIO Pins (ggf. anpassen) | # Zuordnung der GPIO Pins (ggf. anpassen) | ||
Zeile 30: | Zeile 28: | ||
- | DISPLAY_WIDTH = 8 # Zeichen je Zeile | + | DISPLAY_WIDTH = 16 # Zeichen je Zeile |
- | DISPLAY_LINE_1 = 0x80 # Adresse der ersten Display Zeile | + | DISPLAY_LINE_1 = 0x80 # Adresse der ersten Display Zeile |
- | DISPLAY_LINE_2 = 0xC0 # Adresse der zweiten Display Zeile | + | DISPLAY_LINE_2 = 0xC0 # Adresse der zweiten Display Zeile |
DISPLAY_CHR = True | DISPLAY_CHR = True | ||
DISPLAY_CMD = False | DISPLAY_CMD = False | ||
Zeile 39: | Zeile 37: | ||
def main(): | def main(): | ||
- | GPIO.setwarnings(False) | + | GPIO.setmode(GPIO.BCM) |
- | GPIO.setmode(GPIO.BCM) | + | GPIO.setup(DISPLAY_E, GPIO.OUT) |
- | GPIO.setup(DISPLAY_E, GPIO.OUT) | + | GPIO.setup(DISPLAY_RS, GPIO.OUT) |
- | GPIO.setup(DISPLAY_RS, GPIO.OUT) | + | GPIO.setup(DISPLAY_DATA4, GPIO.OUT) |
- | GPIO.setup(DISPLAY_DATA4, GPIO.OUT) | + | GPIO.setup(DISPLAY_DATA5, GPIO.OUT) |
- | GPIO.setup(DISPLAY_DATA5, GPIO.OUT) | + | GPIO.setup(DISPLAY_DATA6, GPIO.OUT) |
- | GPIO.setup(DISPLAY_DATA6, GPIO.OUT) | + | GPIO.setup(DISPLAY_DATA7, 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() | ||
- | if sys.argv[1]=="1": | ||
- | lcd_byte(DISPLAY_LINE_1, DISPLAY_CMD) | ||
- | lcd_string(sys.argv[2]) | ||
- | elif sys.argv[1]=="2": | ||
- | lcd_byte(DISPLAY_LINE_2, DISPLAY_CMD) | ||
- | lcd_string(sys.argv[2]) | ||
- | else: | ||
- | display_init() | ||
- | GPIO.cleanup() | ||
def display_init(): | def display_init(): | ||
- | lcd_byte(0x33,DISPLAY_CMD) | + | lcd_byte(0x33,DISPLAY_CMD) |
- | lcd_byte(0x32,DISPLAY_CMD) | + | lcd_byte(0x32,DISPLAY_CMD) |
- | lcd_byte(0x28,DISPLAY_CMD) | + | lcd_byte(0x28,DISPLAY_CMD) |
- | lcd_byte(0x0C,DISPLAY_CMD) | + | lcd_byte(0x0C,DISPLAY_CMD) |
- | lcd_byte(0x06,DISPLAY_CMD) | + | lcd_byte(0x06,DISPLAY_CMD) |
- | lcd_byte(0x01,DISPLAY_CMD) | + | lcd_byte(0x01,DISPLAY_CMD) |
def lcd_string(message): | def lcd_string(message): | ||
- | message = message.ljust(DISPLAY_WIDTH," ") | + | message = message.ljust(DISPLAY_WIDTH," ") |
- | for i in range(DISPLAY_WIDTH): | + | for i in range(DISPLAY_WIDTH): |
- | lcd_byte(ord(message[i]),DISPLAY_CHR) | + | lcd_byte(ord(message[i]),DISPLAY_CHR) |
def lcd_byte(bits, mode): | def lcd_byte(bits, mode): | ||
- | GPIO.output(DISPLAY_RS, mode) | + | GPIO.output(DISPLAY_RS, mode) |
- | GPIO.output(DISPLAY_DATA4, False) | + | GPIO.output(DISPLAY_DATA4, False) |
- | GPIO.output(DISPLAY_DATA5, False) | + | GPIO.output(DISPLAY_DATA5, False) |
- | GPIO.output(DISPLAY_DATA6, False) | + | GPIO.output(DISPLAY_DATA6, False) |
- | GPIO.output(DISPLAY_DATA7, False) | + | GPIO.output(DISPLAY_DATA7, False) |
- | if bits&0x10==0x10: | + | if bits&0x10==0x10: |
- | GPIO.output(DISPLAY_DATA4, True) | + | GPIO.output(DISPLAY_DATA4, True) |
- | if bits&0x20==0x20: | + | if bits&0x20==0x20: |
- | GPIO.output(DISPLAY_DATA5, True) | + | GPIO.output(DISPLAY_DATA5, True) |
- | if bits&0x40==0x40: | + | if bits&0x40==0x40: |
- | GPIO.output(DISPLAY_DATA6, True) | + | GPIO.output(DISPLAY_DATA6, True) |
- | if bits&0x80==0x80: | + | if bits&0x80==0x80: |
- | GPIO.output(DISPLAY_DATA7, True) | + | GPIO.output(DISPLAY_DATA7, True) |
- | time.sleep(E_DELAY) | + | time.sleep(E_DELAY) |
- | GPIO.output(DISPLAY_E, True) | + | GPIO.output(DISPLAY_E, True) |
- | time.sleep(E_PULSE) | + | time.sleep(E_PULSE) |
- | GPIO.output(DISPLAY_E, False) | + | GPIO.output(DISPLAY_E, False) |
- | time.sleep(E_DELAY) | + | time.sleep(E_DELAY) |
- | GPIO.output(DISPLAY_DATA4, False) | + | GPIO.output(DISPLAY_DATA4, False) |
- | GPIO.output(DISPLAY_DATA5, False) | + | GPIO.output(DISPLAY_DATA5, False) |
- | GPIO.output(DISPLAY_DATA6, False) | + | GPIO.output(DISPLAY_DATA6, False) |
- | GPIO.output(DISPLAY_DATA7, False) | + | GPIO.output(DISPLAY_DATA7, False) |
- | if bits&0x01==0x01: | + | if bits&0x01==0x01: |
- | GPIO.output(DISPLAY_DATA4, True) | + | GPIO.output(DISPLAY_DATA4, True) |
- | if bits&0x02==0x02: | + | if bits&0x02==0x02: |
- | GPIO.output(DISPLAY_DATA5, True) | + | GPIO.output(DISPLAY_DATA5, True) |
- | if bits&0x04==0x04: | + | if bits&0x04==0x04: |
- | GPIO.output(DISPLAY_DATA6, True) | + | GPIO.output(DISPLAY_DATA6, True) |
- | if bits&0x08==0x08: | + | if bits&0x08==0x08: |
- | GPIO.output(DISPLAY_DATA7, True) | + | GPIO.output(DISPLAY_DATA7, True) |
- | time.sleep(E_DELAY) | + | time.sleep(E_DELAY) |
- | GPIO.output(DISPLAY_E, True) | + | GPIO.output(DISPLAY_E, True) |
- | time.sleep(E_PULSE) | + | time.sleep(E_PULSE) |
- | GPIO.output(DISPLAY_E, False) | + | GPIO.output(DISPLAY_E, False) |
- | time.sleep(E_DELAY) | + | time.sleep(E_DELAY) |
if __name__ == '__main__': | if __name__ == '__main__': | ||
- | main() | + | main() |
</code> | </code> | ||
- | Aufruf als "root"! | + | Kleines Skipt, um Daten von der Shell anzeigen zu können: [[computer:raspberrypi:programme:display_from_shell|]] |
- | name.py 1|2 TEXT | + | |
- | name.py init | + | |
==== Datenblätter ==== | ==== Datenblätter ==== | ||
Zeile 134: | 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: |