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.
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
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?
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?
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
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.
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
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.
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 ...