Light Control System V2.0

Update 07.08.12

Lang ist‘s her, dass es das letzte Update zu diesem Projekt gab. Wird also mal wieder Zeit.

Es hat sich doch recht viel getan, auch wenn man das Meiste auf den ersten Blick nicht sieht.
Das Experimentierboard ist ein bisschen voller geworden. Zudem musste ich während dem Testen ein paar Komponenten, welche anfangs angedacht waren, verändern. Dazu mehr unter „Hardware“


Softwaremäßig: Das Grundgerüst des Menüs steht und auch der Mainscreen füllt sich so langsam nach meinen Vorstellungen.

Der Mainscreen mit Analoguhr, Digitaluhr, Datum- und Temperaturanzeige:


Mag alles noch ein bisschen leer aussehen, aber für den Mainscreen allein habe ich etliche Stunden gebraucht.

Das wohl Aufwändigste war die Analoguhr auf das GLCD zu bringen. Sieht zudem nur primitiv aus, doch der Programmieraufwand ist recht groß. Schließlich muss jede einzelne Linie der Zeiger berechnet werden.
Die Digitalanzeige der Uhr ist da kein Thema mehr. Nur wollte ich diese in großen Zahlen anzeigen lassen. Die bascominternen Routinen zur Einbindung und Benutzung von unterschiedlichen Fonts (Schriftarten) funktionierte bei meinem Display nicht, da es einen T6963 Controller enthält. Dieser Controller hat im Gegensatz zum z.B. KS108 schon einen integrierten Fontgenerator an Bord.
Das hat den Vorteil, dass man Zeichen direkt vom Controller aus per ASCII senden kann. Es geht schnell und spart Speicherplatz auf dem µC. Schließlich müssen keine Fonts eingebunden werden.
Der Nachteil ist allerdings, das man eben an diese eine Fontgröße im T6963 gebunden ist (hier 6x8px groß)
BASCOM verweigert bei verwenden eines T6963 Displays partout das Benutzen von eigenen Fonts. Ich habe es eigentlich schon aufgegeben und wollte ein anderes Display kaufen mit KS108 Controller. In Foren liest man überall, mit einem T6963 Controller sei dies unmöglich. Bis ich dann nach langem Googeln auf dieser Seite landete: http://evertdekker.com/Joomla/index.php?option=com_content&task=view&id=49&Itemid=86
Wunderbar – genau das richtige für mein Problem. Jetzt kann ich sogar die internen Fonts des Displaycontroller (schnellerer Seitenaufbau) und eigene Fonts verwenden.


Das Menü habe ich von meinem letzten Projekt übernommen. Nur daraufhin angepasst, dass nun der Cursor durch die Menüpunkte wandert und nicht die Menüpunkte zum Cursor hin wandern. Bei längeren Menüs werden jetzt auch Pfeile an der rechten Seite angezeigt, ob es noch Menüpunkte außerhalb des sichtbaren Bereichs gibt (ob unten, oben oder in beide Richtungen).


Zur einfachen Bedienung des Menüs ist nun auch der Drehencoderknopf „Multifunktional“. Mit einem einfachen Klick gelangt man einen Menüpunkt vorwärts, mit einem langen Klick (auf dem Encoder draufbleiben) kommt man wieder einen Menüpunkt zurück. Und egal wo man gerade im Menü ist – mit einem Doppelklick ist man schnell wieder im Hauptmenü. Per Fernbedienung kann das Menü selbstverständlich auch bedient werden.

Die Zeichen zur Steuerung sind eigentlich selbsterklärend:

 

Ein kleines Video zur Menüsteuerung:

{youtube}jufB4gXMVEc{/youtube}


Hardware:

Temperatursensoren

Beim Testen ist mir aufgefallen, dass in Verbindung mit der Abfrage des Drehencoders per Timer die 1Wire Kommunikation mit den Temperatursensoren nicht mehr funktioniert. Das Problem liegt in der softwarebasierten Kommunikation zwischen µC und 1Wire.
Der Drehencoder wird jede Millisekunde auf Zustandsänderung abgefragt. Schließlich soll keine Rasterung verloren gehen und das auch bei schnellem Drehen nicht. Dies geschieht per Interrupt, der das laufende Programm alle 1ms unterbricht und in eine Subroutine zum Abfragen des Drehencoders springt. Nach der Abfrage setzt das Programm an der Stelle, wo der Interrupt unterbrochen hat, weiter. Prinzipiell kein Problem für das Hauptprogramm. Setzt der Interrupt allerdings genau dann ein, wenn Daten per 1Wire „erzeugt“ werden, dann gerät das ziemlich zeitkritische Timing der 1Wire Kommunikation aus den Fugen und die Temperatursensoren werden nicht richtig abgefragt. Mit anderen Übertragungsarten wie I2C passiert das nicht, da diese als Hardwaremodul ausgeführt sind und sozusagen parallel zum Programmablauf Daten selbstständig verarbeiten können.

Also habe ich den Temperatursensoren einen eigenen Atmega8 spendiert, der nichts anderes macht, als die Temperatursensoren abzufragen. Den Atmega8 frage ich dann vom Hauptcontroller per I2C ab.

RGB Beleuchtung

Für RGB ist inzwischen ein einzelner Atmega88 zuständig. Dieser besitzt 6 PWM Ports und daher perfekt für 2 voneinander unabhängige RGB Steuerungen. Angesteuert wird dieser ebenfalls mit I2C.

So das war’s mal wieder mit den News. Aber da ich inzwischen Urlaub habe, sollte es hier auch sehr bald weitergehen ;)

Kommentare   

#1 Tobias L. 2012-06-17 21:55
Mir ist sowas bei Ebay auch schon mal passiert. :-* Ab jetzt biete ich nur noch auf maximal eine Sache. Mal schauen wie es weiter geht.
#2 Dominic 2012-08-03 19:23
Hey, ich w?rd dir gerne so ein Geh?use abkaufen, wenn du nicht alle Ben?tigst, Schreib mich doch einfach mal an :)
MfG
Dominic Laggerbauer
+1 #3 RSS Feed 2012-08-08 21:56
Gibt's zu deinem Blog auch einen RSS Feed? W?re praktisch dann m?ssten man nicht immer nachschauen ob's was neues gibt. So bekommt man sofort Bescheid. ;)
#4 Florian Hering 2012-08-30 13:55
Hm leider nicht. Da m?sste ich erst ein Zusatzmodul installieren, weil mein System das nicht von Haus aus mitbringt. Sollte ich mal einrichten, wenn ich wieder mal etwas Zeit daf?r habe... ;-)
#5 espri128 2013-06-17 14:01
Hallo Forian,

l?sst Du Dein Plexi bei Dienstleister lasern? (formulor?).
#6 Florian Hering 2013-06-17 15:50
Hi,

das Plexi lasse ich z.b. hier Lasern: www.tabrizi.de
+2 #7 Renovatio 2013-11-12 18:28
K?nntest du bitte die Datein vom Projekt hochladen, damit ich mir ein paar Sachen an gucken kann? Danke schon mal im Voraus.

Kommentar schreiben


Sicherheitscode
Aktualisieren