PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mikrokontroller + LCD + 3 Knöpfe



RaIdeN
17.02.2006, 19:53
Hallo Zusammen,
Ich habe mir hier gestern was zusammengelötet.
Ich hab ein Display per 4-Bit Mode an einen ATTiny2313 Angelötet.
PortD ist also komplett belegt.
Nun möchte ich auch noch 3 Taster anschliessen, mit denen ich bestimmte sachen auf das display schreiben kann, z.b. einen für Buchstabe Weiter, Zeichen Weiter, Zeile runter. Das LCD funzt auch soweit. ich weiss nur nicht wie ich das mit den tastern realisieren soll (softwareseitig). Kann mir da jemand helfen oder hat jemand da schon etwas änliches gesehen/programmiert? Es handelt sich um ein 20x4 Display.

Thx 4 Help,
MfG RaIdeN

EDIT:
Vllt anstatt der Taster einen RC5 Empfänger? hab nämlich noch einen TSOP hier :D

molleonair
17.02.2006, 21:05
zb port b.0 bis b.4

Hallo molleonair!
Für einige User war der Sinn und die Aussage Deines Beitrages nicht ersichtlich!
Bitte erkläre uns, was Du uns mit Deinem Post mitteilen wolltest!

Mit freundlichen Grüßen
Florian Wolling (Moderator)


Ich dachte er weiß nicht wo er noch 3 taster anschließt

ich geb zu habs verpennt

x-ryder
17.02.2006, 21:06
was hastn du fürne software zum proggen?

Martin

RaIdeN
17.02.2006, 21:14
stimmt... das hab ich vergessen zu erwähnen.. ich benutze bascom.

x-ryder
17.02.2006, 21:26
mit dem kommando debounce sollte man das machen, ich weiß jetzt nich, wie du die taster angeschlossen hast, musste einfach mal in die help reinschaun, wenn du damit nicht klarkommst, dann schreib nochmal, dann schreib ich dir nen beispiel

aber das würde ich erst morgen machen, ich bin halbtot, hab nich so viel geschlafen in letzter zeit ^^

Martin

RaIdeN
17.02.2006, 21:32
Ich schreibs jetzt nochma ausführlich was das prog können soll.
Also.. wenn man die Bat. Anschliesst soll auf dem Display in der 1. Zeile ein Text erscheinen und in der 2ten Der Cursor.
Wenn man jetzt Knopf1 drückt, der an PortD.7 angeschlossen ist, dann soll ein A erscheinen, durch weiteres drücken soll das Alphabet dann durchgegangen werden, bis der gewünschte buchstabe dann auf dem Display steht.
Dann drückt man den 2ten Knopf, der an Portd.6 angeschlossen ist, und der Cursor geht ein zeichen weiter nach Rechts.
Dann geht das mit dem Alphabet wieder von vorne los.
Wenn man eine Zeile nach unten will, dann muss man den 3ten Knopf an PortD.5 drücken. Wenn man in der untersten ist, dann soll bei erneutem drücken in die 2te wieder gesprungen werden. Gleiches gilt für die Spalten.
Der Text sollte auch im EEPROM gespeichert werden. Ist das überhaupt mit einem Tiny2313 möglich?
Thx 4 Help,
MfG RaIdeN

x-ryder
17.02.2006, 21:36
everything is possible, der hat ja meiner meinung nach nen eeprom oda? ^^

ansonsten seh ich da höchstens ein problem mit der codegröße, des könnte etwas knapp werden mit dem, wenn mans nen bissle geschickt proggt, geht das aber eigentlich.

Martin

RaIdeN
17.02.2006, 21:40
und wie genau sollte man das programmieren? Ich kann das noch nicht so gut deshalb frage ich..

x-ryder
17.02.2006, 21:43
weiß nich so recht, wie gut du dich jetzt schon auskennst, aber man könnte das ganze mit der chr()-funktion gut machen, dann brauchste keine abfragen, wenn der buchstabe a iss, iss der nächste b und sowat, sondern du kannst einfach sagen, wenn der taster gedrückt wurde, zähle eine variable weiter, und zeichne dann den chr(variable). damit sparste schonmal enrom ein.

Martin

RaIdeN
17.02.2006, 21:45
achso... das is natürlich leicht so... aber wie soll man das realisieren mit auf tastendruck eins nach rechts?
Mit dem Locate?

x-ryder
17.02.2006, 21:46
jupp, da kannste ja auch ne variable nehmen, und die dann einfach per tastendruck hochzählen, dann geht die automatisch immer wenn du mal aktualisierst einen hoch, und der cursor einen weiter

chr-mt
17.02.2006, 21:53
Hi,

Du kannst die Reihenfolge der Zeichen auch selbst bestimmen, in dem du
eine Tabelle anlegst.
So kannst du nur die Zeichen nehmen, die du brauchst und eben in der gewünschten Reihenfolge.

Guck' mal unter "Lookup", "Lookupstr".

Oder du nimmst vorgefertigte Texte, die du mit dem Taster
durchtastest. Ebenfalls mit lookupstr kein Problem.
Kommt halt drauf an, was du genau machen willst.



Gruß
Christopher

x-ryder
17.02.2006, 21:56
er möchste ja aber vermutlich einfach das abc durchgehen, also bringt ihm das recht wenig, ich schätze mal es soll sone art begrüßungstext werden, den man selber schreiben kann.

(wofür braucht man denn bitte nur spezifizierte zeichen?)

ausserdem musser dann ne tabelle machen, die chr() braucht noch nichtmal diese...

naja, ich seh bloß den sinn nich ^^

Martin

RaIdeN
17.02.2006, 21:58
joa ich schau mir mal die hilfe an, mal schaun was sich da basteln lässt..
Thx 4 the Help
MfG RaIdeN

chr-mt
17.02.2006, 22:12
naja, ich seh bloß den sinn nich ^^
Naja, ich denke, bis er alle Zeichen eingegeben hat, und das sind bei 3 Zeilen a 20 Zeichen * das Alphabet doch einige ;) , dauert es doch etwas.
Da wäre es vielleicht hilfreich, ein paar vorgefertigte Texte zu haben oder sich auf bestimmte Zeichen zu beschränken.
Man kann natürlich auch nur einen bestimmten Bereich der Ascii Zeichen zulassen. zB. von 65 bis 122. "A" bis "z"
Doch manchmal braucht man eventuell auch Zeichen außerhalb des Bereichs.

Wie gesagt, kommt drauf an, was er denn genau machen will.
Und, wie oft er die Texte ändern muß.

OK, die Leerzeichen gehen schneller, da er ja dann nur nach rechts springt.



Gruß
Christopher

clupus
18.02.2006, 19:35
Meine Frage dazu: Sind die 3 Taster lediglich, weil "Not am Manne ist" und du keine Ports mehr offen hast, oder sollen das wirklich nur 3 Taster sein?
Wie groß darf die Platine werden?

Meine Überlegungen/Vorschläge:
Einen Text mit 3 Tasten einzugeben, ist recht umständlich (vgl. SMS im Handy, wo du mehr als 10 Tasten zur Verfügung hast und wo die Programmierung deutlich besser ist (Timeouts etc)). Mehr Tasten wären sehr sinnvoll und auch benutzerfreundlicher.
Ich sehe folgende Mgl. die Anzahl der möglichen Tasten zu erhöhen:

Verwendung einer ferigen Tastatur mit Decoder-Chip (PC-Tastatur, Gummitasten, ...)
Erweiterung der IO-Ports mithilfe von Schieberegister (parallel in serial out)
Aber das war wie gesagt nur ein Schuss ins Blaue - nicht wissend, ob das von den räumlichen Abmessungen möglich ist.

MfG
Christian

RaIdeN
18.02.2006, 20:55
stimmt per PC tastatur wäre das natürlich noch einfacher..
ich dachte an 3 tasten, damit das ganze nicht zu gross wird..
wie realisiert man das mit der Tastatur und wie kann man die nachrichten dann in den EEPROM speichern?

clupus
18.02.2006, 21:46
stimmt per PC tastatur wäre das natürlich noch einfacher..
ich dachte an 3 tasten, damit das ganze nicht zu gross wird..
wie realisiert man das mit der Tastatur

Siehe hierzu Atmel Application Notes (http://www.atmel.com/dyn/resources/prod_documents/DOC1235.PDF). Ich denke da ist das ganz gut beschrieben. Sonst mal nach meinen Beiträgen suchen, ich hab mal nach PS/2 Mäusen gesucht. Da war auch ein Link zu Tastautren dabei.


und wie kann man die nachrichten dann in den EEPROM speichern?

"Ganz normal!" Ich kenne mich in Bascom zwar nicht aus, aber entweder es gibt darfür direkt Funktionsaufrufe (evtl. Forensuche) oder man muss es per Hand eingeben (vgl. Datenblatt, dort ist es groß und breit beschrieben. Bei Problemen melden.). Dann müsste man sich überlegen, es entweder in Basic selber oder in inline Asembler einzugeben.

MfG
Christian

x-ryder
19.02.2006, 10:00
das mit der tastatur geht in bascom übrigens direkt, man kann mit einer methode eine pc-tastatur abfragen, hab ich auch schonmal erfolgreich gemacht und damit nen robo gesteuert...

das wäre der befehl getatkbd und die zugehörige config, die ich aber nicht auswendig weiß... du musst unten noch ne zeichentabelle dranhängen, in der er dann die zeichen nachschlägt. die kann ich dir bei bedarf auch erklärn.

eeprom ist in bascom ganz leicht:
1. du machst eine variable dim irgendwas as eram string und schreibst da dann immer deine inhalte rein (du musst drauf achten, dass du den inhalt erst immer in eine sram variabloe reinschreibst, und die dann in den eram überträgst)

2. du benutzt writeeeprom, damit kannst du an eine bestimmte adresse den inhalt einer variablen in den eeprom schreibne, mit readeeprom kannst du dann die stelle wieder auslesen, das müsste sogar mit ganzen strings gehen.

wenn es probleme gibt, erzähl ^^

Martin

clupus
20.02.2006, 17:31
Wenn du nun noch eine Funk-Tastatur verwendest, hast du (je nach Ladezustand der Batterien) eine für kurze Entfernungen geeignete Fernbedienung.

Das war blos so ne Idee, die mir gestern abend noch kam, und ich dachte, sie sei vielleicht mal eine interessante Steuerungsmöglichkeit.

MfG
Christian

womb@t
23.02.2006, 14:02
Die Idee mit der Funkmaus ist gut, werd ich selber mal Versuchen!!!