Forum: Mikrocontroller und Digitale Elektronik 4x4 Taster-"Matrix" mit LEDs?


von skadush (Gast)


Lesenswert?

Moin moin liebe Mikrocontroller'er,

da mir leider keine Idee mehr kommt, muss ich mich nun an euer Forum 
wenden.
Ich bastel' momentan an einem 4x4 Taster-Feld, was eine Steuerung für 
ein Lichtpult werden soll. Diese Taster sollen einen Impuls an den 
jeweiligen Pin eines D-Sub-Steckers liefern. Mit einem zusätzlichen, 17. 
Taster wird über einen Extra-Pin ein "Go"-Befehl an das Pult gesendet. 
Soweit ist diese Schaltung auch kein Problem.
Nun zu meinem Anliegen:

Wenn ein Taster gedrückt wird und der "Go!"-Taster betätigt wird, soll 
eine jeweilige LED über dem vorher gedrückten Taster dauerhaft 
anspringen, um zu signalisieren, dass dieser Taster getriggert wurde. 
Bei drücken eines anderen Tasters, soll die vorher leuchtende LED wieder 
ausgehen und die LED des gedrückten Knopfes wieder angehen. Wie löst man 
so etwas am besten?

Zur Ansteuerung der LED's würde ich ebenfalls gerne wissen, wie man 
sowas am besten ansteuert... ich hätte aus den LED's jetzt eine 4x4 
Matrix gebaut...

ich hoffe ihr könnt mir da etwas auf die Sprünge helfen. Ich kann das 
gerne noch verbildlichen, allerdings sitze ich gerade noch in der Schule 
und habe da nicht so die großen Möglichkeiten, da die meisten 
Eagle-Projektdaten zuhause auf dem PC liegen.

von Georg (Gast)


Lesenswert?

skadush schrieb:
> ich hätte aus den LED's jetzt eine 4x4
> Matrix gebaut...

Ja, das ist gut so. Die Taster sind sicher auch eine Matrix, dann kann 
man beides verbinden, indem man z.B. jeweils eine Spalte LEDs und eine 
Spalte Taster zusammen nach VCC schaltet (4 I/O), dann braucht man noch 
4 Pins für die LED Zeilen und 4 Pins für die Tasterabfrage.

Georg

von skadush (Gast)


Lesenswert?

Moin,

ja, ich hatte geplant, aus den LEDs und den Tastern jeweils eine Matrix 
zu bilden... bleibt nur noch die Frage mit den dauerhaft leuchtenden 
LED's, wenn man einen Taster und den Go-Taster drückt...gibt's dazu eine 
Idee?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Da ist ein Widerspruch:

skadush schrieb:

> Wenn ein Taster gedrückt wird und der "Go!"-Taster betätigt wird, soll
> eine jeweilige LED über dem vorher gedrückten Taster dauerhaft
> anspringen,

Okay, also erst Taste x, dann Go!, dann leuchtet LED x.

> Bei drücken eines anderen Tasters, soll die vorher leuchtende LED wieder
> ausgehen und die LED des gedrückten Knopfes wieder angehen. Wie löst man
> so etwas am besten?

Also nun eine andere Taste y , LED x geht aus, LED y leuchtet nun.

Was ist hier mit der Go-Taste? Braucht man sie hier nicht mehr zu 
drücken?


Was ist, wenn ich:

  - Taste x drücke
  - Taste y drücke
  - Taste z drücke
  - Go!-Taste drücke

Wann soll hier welche LED aus- und wann welche LED angehen? Wozu braucht 
man die Go!-Taste?

von Georg (Gast)


Lesenswert?

skadush schrieb:
> bleibt nur noch die Frage mit den dauerhaft leuchtenden
> LED's, wenn man einen Taster und den Go-Taster drückt

Dann hast du das Konzept nicht verstanden. Jede LED wird unabhängig 
angesteuert, es liegt also allein an der Software, wann sie leuchtet und 
wann nicht. Du musst also die LEDs nur so programmieren wie du das 
möchtest.

Dafür externe Hardware zu benutzen ist völlig unsinnig.

Georg

von skadush (Gast)


Lesenswert?

Frank M. schrieb:
> Was ist, wenn ich:
>
>   - Taste x drücke
>   - Taste y drücke
>   - Taste z drücke
>   - Go!-Taste drücke
>
> Wann soll hier welche LED aus- und wann welche LED angehen? Wozu braucht
> man die Go!-Taste?

Die Go-Taste ist vom Pult vorgegeben. Über Pin 17 muss ein 
Spannungsimpuls anliegen, damit das Pult weiß "aha, ich soll den Befehl 
der mir vorher gegeben wurde, ausführen". Kann man leider nicht ändern. 
Also:

Im Ausgangszustand, also direkt nach einschalten des Gerätes:

Keine LED leuchtet

Knopf x wird gedrückt, immernoch keine LED
Go-Taster wird gedrückt,
LED x leuchtet.

Knopf y wird gedrückt,
LED x leuchtet immernoch.

Go-Taster wird gedrückt,
LED x geht aus, LED y springt an.

so verhält es sich wie mit allen anderen LED's.

> Dann hast du das Konzept nicht verstanden. Jede LED wird unabhängig
angesteuert, es liegt also allein an der Software, wann sie leuchtet und
wann nicht. Du musst also die LEDs nur so programmieren wie du das
möchtest.

dazu würde ich gerne wissen, mit welchem Mikrocontroller man so etwas 
realisieren könnte bzw. wie ich z.B. mit einem atmega gleichzeitig die 
LED-Matrix einbinde sowie die 17 Taster... dort stehe ich gerade 
irgendwie auf dem trockenen.

von Georg (Gast)


Lesenswert?

skadush schrieb:
> wie ich z.B. mit einem atmega gleichzeitig die
> LED-Matrix einbinde sowie die 17 Taster

Dann musst du wohl ganz von vorne anfangen, wie übrigens andere auch. 
Also lass mal eine LED leuchten, dann zwei, dann drei, und wenn du es 
geschafft hast, eine 4x4 LED Matrix anzusteuern, kannst du das mal 
beiseite legen und dich mit Tasten in einer Matrix beschäftigen und dann 
mit dem Entprellen. Dann musst du alles bloss noch kombinieren.

Welcher Prozessor ist egal, solange er genügend I/O-Pins hat, in dem 
Fall 17. Leds und Tasten gemeinsam zu multiplexen schaffst du wohl 
nicht, muss auch nicht sein.

Wenn dir das Multiplexen zuviel ist oder unverständlich, kannst du auch 
alles direkt ansteuern, dann brauchst du halt viel mehr I/O-Pins (33), 
Vorwiderstände usw.

Georg

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

skadush schrieb:
> wie ich z.B. mit einem atmega gleichzeitig die
> LED-Matrix einbinde sowie die 17 Taster... dort stehe ich gerade
> irgendwie auf dem trockenen.

Es bietet sich an, sowohl Tasten als auch LED in eine Matrix zu machen, 
und zwar so, das sie eine Hälfte (4 Pins am MC) doppelt nutzen, wobei 
die Go Taste eine eigene Leitung bekommt.

Wenn man das ganze richtig arrangiert, kann man Tasten und LED in zwei 
Bitfeldern mit dem gleichen Aufbau halten und LED Ausgabe und 
Tastenabfrage in einem einzigen Timerinterrupt erledigen.

Die Ausgabe auf die 16 Datenleitungen würde ich entweder mit 
Schieberegister oder (wenn immer nur eine Leitung aktiv ist) mit einem 
16-1 Multiplexer lösen.

: Bearbeitet durch User
von scherzkeks (Gast)


Lesenswert?

Hmmm,
also es gibt zwei Varianten, einmal eine Matrix wirklich als solche mit 
Spalten und Zeilen anzuschliessen oder den ADC zu "mißbrauchen" indem 
verschiedene Widerlinge zu einem eindeutigen ADC Wert führt.
Dann kontinuierlich den ADC laufen lassen (IRQ) und wenn dann der 
"Machwas" Knopf gedrückt wird (der einen extra PIN hat und nciht via ADC 
erkannt wird) den aktuellen ADC Wert interpretieren und die dazu 
passende LED samt Ausgabewert bedienen.
Es gibt auch Taster mit intergrierter LED ...

von Franz F. (Gast)


Lesenswert?

Hallo,

schau dir mal den AS1115 von ams an, der kann alles was du brauchst.

mfg
Franz

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.