Bild

Was ist es?

Das Displayotron 3000 ist (dot3k) ist ein Bauteil bestehend aus einem LCD-Display mit einer 9-Segment Anzeige und LED-Backlight. Außerdem ist ein 4-Richtungs Joystick angebracht, der neben der 4 Richtungen auch eine Button-Funktion besitzt. In folgenden Beispielen wird zunächst gezeigt, wie man Text auf dem LCD ausgibt, während das ungleich komplexere, zweite Beispiel ein Menü erzeugt, das mit dem Joystick bedient werden kann.

CODE 1

dot3k_basic.py
import dot3k.lcd as lcd
 
# Den Screen leeren und Text auf dem Bilschirm ausgeben
lcd.clear()
lcd.write("Hallo dies ist ein Testtext")

CODE 2

dot3k.py
#!/usr/bin/env python
 
import sys
 
sys.path.append('../../') #damit plugins wie Menu, Menueoption usw gefunden werden
 
#restlicher Import von Bibliotheken für diverse Funktionen des DOT3K
import dot3k.joystick as joystick
import dot3k.lcd as lcd
import dot3k.backlight
from dot3k.menu import Menu, MenuOption
import time
import os
import threading, subprocess
 
 
class Beispielmenue(MenuOption):      #Ein Menue erstellen
 
 
	def __init__(self):
		self.selected_option = 0
 
		self.options = [
      		'Option1',
      		'Option2',
      		'Option3',
      		'exit'
    		]
 
 
    		self.actions = [              #Den jeweiligen Menuepunkten Actions zuweisen
			self.handle_Option1,
			self.handle_Option2,
			self.handle_Option3,
			self.handle_exit
		]
 
		MenuOption.__init__(self)
#hier folgen die Definitionen der Menuepunkte, also was passieren soll wenn diese gewählt werden
	def handle_exit(self):      
		lcd.clear
		os._exit(1)
 
	def handle_Option1(self):
		print"hier wird z.b. ein GPIO-Pin angesteuert"
 
	def handle_Option2(self):
		print"hier wird z.b. ein GPIO-Pin angesteuert"
 
	def handle_Option3(self):
		print"hier wird z.b. ein GPIO-Pin angesteuert"
 
#Menuenavigation festlegen und die Zeilenverschiebung anlegen:
 
	def select_option(self):
		self.actions[ self.selected_option ]()
 
	def next_option(self):
		self.selected_option = (self.selected_option + 1) % len(self.options)
 
	def prev_option(self):
		self.selected_option = (self.selected_option - 1) % len(self.options)
 
	def up(self):
		self.prev_option()
 
	def down(self):
		self.next_option()
 
	def right(self):
		self.select_option()
 
	def get_current_option(self):
		return self.options[ self.selected_option ]
 
	def get_next_option(self):
		return self.options[ (self.selected_option + 1) % len(self.options) ]
 
	def get_prev_option(self):
		return self.options[ (self.selected_option - 1) % len(self.options) ]
 
	def redraw(self, menu):
 
		menu.write_option( 
			row=0,
			margin=1,
			icon='',
			text=self.get_prev_option()
		)
 
		menu.write_option( 
			row=1,
			margin=1,
			icon='>',
			text=self.get_current_option()
		)
 
		menu.write_option( 
			row=2,
			margin=1,
			icon='',
			text=self.get_next_option()
		)
#Hintergrundbeleuchtung auf Weiss stellen:
 
dot3k.backlight.rgb(255,255,255)
 
menu = Menu(
	structure={
		'Beispielmenue':Beispielmenue()
	},
	lcd=dot3k.lcd
	)
 
#Virtuell den "Auswahlknopf drücken, damit wir ins Menue einsteigen:
 
menu.right()
 
#Festlegen, was die Joysticktasten bewirken:
 
@dot3k.joystick.on(dot3k.joystick.UP)
def handle_up(pin):
  menu.up()
 
@dot3k.joystick.on(dot3k.joystick.DOWN)
def handle_down(pin):
  menu.down()
 
@dot3k.joystick.on(dot3k.joystick.RIGHT)
def handle_right(pin):
  menu.right()
 
#eigentliche Programmschleife:
 
while 1:
	menu.redraw()
	time.sleep(0.01)