Lies Dir mal Wolles LED Matrix Display ansteuern durch, da sollten ein paar Deiner Fragen erklärt werden. Anstelle des Matrixdisplays lassen sich von MAX7219 auch einzelne LEDs ansteuern, um den passenden Strom kümmert sich das IC.
Moijn,
wir müssen trennen.
Taster und LED's sind elektrisch getrennt zu sehen, gehören aber technisch zusammen.
Dann ist zu berücksichtigen, ob der Taster einzeln oder gemeinsam mit anderen eine Funktion auslösen soll.
Dann die Charateristik, ob ein Taster nur solange auslösen soll, wie die Taste gedrückt wurde, oder mit Zustandsmerker und z.B. Toggle oder löschen.
Ich hab so das Gefühl, dass Du gedanklich einen Schritt weiter bist, als sich das hier darstellt ![]()
Es ist egal, ob da eine blinkt oder alle.
Wenn Du allen Tasten eine LED zuordnest, dann kann es sogar einfacher werden. Der Zustand der LED ist dann gleichzeitig der Merker für die Taste und Du brauchst nicht zusätzlich dauerhaft Variablen für alles.
Ob die MEGA-Pins für die LED's herhalten müssen... Ich würde das über Expander/Treiber machen.
Das hier:
würde sich dann z.B. mit sowas hier erledigen:
Dafür gibt es auch fertige lib's.
Der Vorteil ist, dass Du einfach nur die Versorgungsspannung an den IC anpinnst und die gesamte Steuerung vom Verbrauch der LED's unabhängig ist.
Schaut euch nochmal das letzte Bild und die Beschreibung der Blöcke und Modes an:
Jede LED wird fest EINEM Taster zugewiesen.
Jeder Block ist eine unabhängige Gruppe und wird nicht von Ausserhalb des Blockes angesprochen.
Anmerkung zu den Modes:
A Ich möchte, das ein laufendes Programm durch ein anderes ersetzt wird und das vorherige beendet. Die LEDs zeigen mir an was gerade läuft.
B ich möchte beliebig viele Programme des Blockes ein und ausschalten. Die LEDs zeigen alle Aktiven.
Ich möchte die Modes auch ändern können.
Die Helligkeit der Low Current LED gefällt mir gut und hat a absolut genug Aussage wenn sie passend leuchtet. BLINK UND PULSIEREN etc. Würde nur wild aussehen und wirklich stören.
Ausnahme ist wirklich nur bei PRELOAD, das Achtung
Signalisieren soll!
Zur MIDI AUSGABE hab ich schon Folgendes.
Die BUSQUEEN ist ja auf MIDI Kanal 1. Der BUSKING kommt dann am Besten auf Kanal 2 und 3.
Warum 2 & 3:
Ihr mögt ja Knifflig. ![]()
Ich möchte 2 Unterschiedliche Pulte damit fernbedienen. Das CHAMSYS MQ und das Pulsar MASTERPIECE (MP)
MQ auf Kanal 2, MP auf 3.
Hier sehe ich eine .h Tabelle
Das besondere:
Ich möchte jeden Taster bestimmen können was er ausgiebt und dann auch noch für das MQ und für das MP einzeln einstellbar…
Was genau werd ich dann noch definieren.
Cool wäre es, wenn ich dem MP eine eigene MIDI Buchse, also einen eigenen physischen Ausgang geben kann.
LG Rebecca
das ist nur Software, das braucht nicht "fest" sein.
Das was du unter A) beschreibst wäre für mich ein Typischer "Radio Button" soll heißen, die Aktivierung von einem Taster löscht einen eventuell anderen gesetzten Button.
Das was du unter B) beschreibst lese ich als n unabhängige Taster / Flip Flops.
Und dann ein weiterer Unabhängiger Taster zum Umschalten von Mode A und Mode B.
Wenn du nun noch schreibst, wie viele solche Buttons (ohne den Mode button) brauchst, dann würde ich da mal nachsehen was man da bauen kann.
Imho ist das echt nur ein entprellter Taster, eine LED Pin mal n Instanzen in OOP. hoffentlich keine 42 Zeilen Code.
Zusatzfrage: Arbeitest du in deinen anderen Sketches schon mit einer Button Library (wenn ja welche?) - oder ist das alles lokal selbstgebaut?
Lass mich das Layout fertig haben, dann definiere ich alles noch genauer.
Es wird 5 Gruppen/Blöcke geben. Die einzeln im Mode eingestellt werden.
Alles sind normale Taster: Drück an, loslassen aus. Den Rest macht die Lichtpult Software.
Es geht bei den Modes nur darum die LEDs anzupassen.
Einzige Besonderheit wird das mit dem Taster Strobe und Strobe Poti Speed. Das definiere ich auch noch genauer.
NATÜRLICH:
Das mit dem entprellen möchte ich dieses mal von vorn herein machen.
Da wüsste ich dann auch gerne von euch eine günstige Sinnvolle bewärte Methode.
LG Rebecca
habs noch nicht.
Ein Taster sorgt also nur dafür das die LED angeht und somit anzuzeigen, "das ist die zuletzt gedrückte Taste"? - wenn das in Mode A sein soll - easy.
Und in Mode B bleiben die LEDs dann wie lang an? bis zur nächsten Betätigung?
Fast
Beispiel
Positionen
Moda A
Ich Drücke Taster IV LED IV geht an und bleibt an.
Ich drücke Tadter III LED IV geht aus und LED III geht an und bleibt an.
Usw.
MODE B
TASTE IV gedrückt LED IV geht an und bleibt an.
TASTE III gedrückt LED IV bleibt an und dazu kommt LED III und bleibt auch an
Das erste ändern des Status merken, dann Abfrage für (hier Zeit in ms eintragen) sperren.
Hatten wir alles schon, wird also auch für Dich nichts neues.
Der einzige Unterschied zur Queen, den ich bisher sehe, ist das preload und damit das halten beider Zustände. (aktuell und nächsten)
irgendwann sind dann alle LEDs an in Mode B. Wodurch werden die LEDs in Mode B gelöscht?
Natürlich nochmal Betätigen
Hey Danke
Hast mich grade auf ne Coole Sonderfunktionen inspiriert
also togglen / umschalten in mode B bei Tastendruck. OK.
So und jetzt noch - wie schaltest du zwischen Mode A oder B um?
Wichtig ist, daß es nach Stromaus wieder auf einen definierten Zustand geht.
Den letzten Zustand merkt sich der Mega doch nicht etwa?
Ansonsten: Eine Start Definierung im SKETCH, so mein erster Gedanke.
Umschalten im Betrieb:
Die Gruppentaster werden normal immer nur kurz gedrückt, wenn man also eine definierte Gruppentaste länger als 3Sekunden drückt und hält, kann dann dazu die erste Taste der Gruppe für MODE A und die zweite Taste der Gruppe für MODE B genommen werden.
automatisch nicht, aber du könntest die Daten im EEPROM speichern.
wegen dem nun neu hinzugekommen Wunsch Kurz vs. Lang drücken / unterschiedliche Funktionen komm ich nun zurück auf meine Frage aus #24
Äh
Glaub nicht
Den SKETCH findest du ja hier, schau mal drauf
Bei der BUSQUEEN ist jeder Taster und Regler fortlaufend mit der Controllernummer gewesen.
Für die MQ kann das auch so gemacht werden .
Für das MP allerdings nicht, da ich im MP selbst die MIDI WERTE fest zugeordnet vorfinde.
Hier möchte ich frei kombinieren können.
Bitte keine unbekannten Abkürzungen. Hier kommen täglich 100e Projekte vorbei.
Erwarte nicht, dass ich weis was BUSQUEEN, MQ oder MP bedeutet.
Handgestrickt hätte ich jetzt folgendes Demo:
Für Buttons hab ich eine kleine Klasse zum Debouncen.
Eine LED und ein Button bilden je einen channel.
So ein channel macht folgendes:
Ein Tastendruck aktiviert die zugeordnete LED. Ein wiederholter Tastendruck löscht die LED. (also vergleichbar mit dem was du in Modus B machen willst
Mehrere channels werden zu einer Group (von channels) kombiniert.
Zu so einer Group:
Im Modus A, aktiviert ein Tastendruck seine LED. Ein anderer Tastendruck löscht die andere LED und setzt die neue LED. Ein Wiederholter Druck auf einen gesetzten Button löscht die LED.
Im Modus B (muss man hardkodiert in der Klasse Group umstellen) unterbleibt das löschen der anderen LEDs.
Weitere Gruppen sind einfach zu erweitern: sind nur 3 Zeilen:
Man legt das Objekt (mit den Pin definitionen an)
Im setup begin aufrufen.
Im loop update aufrufen.
braucht man Gruppen mit ungleich 4 channels (=LED/Button Kombinationen) - z.B. für 5 Gruppen, muss man einmalig einen neuen Konstruktor erstellen. Dieser kann dann wieder mehrmals verwendet werden.
Mal was zum spielen:
Ob man nun die hier verwendete Buttonklasse für einen LongPress erweitert oder doch vieleicht einfach z.B. die OneButton Library verwendet kann man sich überlegen, wenn alle deine Anforderungen darliegen.
Lass dich vom Code nicht verwirren, schau dir einfach mal die Objektanlage, das setup und den loop an. Vermutlich wirds erst "klick" machen, wenn du mal deine ganzen LEDs/Button in Gruppen gruppiert hast - dann wirst sehen wie einfach das wird.
Hatte ich weiter oben schon erklärt, aber gerne noch mal
Der erste MIDI Controller ist die BUSQUEEN, für alle Interessierten ein paar Seiten zum Lesen:
Mit MQ meine ich die Lichtsoftware von Chamsys, die von der BUSQUEEN bedient wird und irgendwann dem BUSKING, der sich hier jetzt so anfängt zu entwickeln.
Mit MP meine ich ein HARDWARE Lichtpult das MIDI versteht, das PULSAR MASTERPIECE.
Bisher hab ich nur bei Mode die Lang drück Funktion überlegt. Sonst wüsste ich gerade nichts. Für noch einen Button hab ich einfach keinen Platz mehr, das ist jetzt voll genug. Das sieht dann nicht mehr schön aus, und das Optische ist mir nun mal auch sehr wichtig.
Die Funktion auf die du mich gebracht hast, kann ich ja auch schon mal beschreiben:
Diese LEDs bei den Gruppen dienen mir dazu klar deutlich zu machen, was ich jetzt alles angeschaltet habe. Das ist leichter wenn ich etwas wechseln möchte oder wenn das Stück vorbei ist, empfinde ich es als sehr doooooooof, wenn da noch etwas Blinkt und /oder läuft… Wo Lampe an ist, mach ich aus! ... aber das wäre viel cooler und vor allem schneller mit nur EINER TASTE!
Diese Taste nenne ich PLAYLIGHT/ RESET bei Druck dieser Taste soll bei allen Gruppen Ausgelesen werden welche LED leuchtet, dann:
Für MODE A: Die Gruppenzugehörige letzte Taste MIDI Befehle senden und die LED auf die letzte Taste setzen.
Für MODE B: Die passenden MIDI Befehle der zugehörigen Taster senden und somit das Programm und die LED auschalten.
Das betrifft also nur die Gruppen!
Alternativ hab ich zwar noch ander Möglichkeiten, Programme zum Stillstand zu bringen, aber das würde mir so echt gefallen…
LG Rebecca
Ein Wiederholter Druck hat keine Einfluss und ändert nichts im MODE A. Das Programm bleibt also aktiv
das ist also in dem Testprogramm noch falsch
dann löst man besser den channel auf, und holt die LEDs direkt in der Group.
Im Wesentlichen sind es die gleichen Zeilen, nur halt direkt in der Klasse Group.
noch nachvollziehbar?
Ja ? WS2811 mit 3 mm LED´s
Also möglich ist alles. Jeder dieser kleinen Module kann 3 einzelne LED´s ansteuern und genau wie bei den LED Strips hast Du nur einen Din den du mit einem Signal versorgst.
Du brauchst auch nicht kontienurirlich den Datenpin ansprechen, nur wenn was geändert wird. Hier mal Demo mit Auf Abdimmen Danke nochmal an @agmue für das Prog.
Ja, schöne Idee, aber es bleibt das zeitkritische Timing, weshalb die Interrupts abgeschaltet werden müssen. Das beißt sich dann vermutlich mit MIDI-IN.
