Hallo!
Im Samplverzeichnis das LCGRAPH Verzeichnis öffnen und glücklich werden.
MfG
Rone
Hallo Ihr Lieben,
nach langer Zeit ist es mal wieder Zeit ein Projekt zu beginnen. Vor geraumer Zeit hab ich mal mit Unterstützung aus dem iNetz ein Teil meiner Funk-Haus-Steuerung auf FS20 Basis realisiert. Dieses Experiment hat funktioniert, ist aber bis Heute noch nicht im Wohnzimmer verbaut worden.
Nun habe ich vor das ganze mit einem neuen Display zu erproben. Dabei geht es um das im Titel besagt EA DIP240-7 Display (http://www.lcd-module.de/pdf/grafik/dip240-7.pdf) welches eigentlich ein recht chickes Gerät ist. Nun bin ich aber ziemlicher Anfänger in Sachen GLCDs und würde mich freuen, wenn es hier Interessierte gibt, die das Display schonmal mit Bascom angesteuert haben. Dabei geht es mir um Zeichnen von "Tasten" und Text auf dem Display und diese über den vorhandenen Touch auszuwerten.
Als Umgebung liegt gerade vor mir
- Atmega32
- Pollin Evaluation Board
- Das EA DIP240-7
- 'n PC mit Bascom
Das Display hat eine Auflösung von 240x128 Pixel und einen T6963C Kontroller. Ich habe hier schon einiges über den Kontroller gelesen, aber ehrlich gesagt sind das sehr, sehr viele Informationen in denen ich mich gerade beim lesen verloren habe.
Der erste Schritt wäre ja nun das Anschließen des Displays an den Atmega, das sollte ich hinbekommen. Leider kann das Display kein I²C oder ähnlich. Dann wird es wohl die 8Bit Variante sein - Viele Leitungen aber auch gut
Im zweiten Schritt möchte ich dann das Display initiieren und mal einen Text ausgeben.
Der dritte Schritt soll dann das zeichnen von "Touchtasten" auf dem Display sein. Wäre natürlich schön wenn das mit relativ kompaktem Code gehen würde.
Im vierten und letzten Schritt ist das Ziel dann, die Touchwerte auszulesen und so zu verarbeiten, dass ich die Tasten auch Sinnvoll in Bascom verwenden kann.
Das war jetzt viel Text und ich würde mich sehr über ein wenig Hilfe oder guten Tipps freuen!
Viele Grüße
Thomas
Hallo!
Im Samplverzeichnis das LCGRAPH Verzeichnis öffnen und glücklich werden.
MfG
Rone
Hallo Rone,
ich steh gerade ein wenig auf der Leitung... Wo finde ich das Sampleverzeichnis?
Grüße
Thomas
Am wichtigsten ist für Dich erst mal die Pinbelegung und deren Benennung in Bascom!
Vorteil bei dem von Dir gewähltem Display ist: Die Bezeichnung der Pins ist genau gleich der Bezeichnung in Bascom! Das ist nicht immer so!!
Zum Ansteuern brauchst Du mehr oder weniger zwei komplette Ports - den DatenPort und den SteuerPort.
So fängt das Config dann auch an -
Config Graphlcd = 240 * 128 - hier wird die Auflösung des Displays angegeben (mögliche Auflösungen stehen in der Hilfe)
Dataport = Porta , Controlport = Portc - hier werden die Ports bestimmt (Beispiel Daten PortA / Steuerung PortC)
Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 ,Reset= 4 , Fs = 5 - hier werden den nötigen Steuerpins die einzelnen Portpins zugewiesen (Ce = PC2 / Cd = PC3 / Wr = PC0 usw.)
Mode= 8 - hier ist Mode = 6 oder Mode = 8 möglich (Die Zahl bestimmt die Breite der Zeichen / Beispiel: 240 / 8 = 30 Zeichen /// 240 / 6 = 40 Zeichen
Und noch mal komplett:
Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 ,Reset= 4 , Fs = 5 ,Mode= 8
Nun zur Textausgabe:
Als erstes sagst Du dem Display wo es anfangen soll zu schreiben
Locate 1 , 1 ---- bedeutet nichts anderes als: Beginne in Zeile1 beim ersten Zeichen
und dann die eigentliche Texteingabe
Lcd"Hallo RobNet" - Wichtig ist das der gewählten Text in Anführungszeichen zu setzen ist!
usw.
Locate 2 , 10 :Lcd"ist Alles gar nicht so schwer!"
Locate 5 , 1 :Lcd"oder?"
willst Du den Text wieder löschen geht das wie folgt:
CLS TEXT
Andere Schriftgrößen sind möglich - dazu muß eine Schrift mit dem Fond Editor (Bascom / Tools / Plugins / Fondeditor) erstellt werden.
Die neu erstellte Schrift wird dann über den Befehl "setfond 8x8" und "$include "font8x8.fond" in das Programm eingebunden.
Und weiter gehts mit Linien - - - -
hierzu mal zum Verständniss das Koordinatensystem des LCD
Koordinatenangaben: x,y
yyyyyyyyyyyyx
bb0,0 - ------------------------239,0
bbb!bbbbbbbbbbbbbbbbbbbbbb !
bbb!bbbbbbbbbbbbbbbbbbbbbb !
..y !bbbbbbbbbbbbbbbbbbbbb.b !
bbb!bbbbbbbbbbbbbbbbbbbbbb !
bb0,127 -----------------------239,127
LINE(X0,Y0) - (X10,Y10), on/off
Line (ich möchte eine Linie zeichnen) (X0,Y0) bezeichenet den Startpunkt der Linie - (X10,Y10) den Endpunkt - - - 255 ist on / 0 ist off
Hier ein Beispiel zum besseren Verständniss:
Line(0 , 0)-(100, 0), 255 /// zeichnet eine horizontale Linie von X0,Y0 bis X100,Y0
und ein Quadrat mit 100 Pixel Kantenlänge:
Line(0 , 0) -(100 , 0) , 255
Line(100 , 0) -(100 , 100) , 255
Line(100 , 100) -(0 , 100) , 255
Line(0 , 100) -(0 , 0) , 255
jetzt möchte ich die obere horizontale Linie wieder löschen
Line(0 , 0) -(100 , 0) , 0
und den ganzen Rest (ohne eventuellen Text) auch
CLS GRAPH
und noch ein Kreis:
Circle(30 , 30), 40 , 255 cccccc -cc(30 , 30) gibt den Mittelpunkt des Kreises an 40 den Durchmesser 255 gleich on
wieder wech
Circle(30 , 30), 40 , 0
- Als letztes für Heute noch ein Link zu einem ähnlichem Thema hier im RN -
Geändert von dussel07 (01.11.2011 um 22:47 Uhr)
Hi, Dussel07!
Das ist ja schonmal ein super Start! Werde das geschriebene schnellstmöglich in die Tat umsetzen!
Dann wären ja Schritt 1 und Schritt 2 schon erledigt. Ich bin mal gespannt wie es aussehen wird.
Vielen Dank und ich meld mich sobald es Neues gibt.
Grüße
und 'noch einen schönen Abend Allen!
Thomas
PS: Um schonmal in den Gedanken das Ganze weiter zu spinnen....
Bietet Bascom bzw. der Display-Controller denn schon 'fertige' Buttons oder müssen die manuell erstellt werden?
Mir ist klar, erst Schritt für Schritt zum Ergebnis, aber ich finde es jedesmal wieder spannend auch ohne PC und µC das ganze
schonmal in Gedanken ans Ziel zu bringen
Ich denke das es keine fertigen Buttons gibt - aber hier können sicher Andere präziser Antworten!
Würde mir ein Button erstellen und den dann mehrfach an verschiedener Position ins Programm einfügen -
(zB. in der Mitte des Buttons ein Zeichen das beim drücken dann die Größe ändert)
Ps . Bin gespannt auf Weiteres da ich auch Ähnliches vorhabe.
Nachtrag:
Hab was schönes im Bascom-Forum gefunden:
Siehe dort die Beiträge von Six1.
Dort kam der Vorschlag die Buttons als Grafik einzubinden (Beispiel ist auch vorhanden)
Einbinden von Grafikdateien:
Showpic 10 , 0 , Einschalten nnnnnnnnn - X , Y Position Unterprogramm
Showpic 40 , 0 , Ausschalten
Einschalten:
$bgf"Ein.bgf"
Ausschalten:
$bgf"Aus.bgf"
Ein Konverter scheint Bascom auch mitzubringen ( Bascom / Tools / Graphic Converter )
und noch ein Link zu MCS
Geändert von dussel07 (01.11.2011 um 23:37 Uhr)
Na das klingt doch super, es scheinen ja alle Möglichkeiten vorhanden zu sein.
Was genau hast Du vor? Ebenfalls eine Haussteuerung auf Funkbasis? Wenn ja kann ich mal auf die FS20 Elemente von ELV verweisen. Dazu habe ich hier einen Atemga32 Controller, welcher inzwischen FS20 spricht. Das ganze ist zwar eine recht schaurige Angelegenheit, funktioniert aber!
Viele Grüße
Thomas
Sehr cool, wie das mit dem TExten und Kreisen funktioniert, 1A - bis auf das, dass die Kreise eher Eier sind Aber das bekommen wir auch noch hin.
Juhuuu, das macht Spaß, die Kreise, Rechtecke etc mal aus der Bascom Hilfe auf den Bildschirm zu zaubern!!!
Geändert von RobNet (02.11.2011 um 18:50 Uhr)
So, nun ein aktueller Status zu den ToDo Punkten.
Diese haben sich durch die aktuellen Funktionen erweitert und auch teils geändert.
Aktuell funktioniert das Display wunderbar um Text, Kreise und Linien auszugeben über die in Bascom inplementierten Funktionen. Leider klappt es noch nicht die "Bild"-Funktion zu verwenden. Ich habe das Bascom-Test-Bild konvertiert und mit
Showpic 40 , 0 , Testbild
Testbild:
$bgf"test.bgf"
versucht anzuzeigen. Dabei ist das Bild jedoch zemlich verzerrt und nicht wirklich erkennbar gewesen und so wie ich das interpretiere, hat sich der Atmega dabei auch aufgehängt, bzw. das Bild ist immer wieder erschienen und dann wieder verschwunden. Das wäre zu klären, wobei das bestimmt ein kleineres Problem ist.
Da das Zeichnen von Linen und Kreisen relativ aufwendig ist (bzw. das Positionieren derer), werd ich wohl mal ein kleines C# Windows Programm für das Display erstellen, in welches man mit der Maus Zeichnen kann und welches dann den Bascom-Code zur gemachten Zeichnung ausgibt. Dann sollte es schneller gehen Linien o.ä. zu zeichnen. Das ganze aber wenn mal Zeit dafür vorhanden ist.
Die Sache mit der 'anderen Schrift' muss ich mal noch austesten. Das Standart Font, ist sehr 'leicht' und dezent. eine etwas dickere und kräftigere Schrift wäre eigentlich erforderlich.
Den Touch hab ich noch nicht angeschlossen, der kommt dran, wenn die Grafikdarstellung perfekt funktioniert.
Prinzipiell soll das Ganze dann einmal so aussehen:
- Das Display wird unten eine Status und Steuerleiste haben. Diese erlaub zwischen verschiedenen Bildschirmseiten hin und her zu schalten. Ebenso gibt es dort eine Anzeige zum aktuellen Status.
- Auf dem Display selbst werden z.B. im Jalousie-Menü die Jalousiene in Textform angezeigt und dahinter dann z.B. Auf, Ab, Halb etc...
- Dann gibt es einen weiteres Bildschirmmenü mit Beleuchtungssteuerung, wo man dann wählen kann z.B. Wohnzimmer-> Deckenleuchte Heller, Dunkler, Ein, Aus etc....
- Ein weiteres Menü wird dann Optionen und Einstellungen biteten, wie Uhr einstellen, Helligkeitssensor kalibrieren usw.
Bis dahin ist es noch ein ganzes Stück Arbeit. Das erste ist es die Menüs einmal so darzustellen, wie es nachher aussehen soll. Dann werden die Menüs mit den nötigen Funktionen belegt. Das wichtigste ist es als zuerst ordentlich Buttons zu erstellen und diese per Tocu auszuwerten.
Und los gehts :-=}
Viele Grüße
Thomas
Zu den Bildern die eingefügt werden sollen:
Öffne Paint -
Stelle die Bildgröße entsprechend der Zielgröße ein - (zB. 48x48Pixel (es sind nicht alle Größen mit Bascom konvertierbar?))
Erstelle deine Grafik -
Unter Eigenschaften die Farbe auf Schwarz/Weiß einstellen -
Als BMP speichern -
Mit dem in Bascom integriertem Konvertierer konvertieren - (ich glaub ich stottere)
Nun sollte das Seitenverhältniss passen ?????
Leider läßt sich hier keine .bgf Datei hochladen? Zip oder RAR geht auch nicht - - -
Zu dem was Du vorhast - ob dafür der Speicher des Atmega32 ausreicht??
Ansonsten - hört sich cool an!
Geändert von dussel07 (02.11.2011 um 21:43 Uhr)
Lesezeichen