PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : YEAAH! I2C -> PCF8574P -> LCD. Endlich Klappt!GEIL!!!!



raid_ox
11.02.2007, 10:21
YEEAAH GEEIIL. Endlich kann ich lcd über i2c ansteuern, nach lange versuch endlich klappt es. Ich bin so glücklich.

Pinbelegung ist wie in rn-wissen dargestellt:
https://www.roboternetz.de/wissen/index.php/LCD-Modul_am_AVR#Ansteuerung_.C3.BCber_I.C2.B2C

Dabei wird nix modifiziert, mein ASURO(gehört eigentlich der Schule) bleibt sowie das ist und das Kabel, mit dem ich Neigungswinkelsensoren ablesen kann benutze ich jetzt für LCD.

Beim erstmal hab ich versuch i2clcd library zu benutzen, klappt allerdings nicht. Nach lange recherche über I2C und LCD Ansteuerung habe ich versucht eigene Library zu entwickeln (zusammen mit 12cmaster von Peter Fleury), und es klappt!!!!!! (*Stolz*) ^^

BeispielAnsteuerung:


#include "lib/i2cmaster.h"
#include "lib/essential.c"
#include "lib/lcd.c"


int main(void)
{
Init();
i2c_init();
InitLCD();

SetCursorLCD(3);
PrintLCD("I am ASURO");

while(1);

return 0;
}


Hier Bilder dazu:

techboy
11.02.2007, 11:08
Gratuliere zu deinem Erfolg!

Mach weiter so!

raid_ox
11.02.2007, 12:49
Danke, Danke...... ^^

Danjo00
11.02.2007, 12:54
H iherzlichen glück wunsch zu deinem erfolg ich kann dich nur beneiden

raid_ox
11.02.2007, 12:56
hast du den test gemacht,was ich vorgeschlagen habe???

Danjo00
11.02.2007, 12:57
ja bin jetzt im chat

damaltor
11.02.2007, 14:18
na herzlichen glückwunsch! sehr gute sache. wo hast du das display her? bzw was für eins ist das?

raid_ox
11.02.2007, 14:30
Hi dalmator,

es ist ein uraltes display mit ganz normaler LCD-Dotmatrx steuerung HD44780 kompatibel. Der hat mein Onkel vor 2 jahre geschenkt(mit ein MCU) damit ich elektronik lerne.Aber ich hab irgendwie gerade jetzt angefangen es zu benutzen.

Hier ist die Bibliothek dafür:
(Read funktion ist noch nicht implementiert)

damaltor
11.02.2007, 14:32
sieht gut aus.. hast du wirklich nur ein kleines 5k-poti eingebaut?

raid_ox
11.02.2007, 14:34
Nein, es ist 10k Potenziometer.

EDIT: ach, ich verstehe was du meinst. genau, und die widerstände sind fast identisch wie bei Asuro porterweiterung

damaltor
11.02.2007, 14:36
Was meinst du?

EDIT: ach, ich verstehe was du meinst. genau, und die widerstände sind fast identisch wie bei Asuro porterweiterung

raid_ox
11.02.2007, 14:37
ich dachte du fragst mich, was ich da in meinem platine eingebaut habe

damaltor
11.02.2007, 14:41
achso =)

zeig doch mal das programm, was I am Asuro schreibt auf das display. wäre sehr interessant für mich.

raid_ox
11.02.2007, 14:42
ich habe oben schon in "code" geschrieben, und die library hab ich ja auch angehängt

damaltor
11.02.2007, 14:47
achso, hab ich übersehen, danke.

m.a.r.v.i.n
12.02.2007, 23:04
Hi,

endlich geschafft. Auch mein EA DOG-M LCD funktioniert an der I2C Erweiterung.
Danke Raid für dein Code-Beispiel. Mit ein paar Anpassungen funktionierte es auch mit diesem Display.

Die Backlight Beleuchtung will ich über einen FET und den letzten freien IO Port der I2C Erweiterung schaltbar machen. Frißt leider viel Strom, so eine LED Hinterleuchtung. Das sollte man bedenken, falls man unbedingt ein blaues LCD haben will. Die sind nämlich nur bei eingeschalteter LED Hinterleuchtung lesbar.

Auf der Platine ist extra noch viel Platz freigehalten. Dort packe ich entweder den PCF8574 mit auf die Platine drauf, oder vielleicht gleich einen ATtiny24 als I2C Slave.

http://www.asurowiki.de/pmwiki/uploads/Main/i2c_lcd.jpg

http://www.asurowiki.de/pmwiki/uploads/Main/i2c_lcd2.jpg

damaltor
12.02.2007, 23:07
na das sieht aber sehr stylisch aus. hast du mal gemessen, wie viel strom die beleuchtung frisst? schlisslich hat der asuro ja noch mehrere leds, und zwei motoren die auch hungrig sind. fällt das so ins gewicht?
aber sehr schön! was genau ist das für ein display? einfach eines aus de DOG-serie von reichelt?

m.a.r.v.i.n
12.02.2007, 23:19
Hi,

im Moment sind es 70..80mA, weil ich beide LEDanschlüsse parallel betreibe. In Reihe geschaltet, kommt man auf die Hälfte. Das will ich auch noch ausprobieren. Über den FET könnte man die LED-Belechtung sogar dimmbar machen. Das würde den Stromverbrauch nochmal drastisch senken. Das weiße Display ist aber auch ohne Hinterleuchtung gut ablesbar.

Richtig, das ist das DOGM162W-A 2x16 weiß mit LED-Beleuchtung Amber von Reichelt.

Danjo00
13.02.2007, 06:26
Hi,

endlich geschafft. Auch mein EA DOG-M LCD funktioniert an der I2C Erweiterung.



Herzlichen Glück wunsch auch an dich klasse arbeit

raid_ox
13.02.2007, 14:12
Super!! Hast du den Backlight an dem letzten freie port angeschlossen?.
Zu I2C Slave: Du hast doch AVR-Butterfly als slave betrieben, kann ich die quellcode dazu haben bitte?

raid_ox
13.02.2007, 14:20
Noch eins: wenn du willst kannst du auch den LCD Library auf deine asurowiki packen.

EDIT: aber warte mal, ich hab noch paar änderungen gemacht, ich werde bald die neuere version posten, und schaltplan dazu machen (Ich würde gerne auf dein Asurowiki ne anleitung für LCD Erweiterung machen, wenn ich darf). Ich arbeite grad auch an LCD Animator ^^...

damaltor
13.02.2007, 14:49
also ne lcd-library wäre natürlich perfekt im asurowiki, gerade weil da schon drauf hingewiesen wird dass man mit dem PCF8574 ein display anschliessen könnte.

aber sind wirklich alle displays ähnlich genug, um die gleiche lib verwenden zu können?

ausserdem müssten alle ports mithilfe von DEFINEs festgelegt werden, um eine anpassung so einfach wie möglich zu machen. ungefähr so wie in der I2Cmaster.s, in der ja am anfang auch "einstellbar" ist an welchem port SDA und SCL angeschlossen sind. aber ich wäre begeistert =)

raid_ox
13.02.2007, 15:09
aber sind wirklich alle displays ähnlich genug, um die gleiche lib verwenden zu können?


Wenn es steht "LSI KS00XX oder HD447XX Kompatible" sind meistens auch kompatible, da die commands sehr ähnlich sind.


ausserdem müssten alle ports mithilfe von DEFINEs festgelegt werden, um eine anpassung so einfach wie möglich zu machen.

Ich arbeite gerade daran, um so zu machen, dass die portbelegung bei PCF8574 wirklich EGAL wird

m.a.r.v.i.n
13.02.2007, 15:13
Hi,

klar nehme ich die LCD Lib gerne in das AsuroWiki auf. Verschiedene Displays brauchen natürlich auch unterschiedliche Initialisierungen. Das läßt sich aber sicher mit Defines machen. Ich würde die LCD Lib auch gerne in die AsuroLib mitaufnehmen. Darf ich das?

Gegen einen Artikel von dir über die LCD Lib im AsuroWiki hätte ich auch nichts einzuwenden. Muß nur mal sehen, wie ich das mit den Benutzerrechten hinkriege. Derzeit können Seiten nur von mir bearbeitet werden. PMWiki bietet leider keine richtige Benutzerverwaltung wie z.B MediaWiki.


Hast du den Backlight an dem letzten freie port angeschlossen?.
Noch nicht, der P-FET(BS250) ist zwar an den freien Port angeschlossen, hängt aber zum Display hin noch in der Luft. Derzeit wird das Backlight nur mit einem Jumper ein-/ausgeschaltet.



Zu I2C Slave: Du hast doch AVR-Butterfly als slave betrieben, kann ich die quellcode dazu haben bitte?
Den I2C Slave für den Butterfly habe ich nie realisert. Deshalb gibt es auch keinen Code.

raid_ox
13.02.2007, 15:36
Hi,


Den I2C Slave für den Butterfly habe ich nie realisert. Deshalb gibt es auch keinen Code.

Und wie hast du es geschafft, es über asuro anzusteuern.



Gegen einen Artikel von dir über die LCD Lib im AsuroWiki hätte ich auch nichts einzuwenden. Muß nur mal sehen, wie ich das mit den Benutzerrechten hinkriege. Derzeit können Seiten nur von mir bearbeitet werden. PMWiki bietet leider keine richtige Benutzerverwaltung wie z.B MediaWiki.

Es ist auch nicht so wichtig, da es besser scheint, wenn du die Artikel schreibst, da mein Deutsch immer noch scheisse ist ^^ (ich lebe noch nicht so lange in DE).

LCD lib in Asuro Lib wäre dann zu groß oder? Ich habe bei mir die Asuro lib in mehrere c files geteilt, sodass beim uploaden die hex.datei nicht so groß wird (Man sieht ja in meine codebeispiele dass ich statt asuro.h immer essential.c benutze). Aber klar dass du es darfst, solange mein Name da noch steht ^^. Aber kannst du warten bis ich die neuere version veröffenlicht?

damaltor
13.02.2007, 15:43
also ich würde mich melden, die doku zu überarbeiten oder durchzuchecken, wenn ihr das braucht.

die lcd-bibliothek in die asuro bibliothek aufzunehmen halte ich für unnötig, da die wenigsten asuros ein display haben. selbst die i2c-bibliothek wurde hier noch nicht aufgenommen, die käme dann auch noch dazu. allerdings würde ich eher diese aufnehmen als die für ein lcd.

raid_ox
13.02.2007, 15:46
Hi dalmator,

Cool wenn du es machst,

übrigens, wenn du lcds brauchst, im ebay sind si richtig billig:
http://cgi.ebay.de/LCD-Display-L2432-10-x-5-Stueck-A-Ware_W0QQitemZ290080673436QQihZ019QQcategoryZ12070 QQrdZ1QQcmdZViewItem

du braucht nur noch pcf8574 und poti

m.a.r.v.i.n
13.02.2007, 15:49
Hi,


Und wie hast du es geschafft, es über asuro anzusteuern.

Gar nicht. Der Butterfly fährt nur als Nutzlast mit dem Asuro durch die Gegend. Die beiden können nicht miteinander kommunizieren.


LCD lib in Asuro Lib wäre dann zu groß oder?
Nein, bei der neuen Lib V2.7 sind ja auch die die c- Files geteilt, so daß nur noch benutzte Funktionen im Hex-File landen. Dein Name in der Lib bleibt natürlich erhalten und du wirst in die Liste der Asuro Lib Entwickler aufgenommen. Du kannst dich auch als Entwickler bei Sourceforge anmelden. Dann kannst du selbst an der Asuro Lib mitentwickeln, oder auch nur die LCD Lib weiterpflegen.

raid_ox
13.02.2007, 16:00
Ist die Initialisierung auch eigentlich bei vielen identisch??

damaltor
13.02.2007, 16:08
Hi dalmator,

übrigens, wenn du lcds brauchst, im ebay sind si richtig billig:
http://cgi.ebay.de/LCD-Display-L2432-10-x-5-Stueck-A-Ware_W0QQitemZ290080673436QQihZ019QQcategoryZ12070 QQrdZ1QQcmdZViewItem



den pcf hab ich, und ein 10k-poti fliegt hier auch ncoh rum.
die displays aus dem link oben, funktionieren die? dann hol ich die nämlich und verscheuere die anderen 4 (sind immer 5 stück) für nen euro oder so im forum =)

raid_ox
13.02.2007, 16:11
hi dalmator,

ich habe mir auch bestellt, ich habe den Datenblatt durchgelesen und es scheint, dass die ansteuerung standard ist. ich wird mich wieder melden, wenn sie angekommen sind.

damaltor
13.02.2007, 16:13
hast du auch 5 stück bestellt? gibst du mir eins ab? =)

raid_ox
13.02.2007, 16:14
ja kann ich machen, aber die porto selbst ist ziemlich teuer ^^. ich finde,da zu bestellen ist billiger. Außerdem habe ich die B-klasse bestellt für 3€, daher weiß ich nciht ob es gut sind.

damaltor
13.02.2007, 16:18
hmm... da ja die displays gerade einen kleinen boom erleben, könnte man ja eigentlich mal ne sammelbestellung starten =) aber sag mal bescheid, wenn die dinger angekommen sind, so qualität und so.

raid_ox
13.02.2007, 16:20
Joa, kann ich machen. Hehe, es ist wirklich einen neuen Trend geworden.

m.a.r.v.i.n
13.02.2007, 16:20
Hi,

für diese eBay Displays wird aber noch ein Spezial Steckverbinder benötigt. Der ist natürlich nicht im Lochrastermaß. Ansonsten ist es wohl HD447XX kompatibe. http://www.eio.com/l2432ap.htm

Die Initialisierung für das DOGM ist insofern unterschiedlich, das 4 Register zusätzlich beschrieben werden müssen (Powerbooster, BIAS Level und 2 x Kontrast). Das Display hat ja keinen Kontrastregler. Das muß man per Software machen.

damaltor
13.02.2007, 16:36
Wofür ist der Powerbooster? auch irgend was mit Kontrast zu tun?
und der BIAS? zum ausblenden von falschen zeichensätzen oderso?

bei den ebay displays, könnte man da nicht auch einfach löten? oder ist der stecker zu klein?

Danjo00
15.02.2007, 07:48
sorry aber omg hätte ich das gewusst hätte ich mir bei e-bay meine Led´s gekauft 100 blau 10 euro dazu kann ich nur boar sagen ich habe für eine schon über ein euro bezahlt.

Dann noch die eigendliche Frage Kann man eigendlich auch mit dem adapter von m.a.v.r.i.n ein handy display betreiben (nicht das ich jetzt sowas vor habe nur weil ichs gern wissen möchte)????

m.a.r.v.i.n
15.02.2007, 09:18
Hi,



Wofür ist der Powerbooster? auch irgend was mit Kontrast zu tun?
und der BIAS? zum ausblenden von falschen zeichensätzen oderso?


Den Powerbooster muß man einschalten, wenn man das Display mit 3,3V betreibt, bei 5V ist er aus.
BIAS kann man auf 1/4 o 1/5 stellen, unterscheidet sich ebenfalls bei 3,3V u. 5V Betrieb. Welche Funktion sich dahinter verbirgt, keine Ahnung.



bei den ebay displays, könnte man da nicht auch einfach löten? oder ist der stecker zu klein?


Weiss ich nicht. Ich hab das auch nur in der eBay Beschreibung gelesen. Auf dem Foto ist das auch nicht zu erkennen. Laß dich überraschen.



Kann man eigendlich auch mit dem adapter von m.a.v.r.i.n ein handy display betreiben


Ein Handy Display ist ebenfalls ein Grafik Display, von daher würde ich sagen. Nein es geht nicht.

raid_ox
15.02.2007, 15:02
was ist das für ne adapter?

damaltor
15.02.2007, 15:20
Hi,

für diese eBay Displays wird aber noch ein Spezial Steckverbinder benötigt. Der ist natürlich nicht im Lochrastermaß. Ansonsten ist es wohl HD447XX kompatibe. http://www.eio.com/l2432ap.htm

Die Initialisierung für das DOGM ist insofern unterschiedlich, das 4 Register zusätzlich beschrieben werden müssen (Powerbooster, BIAS Level und 2 x Kontrast). Das Display hat ja keinen Kontrastregler. Das muß man per Software machen.

raid_ox
15.02.2007, 15:22
Meint er steckverbinder? was hat es mit handy lcd zutun?

damaltor
15.02.2007, 15:25
gar nix =)

ich denk mal der steckverbinder ist nur dazu da, um die kontakte des displays auf rastermass zu bringen.

raid_ox
16.02.2007, 21:57
@m.a.r.v.i.n :


Die Fototransistoren müssen also wie bei den anderen Erweiterungen dazu entfernt werden. Ebenso benötigt der I2C Bus Pullup Widerstände an den beiden Leitungen SDA und SCL. Jeweils ein 4,7kOhm Widerstand muß nach VCC verbunden werden.


Das hast du auf deinem Asurowiki geschrieben, das ist aber überhaupt nicht notwendig. ich hab es auch nicht gemacht

damaltor
16.02.2007, 22:04
es ist für





















die fototransistoren sollte man entfernen. ansonsten wirken sie je nach beleuchtung unterschiedlich auf die leitungen, evtl sogar als pullups. wenn du pech hast, dann sind sie hell und stark genug um die leitung dauerhaft auf high zu halten, dann ist jede kommunikation unterbunden.

die normalen (festen) pullup widerstände sind mit auf der erweiterungsplatine, die du aus dem asurowiki nachgebaut hast.

raid_ox
16.02.2007, 22:06
Nein. Ich hab probiert die fototransistoren mit licht stark belichten, bisher habe ich damit immer noch kein schlechte erfahrung gemacht.

damaltor
16.02.2007, 22:10
hmm... sind die nicht zwischen vcc und sda/scl?

stimmen die foto-werte denn noch? eigentlich müssten sie zu hoch sein, da ja auch noch strom über die pullups fliesst.

hab sie grad mal durchgemessen, sie scheinen recht hochohmig zu sein und fallen wohl deshalb nicht so sehr ins gewicht sondern sorgen nur dafür dass die leitungen etwas schneller auf V+ gezugen werden. könnte allerdings sein, dass du wenn du etwas anderes als den offensichtlich sehr "netten" pcf8574 (3V spannung reichen dem ja auch =) ansprechen willst, es dann probleme gibt.

raid_ox
16.02.2007, 22:14
ich hab nicht probiert die lichtsensor zu bewerten. Aber ich meine die Fototransistoren sind ja sozusagen extra pullup.



könnte allerdings sein, dass du wenn du etwas anderes als den offensichtlich sehr "netten" pcf8574 (3V spannung reichen dem ja auch =) ansprechen willst, es dann probleme gibt.

Ja, aber wäre es nicht besser wen m.a.r.v.i.n aderes Verb benutzen würde, da es vllt leute gibt, die ihre asuro nicht gern verändern wollen, aber ein LCD benutzen wollen.

m.a.r.v.i.n
16.02.2007, 22:24
Hi,

OK, ich werde die Formulierung im AsuroWiki ändern. Mit Fototransistoren dran habe ich es noch nicht getestet, werde es aber bei Gelegenheit tun.
Die muß ich ja nur einfach dranstecken, ohne zu löten.

Allerdings ohne externe Pullups für den I2C Bus geht bei mir nichts.

raid_ox
16.02.2007, 22:27
Allerdings ohne externe Pullups für den I2C Bus geht bei mir nichts.


Ich glaube du hast falsch verstanden, ich habe auch ein pullups für den bus

damaltor
17.02.2007, 01:10
pullups sind eingebaut, die hast du ja auch auf deiner platine eingezeichnet die wir nachgebaut haben.
die spannung von etwa 3,2 volt kommt zustande, wenn man r14 und r15 nicht durchtrennt oder entfernt. dann läuft dauerhaft ein strom über die pullups, über SDA oder SCL, und dann durch r14 bzw r15 auf masse.

Danjo00
17.02.2007, 06:34
cool also könnte ich ja rein theoretisch meine Phototransistoren wieder dran machen und meine Front LED(die ja sowie so) nee oder? ich benutzte doch ADC2 und 3 ich kann mir mal nicht so richtig vorstellen das man dann beides gleichzeitig benutzen kann mann braucht bestimmt mehr um mit dem at8 schreiben und lesen gleich zeitig zu können das bekommt ja mein computer kaum hin^^

raid_ox
17.02.2007, 08:16
Ich bin nicht sicher, ob es bei dir gehen wird, da du andere I2C chip drin hast

damaltor
17.02.2007, 13:59
bei dir wird es höchstwahrscheinlich nicht gehen, da das display sich ja recht empfindlich gibt. ausserdem wären die werte der liniensensoren stark verfälscht, weil über die pullup widerstände des i2c-bus immer strom laufen würde, auch wenn die liniensensoren so stark verdunkelt werden dass sie keinen strom durchlassen würden. also würden alle lininfolgesensorwerte zu hoch sein.

Danjo00
17.02.2007, 17:25
ok war meine vermutung thx

raid_ox
20.02.2007, 18:47
Die Ebay LCDs ist schon gekommen, leider habe ich noch keine Zeit um es zu testen. Ich melde mich wieder...

PS: Wo ist Danjo00 mit seinem neuen LCD |(^-^)>

damaltor
20.02.2007, 18:49
Also das alte hab ich jetz... ich glaub es ist zu retten... aber wird nich so ganz einfach. mal sehn =)