PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Minimal-Projekt, LED-7segment-Anzeige über i2c-bus



damaltor
03.02.2007, 14:48
Moin,
ich habe bis eben mit der i2c-schnittstelle aus dem asuro-roboter-wiki rumgespielt, und wollte euch jetzt dei ergebniss präsentieren:
Eine7segment-anzeige für den asuro, angesteuert über die i2c-schnittstelle.
so kann man einfach alle 10 ziffern und noch einige buchstaben darstellen. das ist zwar kein ersatz für ein lcd-display, aber immerhin ein anfang. wenigstens kann der asuro jetzt ein paar kleine rückmeldungen abgeben =)

die leds sind alle mit dem plus-anschluss mit VCC verbunden, und der minus anschluss ist jeweils mit einem port des i2c-bausteins verbunden.
bei einer "richtigen" 7segment-anzeige könnte man den pubkt, der normalerweise dahinter ist, mit dem port 0 verbinden. bei mir ist der einfach frei geblieben, ich habe 7 balkenförmige leds benutzt. das ist zwar ein ganz schönes chaos auf der rückseite, aber es funktioniert ganz gut.
im anhang ein paar bilder des i2c-bausteins (ich habe anstelle der steckerleisten kabel mit einem stecker am ende eingelötet, diese kann ich dann auf die jeweilige platine aufstecken, so wie es bei den anderen bildern zu sehen ist)und der led-anzeige von vorn und hinten.
hier ist ein video, wo ihr das ganze in aktion sehen könnt:
http://www.youtube.com/watch?v=_pnDtQdcKis

achtung: da die leds leuchten, wenn der port LOW ist, muss man bei der programmierung ganz schön umdenken! die leds, die high pegel haben leuchten NICHT! =)

im anhang auch der code dazu.

wie ist eure meinung?

hab grade gemerkt, dass alle fotos vedammt unscharf sind. sorry dafür!

radbruch
03.02.2007, 16:03
Echt klasse! Schöne Idee.

Danjo00
03.02.2007, 20:35
Hi
hmm erkennen kann man net viel weil die bilder doch recht unscharf sind sorry

damaltor
03.02.2007, 20:47
naja das net so schlimm... einfach 7 balkenförmige leds zusammen auf lochraster gemacht, dann alle pluspole mit vcc und alle minus pole mit jeweils einem port des i2c verbunden.

wenn ihr wollt, kann ich probieren bessere fotos zu machen.

Hans Z
03.02.2007, 23:50
Hallo,

schön zu sehen, auf welche Ideen Ihr alle kommt!

Grüße, Hans.

Danjo00
04.02.2007, 10:30
Hi

Nee brauchste net das video siehts man es richtig. Ne frage habe ich aller dings auch, Werden sie zahlen so eingeblendet wie geflasht wird pro sache eine zahle oder einfach so?

uwegw
04.02.2007, 12:55
Ein Tipp: es gibt fertige ICs, um Siebensegmentanzeigen über I2C anzusteuern. Beim Yeti wird dafür der SAA1064 benutzt, damit lassen sich vier Anzeigen steuern. Billiger wäre es allerdings, dafür nen Mega8 als I2C Slave anzuschließen, der dann die Anzeige steuert. So könnte man auch ein normales LCD ansteuern.

damaltor
04.02.2007, 15:29
ja, ich weiss =)

aber ich hatte langeweile und ein paar leds da... und was soll ich mit der i2c platine wenn ich nix anzuschliessen hab =) war halt der versuch ob das alles so funktioniert wie es soll.

Ne frage habe ich aller dings auch, Werden sie zahlen so eingeblendet wie geflasht wird pro sache eine zahle oder einfach so?ich kann im programm jede einzelne led ansteuern, wie ich möchte. im quellcode siehst du ganz gut, dass ich eine funktion geschrieben hab, die eine übergebene zahl in den i2c-wert urechnet und diesen dann an an den pcf sendet.

Danjo00
04.02.2007, 15:41
das ist ja genial

damaltor
04.02.2007, 15:58
danke =)
na es ist einfach ne möglichkeit etwas auszugeben ohne display und ohne serwrite. wenn man zB doe odo werte haben möchte, dann sendet man im abstand von zB 500ms die ziffern nacheinander an die anzeige. ist zwar nen bissl rechenaufwand, die einzelnen ziffern zu finden, aber funktioniert recht gut. alternativ könnte man die zahl mit itoa in einen string umwandeln, und dann die einzelnen chars wiedder in ziffern, die dann an die anzeige gesendet werden.

damaltor
05.02.2007, 12:32
moin, ich habe mir eine kleine bibliothek mit funktionen zum ansprechen der LED-anzeige über i2c geschreiben. da man jedoch keine c-dateien includieren soll (obwohl es ganz gut funktioniert=), ist meine frage: wie komme ich von einer .c-datei, in der die geschriebenen funktionen stehen, zu einer .h-datei, die ich includieren kann?

ich benutze den avr-gcc, unter linux, wobei die konsolenbefehle warhscheinlich gleich sein sollten.

m.a.r.v.i.n
05.02.2007, 16:31
Hi,

um zusätzliche C-Files zu "includen" ändert man einfach das Makefile. In einer Header Datei sollten dann lediglich die Funktionsprototypen stehen, damit der Compiler beim Übersetzen nicht meckert.

Beim Asuro Selfest wird das z.B. so gemacht. Guck mal in das entsprechende Makefile.


# If there is more than one source file, append them above, or adjust and
# uncomment the following:
SRC += asuro.c \
Test.c SelfTest.c \
Demo.c LineDemo.c IRDemo.c

# You can also wrap lines by appending a backslash to the end of the line:
#SRC += baz.c \
#xyzzy.c

damaltor
05.02.2007, 16:39
nein, das meinte ich nicht... eine c-datei zu includen get ja auch einfach indem man #include LED.c schreibt. ich will, dass aus der c-datei eine "richtige" library wird, mit einer .c und einer .h zum includen.

uwegw
05.02.2007, 16:52
http://de.wikibooks.org/wiki/C-Programmierung:_Eigene_Header

m.a.r.v.i.n
05.02.2007, 17:09
Hi,

achso, eine eigene Lib, so wie es mit der Asuro Lib 2.7 (https://www.roboternetz.de/phpBB2/download.php?id=8942) gemacht wurde.
Dann schau dir mal dort das Makefile aus dem Lib Ordner an.
Eingebunden wird dann aber kein c-File, sondern ein lib<name>.a File.
Dieses Lib File muß dann ins WinAVR/lib Verzeichnis.

damaltor
05.02.2007, 17:27
hmm... und unter linux? =) da ist nix mit winavr.

ich will einfach zu der .c datei eine .h-datei erstellen...

m.a.r.v.i.n
05.02.2007, 21:38
Hi damaltor,

Sorry, aber ich glaube ich kann dir nicht mehr ganz folgen. :?:

Meinst du so was in der Art?



/* i2c_led.h - Funktionen zur Ansteuerung
einer 7-Segment LED Anzeige über I2C
*/

#ifndef I2C_LED_H
#define I2C_LED_H

/* Funktionsprototypen */

void schreibe_i2c(unsigned char wert);
void LEDzahl(unsigned char zahl);

#endif /* I2C_LED_H */

damaltor
05.02.2007, 22:03
und das wars schon?... ich dachte dazu müsste man die .c-datei "vorkompilieren" oder so... danke dir =)

Danjo00
06.02.2007, 12:46
Hi
Sorry ich noch mal.
Ich habe mir ja das LCD modul bestellt nur ist die frage wie kommt das jetzt an den asuro gibt es da eine zeichneriche bauanleitung und auf deutsch obwohl englich gehts auch darf halt nur nich geschützt sein????

damaltor
06.02.2007, 12:48
was ist geschützt?

und welches lcd modul?

und welchen anschluss hat dieses?

Danjo00
06.02.2007, 13:35
der text wo es erklärt wird das datenblatt ist geschützt und deswegen kann ich es nicht mit meinem translator überzetzen. hier mal das daten blatt http://www2.produktinfo.conrad.com/datenblaetter/175000-199999/181891-da-01-de-DISPLAY_M_I2C-BUS_INTERF_3X12_4_7_MM.pdf
aber sag jetzt bitte nicht das es mit dem nicht geht weil dann bekomme ich glich die kriese^^

damaltor
06.02.2007, 13:55
hmm... also irgendwie bekommen wir das schon hin. mach mal bitte ein foto von allen anschlussmöglichkeiten, dann muss ich mal sehn. was hast du bezahlt für das ding? und woher hast du es?

Danjo00
06.02.2007, 16:09
hmm... also irgendwie bekommen wir das schon hin. mach mal bitte ein foto von allen anschlussmöglichkeiten, dann muss ich mal sehn. was hast du bezahlt für das ding? und woher hast du es?

Jo ist ziemlich unscharf aber man sieht die pins habe 25,60€ bezahlt un bei connrad gekauft


http://s6.bilder-hosting.de/tbnl/GRX5E.jpg (http://www.bilder-hosting.de/show/GRX5E.html)

Edit: habe ja die hälfte vergessen^^

das steht:
Pin1 VSS Ground
Pin2 VDD PowerSupply
Pin3 VLCD Contrast adjust
Pin4 V0 Power for contrast
Pin5 SDA Serial Data Line
Pin6 SCL Serial Clock Line

uwegw
06.02.2007, 16:41
Die interessanten Seiten sind die Tabellen auf Seite 8 bis 10. Da steht die Befehlsfolge für alle Zugriffe auf das LCD.

@dalmator: http://www.conrad.de/goto.php?artikel=181891

Pin1 VSS Ground <Masse
Pin2 VDD PowerSupply <Betriebsspannung
Pin3 VLCD Contrast adjust <siehe Datenblatt Seite 11 linker Plan
Pin4 V0 Power for contrast <siehe Datenblatt Seite 11 linker Plan
Pin5 SDA Serial Data Line <Datenleitung I2C-Bus
Pin6 SCL Serial Clock Line <Taktleitung I2C-Bus

Danjo00
06.02.2007, 17:21
eine sache verstehe ich nicht da steht das das LCD nur 23,08 kostet bezahlt habe ich aber 25,60 kann ja net sein

damaltor
06.02.2007, 17:36
versand?
*textfüller*textfüller*

uwegw
06.02.2007, 18:03
versand?
*textfüller*textfüller*
nein, Mengenrabatt. Conrad schreibt immer den Preis für größere Mengen am dicksten hin. Erst bei drei Stück zahlt man nur 23,08€.

damaltor
06.02.2007, 18:07
fieses ding... naja conrad ist eh recht teuer.

Danjo00
07.02.2007, 03:17
stimmt hatte ich ja vergessen

Danjo00
07.02.2007, 03:52
Noch ne kleine andere frage die Motoren vom Asuron sind doch Gleichstrom motoren oder? Wenn ja kommt also bei den motoren ausgängen gleich strom raus oder lieg ich da falsch?

damaltor
07.02.2007, 11:14
da kommt zwar gleichstrom raus, aber dieser ist gepulst.
die motoren werden über eine PULSWEITENMODULATION angesprochen. das bedeutet folgendes:

um einen motor zB mit halber kraft laufen zu lassen, gibt es zwei möglichkeiten: entweder man reduziert die spannung auf die hälfte, was jedoch recht schwierig wäre, dafür bräuchte man einen digital-analog-wandler, der zudem noch genug power hat um die (relativ gierigen) motoren anzusprechen.
oder man pulst den strom, schaltet ihn also immer wieder an und aus. je nachdem in welchem verhältnis die an-zeiten und die aus-zeiten zueinander stehen, ändert sich die drehzahl. wenn 3/4 der zeit strom anliegt, und 1/4 der zeit keiner, dann läuft der motor auf 3/4 seiner maximalen drehzahl. wenn das verhältnis ausgeglichen ist und und die hälfte der ezit strom anliegt, dann läuft er auf halber drehzahl. damit das dann nicht so ruckelig aussieht, wird sehr schnell umgeschaltet (ich glaube, das ist der gleiche counter wie auch der für die IR-übertragung, dann wäre 36000 mal pro sekunde).

Danjo00
07.02.2007, 16:40
ahh gut dann gehts wohl net habe mir ein gleichspannungs wandler gekauft der aus der eingangs spannung das dopellte macht ist ja net so schlimm hätte dan ein stärkeren motor reinmachen können und somit halt ein chassie bauen können der zwar dann etwas schwer wäre aber die motoren halt packen würde egal.

uwegw
07.02.2007, 17:22
Du könntest die Steuersignale für die Motoren anzapfen und dort einen stärkeren Motortreiber anschließen.

Danjo00
07.02.2007, 19:48
oh hä hatte so oder so vorgehabt ein chassie und karosse zu bauen dann habe ich auch mehr platz dafür thx