Hallo Ich bin absoluter Neuling in diesem Bereich und mir fällt es sehr schwer, den Anfang zu finden. Ich benötige eigentlich nur eine Buttonbox, dessen Form jedoch vorgegeben ist. Nun möchte ich dort im Grunde exakt wie im Anhang ersichtlich, Taster mit RGB unterbringen. Jede Taste muss farblich anpassbar sein. Die Tasten sind am Ende nichts anderes als Macrotasten für den PC. Ansteuerung denke ich mal über Arduino. Eine einfache Matrixschaltung habe ich hinbekommen. Am löten scheiterte es dann aufgrund Unkenntnis. Tja, ich müsste hier programmieren, eine Schaltung aufbauen, wohl ein PCB erstellen, löten und das ganze noch verstehen lernen. Wie lange brauche ich um diese Kenntnisse realistisch zu erlangen? Gibt es eventuell die Möglichkeit, sowas auch in Auftrag zu geben oder teile davon abzutreten? Irgendwie baut alles aufeinander auf. Das überfordert/erschlägt mich. Es soll nicht mein Lebensprojekt werden und ich habe große Bedenken, hier das technische Verständnis so aufbauen zu können, das es am Ende funktioniert wie es soll. Meine andere Idee war, in das fertige Gehäuse eine weitere Ebene zu drucken, dort wie bei Buttonboxes üblich, von hinten die Taster miteinander zu verlöten, löten lassen. Auch hier fehlen dann jedoch die RGBs und die Schaltung und Programmierung. Vielleicht hat hier der ein oder andere noch Vorschläge für mich? Vielleicht aber auch eine Reihenfolge in der ich das Projekt voran treiben sollte?
Chris S. schrieb: > eine Buttonbox, dessen Form jedoch vorgegeben ist Wie sieht'n das aus? Chris S. schrieb: > Vielleicht aber auch eine Reihenfolge in der ich das Projekt voran > treiben sollte? Löten lernen. Ich habe die Vermutung, dass du 'kann nicht löten' als Vorwand und Blockadepunkt siehst. Als erstes schaust du, dass du mit dem Arduino eine Matrixtastatur ausgelesen bekommst. Das geht auch auf dem Steckbrett zum Ausprobieren. Als zweites schaust du, dass du die RGB-LEDs angesteuert bekommst. Das geht auch auf Steckbrett. Hier fehlt noch die Info, wie die Farbe einer Taste gesteuert werden soll. Von extern einstellbar? Womit? Software am Rechner? Dann über welche Schnittstelle? Parallel zu diesen Schritten schnapp dir alte Elektronik um das Entlöten zu üben und mach andere kleine Lötübungen. LED-Wechselblinker mit zwei Transistoren (Multivibrator) scheint mir eine gute Lochraster-Übungsaufgabe zu sein. Dann muss dein Tasten-Matrixauslesen und die LED-Ansteuerung auf eine Platine und diese Platine dann ins Gehäuse integriert werden. Frage, Lochraster im Gehäuse oder eigene Platine? Kannst du Platinen entwerfen und irgendwo günstig fertigen oder reicht dir Lochraster aus? Chris S. schrieb: > Auch hier fehlen dann jedoch die RGBs und die Schaltung und > Programmierung. Es fehlt also an allem? Vielleicht wird es doch eine Kauflösung? Chris S. schrieb: > Tja, ich müsste hier programmieren, eine Schaltung aufbauen, wohl ein > PCB erstellen, löten und das ganze noch verstehen lernen. Wie lange > brauche ich um diese Kenntnisse realistisch zu erlangen? Verstehst du etwas von Elektronik im Allgemeinen? Kannst du Coden? Realistisch würde ich sagen von Null auf vielleicht halbes Jahr für das Hardwareverständnis und Embedded Programmierung. Kommt drauf an wie schnell du lernst, wieviel Zeit du hast, ob du noch andere Hobbies oder Profession hast, die nötige Fähigkeiten bereits beinhalten... Chris S. schrieb: > Gibt es eventuell die Möglichkeit, sowas auch in Auftrag zu geben oder > teile davon abzutreten? Das willst du dann auch bezahlen? Da ist die Kauflösung eindeutig billiger. mfg mf
:
Bearbeitet durch User
Achim M. schrieb: > Wie sieht'n das aus? Ich weiß nicht ob ich das einfach so posten darf. Aber eigentlich ist es nur ein Nachbau von einer original Kontrollerbox aus dem Rennsport für meine privaten Zwecke um Makros am PC in einem Simulator zu erstellen. Optisch könnte man aber meinen, sie ähnelt dem Bild was ich gepostet habe. Nur das Raster ist etwas weiter auseinander und beträgt 4x5. Beim Entwurf des Gehäuses habe ich schon große Hilfe bekommen was mich jetzt hier hin getrieben hat. Fusion360 und der 3D Druck nehmen eigentlich schon genug Zeit in Anspruch um im Hobby Fortschritte machen zu können. Wie eben passende Tastenaussparungen oder Rahmenteile zu entwerfen. Die Box ist nur ein kleiner Teil davon, aber der komplizierteste. > Löten lernen. Ich habe die Vermutung, dass du 'kann nicht löten' als > Vorwand und Blockadepunkt siehst. Mir hat das Spaß gemacht. Spätestens bei Knotenpunkten wo viele Kabel zueinander finden, hört der Spaß wieder auf. > Als erstes schaust du, dass du mit dem Arduino eine Matrixtastatur > ausgelesen bekommst. Das geht auch auf dem Steckbrett zum Ausprobieren. Ich hatte für meine erste und bisher einzige Steuerung Simhub als Programm verwendet. Plus und Minus der integrierten Tasterbeleuchtung war das kleinste Problem. Die Kabel aber so löten das es am Ende auch alles da rein passt… schrecklich. > Frage, Lochraster im Gehäuse oder eigene Platine? Kannst du Platinen > entwerfen und irgendwo günstig fertigen oder reicht dir Lochraster aus? Nach unten habe ich ausreichend Platz. Das Teil hat eigentlich keinen festgeschrieben Gehäuseboden. Einbautiefe daher individuell. Lochraster kenne ich erst ein paar Tage. Wäre eine gute Idee und möglich. Platinen kann ich eben nicht entwerfen. Das wäre ein Problem. > Es fehlt also an allem? Vielleicht wird es doch eine Kauflösung? Eigentlich an allem von Schaltung bis Anschluss der Elektronik. Die Idee ist im Kopf, die Umsetzung schwieriger als gedacht. Eine fertige Lösung kommt nicht in Frage. Die liegt preislich bei 1600€ und wäre völlig überzogen, da es dem tatsächlichen Anwendungsbereich nicht gerecht wird. Ich habe Macropads, Custom Keyboard PCB, RGB Taster und vieles vieles mehr gesucht. Gibt nicht einmal fertige RGB Taster abgesehen von denen hier: https://www.rasppishop.de/RGB-LED-Button-Bricklet Man sucht halt nach fertigen Lösungen wenn man selbst so eingeschränkt ist. Das würde die Kosten in die Höhe treiben. Allein die Tasten 250€ ohne Rest. Und ob das dann einfacher funktioniert? Nüchtern betrachtet vielleicht die beste und einfachste Lösung, wenn man das gescheit eingestellt bekommt und sonst so gar keine Ahnung hat? Die Taster soll man drücken und sie sollen beim betätigen die Farbe nach Konfiguration ändern. Größe vom Tastenfeld 13x11,5cm Also zB: weiß auf grün auf weiß und als Makrotaste mit PC verknüpft sein. Mehr ist das in der Theorie eigentlich nicht. Ha ha! [Mod: mit > am Zeilenanfang wird zitiert. Oder eben einfach einen Text markieren und auf den Link "Markierten Text zitieren" drücken]
:
Bearbeitet durch Moderator
Chris S. schrieb: > nach Konfiguration Da wäre auch die Frage, wie das konfigurierbar sein soll. Kleines Tool wo man das einstellen kann? mfg mf
Im Spielmenü einfach unter Tastenbelegung. Das bekomme sogar ich hin :)
Das heißt, der Tastatur-Anteil ließe sich durch eine billige ausgeschlachtete USB-Tastatur ersetzen. Und wie werden die Farben der Tasten konfiguriert? mfg mf
Das ist eine gute Frage! Sollte mit Arduino aber programmierbar sein. Weiß noch nicht wie. Wenn es das einzige Problem bleibt, kann ich damit leben mich da rein zu hängen um es zu lernen. Kann man nicht einfach eine RGB Tastatur nehmen und einen 4x5 PCB Bereich sauber heraus trennen und für mein Vorhaben nutzen? Hier hat es auch einer geschafft sich selbst was zu bauen. https://yager.io/keyboard/keyboard.html
Das sind ne Menge verschiedener Baustellen, für den Anfänger nicht geeignet. Man muß eine Schaltung entwickeln, ein Layout erstellen, alles löten, die Firmware für den AVR erstellen, ein Protokoll zum PC überlegen, das PC-Programm entsprechend kommunizieren lassen und das Modul auslesen und ansteuern. Dann noch die Konstruktion. In der Firma wären dafür mindestens 6 verschiedene Mitarbeiter nötig.
Chris S. schrieb: > Im Spielmenü einfach unter Tastenbelegung. Das bekomme sogar ich hin :) Tata... du kennst also das Spiel, die Schnittstelle zu Controller Box und das Protokoll das von dem Spiel benutzt wird um die Box anzusteuern ? Weil wenn es eh über das Spiel gesteuert must du ja genauso reagieren können auf die soganale wie ein Orginal Zubehör teil. Butter bei die Fische. Lass mal ein paar Namen springen und um was genau es sich handelt. Und warum kaufst du nicht einfach die „Original“ box wenn es sie denn gibt ?
Peter D. schrieb: > Das sind ne Menge verschiedener Baustellen, für den Anfänger nicht > geeignet. Das habe ich befürchtet. Ich hoffe nach wie vor, das einer vielleicht teilweise Fertiglösungen oder Bausteine kennt, mit denen ich das umsetzen kann. Es gibt nicht einmal fertig zu kaufende RGB Taster außer das was ich hier gepostet habe. Kann das wahr sein oder gucke ich nicht richtig? gierig schrieb: > Chris S. schrieb: >> Im Spielmenü einfach unter Tastenbelegung. Das bekomme sogar ich hin :) > > Tata... > > du kennst also das Spiel, die Schnittstelle zu Controller Box und > das Protokoll das von dem Spiel benutzt wird um die Box anzusteuern ? > Weil wenn es eh über das Spiel gesteuert must du ja genauso > reagieren können auf die soganale wie ein Orginal Zubehör teil. > > > Butter bei die Fische. Lass mal ein paar Namen springen > und um was genau es sich handelt. > Und warum kaufst du nicht einfach die „Original“ box wenn es sie > denn gibt ? Die Signale wie im Original eher nicht. Es soll sich nur optisch so verhalten. Es handelt sich konkret um dieses Teil: https://www.cosworth.com/products/rsp-rubber-switch-panel/?cat=switches Die Box habe ich dank einem lieben Kollegen praktisch schon fertig hier liegen. Ich habe sie ausgedruckt. Sieht 1:1 gleich aus. Hat exakt die selben Dimensionen. Angepasst wird nur noch die Aufnahme für die Tasten, da diese noch nicht fest stehen. Es müssen ansteuerbare RGB Tasten sein. Die Knöpfe, bzw. Die Taster-Kappen werde ich mit TPU in passender Größe drucken. Es fehlt entweder eine Platine wie die von einer Tastatur im selben Raster oder Tasten die auf Lochplatte mit RGB irgendwie verkabelt werden können. Für beides fehlt mir das technische Verständnis - das richtige dafür zu finden. Das Programmieren bekomme ich bestimmt hin, wenn die Lösung sauber ist. Warum ich die Box nicht fertig kaufe steht weiter oben. 1600€ für das Teil sind mir nur um es an einem PC als Tastenmakro zu nutzen zu teuer. Mal davon abgesehen. Das Original gehört in einen Rennwagen.
Chris S. schrieb: > Das Programmieren bekomme ich bestimmt hin, Wann sollen denn die Tasten ihre Farben bekommen ? Nur ein Mal beim Einschalten, oder je nach dem was bisher gedrückt wurde, oder je nach Zustand des Programms auf dem PC ? Danach richtet sich, was als Controller taugt, und wir viel Software man schreiben muss. Vergiss es, Tastenmechanik selbst bauen zu wollen, das wird hakelig und funktioniert nicht betrieblicher bzw. das Tastengefühl wird doof. Nimm fertige Tasten, z.B. von dem rPi Keyboard. Dann muss dein neues Gehäuse nur die Anordnung (Platzierung) bestimmen. Die alte Platine wird zersägt. https://www.ebay.de/itm/363491903553
MaWin schrieb: > Chris S. schrieb: >> Das Programmieren bekomme ich bestimmt hin, > > Wann sollen denn die Tasten ihre Farben bekommen ? > > Nur ein Mal beim Einschalten, oder je nach dem was bisher gedrückt > wurde, oder je nach Zustand des Programms auf dem PC ? > > Danach richtet sich, was als Controller taugt, und wir viel Software man > schreiben muss. > > Vergiss es, Tastenmechanik selbst bauen zu wollen, das wird hakelig und > funktioniert nicht betrieblicher bzw. das Tastengefühl wird doof. Nimm > fertige Tasten, z.B. von dem rPi Keyboard. Dann muss dein neues Gehäuse > nur die Anordnung (Platzierung) bestimmen. Die alte Platine wird > zersägt. > > https://www.ebay.de/itm/363491903553 Ich stelle mir das so vor, das sie beim einschalten den Zustand behalten, den ich vorher eingegeben habe. Also das sie beim Neustart nicht wieder alle weiß leuchten. Da es ein Simulator ist, soll es dem Original entsprechen und da sind die Farben vorgegeben. Siehe Anhang. Streng genommen kann man die Tastenfarbe im Original einstellen wie man möchte. Mir persönlich würde es reichen, das ich definieren kann, wie sie dauerhaft leuchten. Nach Möglichkeit je weniger Aufriss, desto besser. Du hast dort ein Keypad verlinkt. Das Raster passt von den Tasten her nicht zu der Box. Es wird unabdingbar sein, hier einzelne Tasten in eine eigene Halterung zu setzen. Der Druckaufwand bzw. das mit dem Gehäuse und der Haptik ist wirklich das kleinste Problem. Ich brauche Taster und RGB die man zusammenschalten kann ohne das es blöd aussieht.
Mal ganz blöd, falls der Weg nicht das Ziel ist: Einfach eine frei programmierbare Tastatur kaufen? https://www.elgato.com/en/stream-deck wäre jetzt mein erster Gedanke ... kann man auch gut zweckentfremden, geht auch unter Linux (falls das von Interesse ist), hat ein Display pro Taste :-D https://www.idealo.de/preisvergleich/OffersOfProduct/5802627_-stream-deck-elgato.html klar kostet Geld, aber eigenes PCB in mehreren Revisionen halt auch ;-)
Ich schrieb: > Mal ganz blöd, falls der Weg nicht das Ziel ist: Einfach eine frei > programmierbare Tastatur kaufen? > https://www.elgato.com/en/stream-deck wäre jetzt mein erster Gedanke ... > kann man auch gut zweckentfremden, geht auch unter Linux (falls das von > Interesse ist), hat ein Display pro Taste :-D > > https://www.idealo.de/preisvergleich/OffersOfProduct/5802627_-stream-deck-elgato.html > klar kostet Geld, aber eigenes PCB in mehreren Revisionen halt auch ;-) Danke für den Tipp! Habe ich aber schon in einer anderen Box verbaut ;) Darf nie fehlen. Der Unterschied zwischen den beiden ist einfach erklärt. Das eine kann gestaltet werden wie man mag, das andere hat eine vorgegebene Größe weil ich es dem Original nachempfinden möchte. Das ist ein Wunsch von mir. Es fehlt als einzige Komponente. Der Schlüsselstein sozusagen :) Ich kann mir auch vorstellen das jemanden machen zu lassen. Ich befürchte nur, das es dann so kostspielig wird, das es keinen Sinn mehr macht. Was soll ich jetzt tun? PCB Board anfertigen lassen ohne zu wissen wie man das anstellt oder einfach Taster nehmen und irgendwie RGBs dazwischen stecken? Mein wissen ist halt so begrenzt. Ich hatte gehofft hier noch Anregungen zu bekommen die mich vielleicht von meiner starren Linie weg treiben.
:
Bearbeitet durch User
Chris S. schrieb: > Du hast dort ein Keypad verlinkt. Das Raster passt von den Tasten her > nicht zu der Box. Es wird unabdingbar sein, hier einzelne Tasten in eine > eigene Halterung zu setzen Ja nun, das überfordert dich ? Du musst mit der gezeigten Tastatur: nichts mehr programmieren, alles fertig, musst nur noch auf Farben und Shortcuts konfiguriert werden keine Platine entwerfen, nur noch die Platine einbauen und die Tasten an Drähten an deine bevorzugte Anordnung bringen.
MaWin schrieb: > Chris S. schrieb: >> Du hast dort ein Keypad verlinkt. Das Raster passt von den Tasten her >> nicht zu der Box. Es wird unabdingbar sein, hier einzelne Tasten in eine >> eigene Halterung zu setzen > > Ja nun, das überfordert dich ? > > Du musst mit der gezeigten Tastatur: > > nichts mehr programmieren, alles fertig, musst nur noch auf Farben und > Shortcuts konfiguriert werden > > keine Platine entwerfen, nur noch die Platine einbauen und die Tasten an > Drähten an deine bevorzugte Anordnung bringen. Ach jetzt verstehe ich das vielleicht erst? Du meinst das Teil auseinander nehmen, die Tasten gegebenenfalls entölten und auf das Raster anpassen, einbauen, fertig? Edit: Die RGBs sind doch auf dem PCB. Wie soll ich das denn anpassen oder ändern? Die Breite könnte tatsächlich passen. Die Tiefe aber nicht.
:
Bearbeitet durch User
MaWin schrieb: > Chris S. schrieb: >> Wie soll ich das denn anpassen > > Drähte statt Leiterbahnen. Ok und was ist mit den RGB? Die sitzen auf der Leiterplatte oder in den Tasten? Kann ich das ohne weiteres alles ablöten? Vermutlich wäre das für mich eher zu bewerkstelligen als etwas von Grund auf neu zu planen, bevor das was ich mache, ein Oldtimer wird :D Vom Prinzip verstehe ich was du meinst. Ob sich das umsetzen lässt ist jetzt die andere Geschichte.
:
Bearbeitet durch User
Chris S. schrieb: > Vermutlich wäre das für mich eher zu bewerkstelligen als etwas von Grund > auf neu zu planen, Eben.
Das einzige was ich an deinen Projekt als schwer betrachte und wo ich aktuell Schwierigkeiten sehe sind die Beleuchteten Taster. Und damit meine ich den nackten Taster. Der Rest in Kinderkram. Den lernt man in jeden Arduino-Lernbaukasten. Hier findest du den Schaltplan für die Matrix. Das sind nur ein paar lausige Drähte die du an die Pins löten musst. Bei einer 5x4 Matrix genau 20 ;) https://arduino-projekte.webnode.at/meine-libraries/16er-tastatur/ Die ansteuerung der LED's . Hm da würde ich WS2812B nehmen. Ansteuerung ist auch mit der richtigen Libs sehr einfach. Und du hast Farben ohne Ende. Das einzige Problem ist wie schon gesagt die Taster selbst. Also die Frage : Wie bekomme ich die LED unter die Taste so das sie schön DURCH leuchtet. Und da wüsste ich aktuell keine Lösung die Kostengünstig ist.
Schlaumaier schrieb: > Das einzige was ich an deinen Projekt als schwer betrachte und wo ich > aktuell Schwierigkeiten sehe sind die Beleuchteten Taster. Und damit > meine ich den nackten Taster. > > Der Rest in Kinderkram. Den lernt man in jeden Arduino-Lernbaukasten. > > Hier findest du den Schaltplan für die Matrix. Das sind nur ein paar > lausige Drähte die du an die Pins löten musst. Bei einer 5x4 Matrix > genau 20 ;) > > https://arduino-projekte.webnode.at/meine-libraries/16er-tastatur/ > > Die ansteuerung der LED's . Hm da würde ich WS2812B nehmen. Ansteuerung > ist auch mit der richtigen Libs sehr einfach. Und du hast Farben ohne > Ende. > > Das einzige Problem ist wie schon gesagt die Taster selbst. Also die > Frage : Wie bekomme ich die LED unter die Taste so das sie schön *DURCH* > leuchtet. > > Und da wüsste ich aktuell keine Lösung die Kostengünstig ist. Ja genau. Ich brauche die Tasten und die rgb bevor ich überhaupt weiß welche Schaltung ich vornehmen kann. Es gibt einfach keine rgb Taster auf dem Markt. Rgb Taster im Sinne von Taster mit integrierter RGB wo man beides zusammen an eine Platine löten kann. Gibt es nicht. Vom Hersteller der mir vorschwebenden Box sieht die Taste so aus. Siehe Anhang. Was ist das? Edit: Würde sowas nicht reichen? https://m.german.alibaba.com/p-detail/Full-Color-RGB-LED-Illuminated-Momentary-60686876625.html?language=german&redirect=1
:
Bearbeitet durch User
Chris S. schrieb: > Es gibt einfach keine rgb Taster auf dem Markt. Rgb Taster im Sinne von > Taster mit integrierter RGB wo man beides zusammen an eine Platine löten > kann. Gibt es nicht. Doch gibt es. Bloß dann bekommst du ein Schock. Erst setzen, tief Luft holen dann den Link anklicken. ;) https://www.bastelgarage.ch/22mm-drucktaster-mit-rgb-beleuchtung-5v-edelstahl Jedenfalls das einzige was ich auf die Schnelle gefunden habe. ;) Die einzige Alternative wäre die Taste mit einen 3D Drucker selbst zu erstellen. Ist in meinen Augen nicht sehr schwer. Man braucht eine Runde Kappe mit Klaren Deckel. Darunter auf ein 2 Teil eine WS2812 und die verdrahten nach Unten. Unten an den Teil ein Pin der ein Mikroschalter auslöst auf der Platine. Ist ne ziemliche Fummelei aber machbar.
Schlaumaier schrieb: > Chris S. schrieb: >> Es gibt einfach keine rgb Taster auf dem Markt. Rgb Taster im Sinne von >> Taster mit integrierter RGB wo man beides zusammen an eine Platine löten >> kann. Gibt es nicht. > > Doch gibt es. > > Bloß dann bekommst du ein Schock. Erst setzen, tief Luft holen dann den > Link anklicken. ;) > > https://www.bastelgarage.ch/22mm-drucktaster-mit-rgb-beleuchtung-5v-edelstahl > > Jedenfalls das einzige was ich auf die Schnelle gefunden habe. ;) > > Die einzige Alternative wäre die Taste mit einen 3D Drucker selbst zu > erstellen. Ist in meinen Augen nicht sehr schwer. > > Man braucht eine Runde Kappe mit Klaren Deckel. Darunter auf ein 2 Teil > eine WS2812 und die verdrahten nach Unten. Unten an den Teil ein Pin der > ein Mikroschalter auslöst auf der Platine. Ist ne ziemliche Fummelei > aber machbar. Ja hast du recht. Der ist allerdings rund, mit 22mm recht groß und er hat einen Druckpunkt der voraussetzt, das man ihn ins Gehäuse drückt. Das lässt sich ohne weiteres auch nicht in so ein Gehäuse integrieren. Die Tasten selbst zu drucken ist mir nicht in den Sinn gekommen. Ich werde mal darüber nachdenken heute Nacht. Was ist mit den Chinesen? Der Link von gerade sieht erst mal ganz vielversprechend aus. Ich klammere mich nur an jeden Strohhalm ;) Bis hier hin wirklich vielen vielen Dank für all diese konstruktiven und vor allem kreativen Vorschläge!! Euch noch einen schönen Abend.
Chris S. schrieb: > Was ist mit den Chinesen? Der Link von gerade sieht erst mal ganz > vielversprechend aus. > Ich klammere mich nur an jeden Strohhalm Finde ich auch, das das gut Aussieht. Aber 250 Euro würden mir auch quer vor der Nase liegen. (2.40 $ * 100 Stk. Mindestbestellmenge) + VK + ZOLL + MWST = ca. 300-320 Euro. AUA.
Ein Streamdeck ist keine Option? Zwar keine RGB Tasten aber LCD Tasten. (kann man RGB mit machen) .. Ist frei Programmierbar und universell Einsetzbar... In div Versionen erhältlich und gibt's um den dicken Daumen für 130€-230€...
Hi Da gibt es auch ganz schnuckelige Taster mit LC-Displays 65x32 bzw 36x24 Pixel von NKK Switches, z.B. bei Mouser. MfG Spess
De M. schrieb: > Ein Streamdeck ist keine Option? > Zwar keine RGB Tasten aber LCD Tasten. (kann man RGB mit machen) .. Ist > frei Programmierbar und universell Einsetzbar... In div Versionen > erhältlich und gibt's um den dicken Daumen für 130€-230€... Weiter oben hatte ich geschrieben das ich dieses bereits besitze. Für die Box jedoch ungeeignet. LC Display Tasten kenne ich so auch nicht. Interessant. Auch diese sind leider ungeeignet. Vielen Dank. Warte noch auf Rückmeldung aus China.
Habe was gefunden. Keine Ahnung wieso ich die übersehen habe. Es wurden mir immer nur einzelne Farben angezeigt. Aber vielleicht könnte es mit denen funktionieren. Keine zusätzliche Bastelei und ich kann die Menge bestellen die ich benötige. Keine großen Stückzahlen. Paar mehr falls was schief geht schaden trotzdem nicht.
Vielleicht hilft dir ja sowas weiter: https://learn.adafruit.com/adafruit-neokey-5x6-ortho-snap-apart Da sind die RGB LEDs schon auf der Platine und Du kannst beliebige MX Taster benutzen. Das kann "am Stück" benutzt werden, aber auch "zerlegt" und mit wenigen Drähten verbunden. Es gibt auch Guides dazu und hat Arduino und CircuitPython Libs und z.B. mit einem PiPico problemlos als HID benutzbar.
Wow das sieht richtig gut aus. Sehr kompakt. Zudem kann ich mir die Tasten selber aussuchen (haptik) und vielleicht sogar passende Keycaps finden. Da brauche ich also nur die Grundplatte, Tasten+Caps und ein Arduino? Die hier kann ich auch verwenden. Richtig? https://www.cherrymx.de/cherry-mx/mx-low-profile/mx-low-profile-speed.html
:
Bearbeitet durch User
Chris S. schrieb: > Da brauche ich also nur die Grundplatte, Tasten+Caps und ein Arduino? Ja, allerdings würde ich keinen Arduino (Hardware also Uno; Nano etc) benutzen, da der keine Vor- sondern nur Nachteile bietet, da er nicht nativ USB kann. Besser bietet sich hier ein Board mit dem RP2040 (z.B. PiPico von Raspberry oder anderen) an. Der wird inzwischen gut von der Arduino IDE (Software!) unterstützt. Allerding, wenn ich dich richtig verstanden habe geht es dir nicht vordergründig drum C bzw. C++ zu lernen, sondern das gesamte Projekt fertig zu bekommen, dann würde ich eher zu Circuit Python raten, da kommst Du schneller voran. Da gibt es auch fertige HID Libs und Beispiele. https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython > > Die hier kann ich auch verwenden. Richtig? > https://www.cherrymx.de/cherry-mx/mx-low-profile/mx-low-profile-speed.html Ich denke ja, es gibt da glaube ich nur einen anderen nicht passenden "Footprint" und das sind die von Kailh, deren Low-Profile Serie, die passen nicht. Also besser nochmal prüfen.
Ralf M. M. schrieb: > Chris S. schrieb: >> Da brauche ich also nur die Grundplatte, Tasten+Caps und ein Arduino? > Ja, allerdings würde ich keinen Arduino (Hardware also Uno; Nano etc) > benutzen, da der keine Vor- sondern nur Nachteile bietet, da er nicht > nativ USB kann. > Besser bietet sich hier ein Board mit dem RP2040 (z.B. PiPico von > Raspberry oder anderen) an. > Der wird inzwischen gut von der Arduino IDE (Software!) unterstützt. > > Allerding, wenn ich dich richtig verstanden habe geht es dir nicht > vordergründig drum C bzw. C++ zu lernen, sondern das gesamte Projekt > fertig zu bekommen, dann würde ich eher zu Circuit Python raten, da > kommst Du schneller voran. Da gibt es auch fertige HID Libs und > Beispiele. > https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython > >> >> Die hier kann ich auch verwenden. Richtig? >> https://www.cherrymx.de/cherry-mx/mx-low-profile/mx-low-profile-speed.html > Ich denke ja, es gibt da glaube ich nur einen anderen nicht passenden > "Footprint" und das sind die von Kailh, deren Low-Profile Serie, die > passen nicht. Also besser nochmal prüfen. Vielen Dank. Ich erstelle gerade eine Grundplatte auf der ich die einzelnen Platinenstücke einsetzen kann. Sozusagen um das Raster an mein benötigtes anzupassen. Arduino wäre meine erste Wahl gewesen weil ich dort in meinem Programm ga z einfach eine Matrixschaltung einstellen kann. Jedoch wüsste ich dann nicht, wie ich die RGbs eingestellt bekomme. Da wird der Weg den du vorgeschlagen hast bestimmt besser sein.
> da der keine Vor- sondern nur Nachteile bietet, da er nicht nativ USB kann.
Darf ich mal fragen wozu nativ USB wichtig ist?
Chris S. schrieb: >> da der keine Vor- sondern nur Nachteile bietet, da er nicht nativ USB kann. > > Darf ich mal fragen wozu nativ USB wichtig ist? Aus deinem Eröffnungspost: Chris S. schrieb: > Die Tasten sind am Ende nichts anderes als Macrotasten > für den PC. Wie sonst, als über USB, bekommst Du die Tasten in den PC? Chris S. schrieb: > Arduino wäre meine erste Wahl gewesen weil ich dort in meinem Programm > ga z einfach eine Matrixschaltung einstellen kann. Jedoch wüsste ich > dann nicht, wie ich die RGbs eingestellt bekomme. Das sind ganz normale WS2812, dafür gibt's auch für den Arduino Libs, aber wie gesagt, mir ist nicht klar, wie Du die Tasten an den PC "übermitteln" willst.
> Das sind ganz normale WS2812, dafür gibt's auch für den Arduino Libs, > aber wie gesagt, mir ist nicht klar, wie Du die Tasten an den PC > "übermitteln" willst. Der hat doch Micro usb Anschluss.
Chris S. schrieb: >> Das sind ganz normale WS2812, dafür gibt's auch für den Arduino Libs, >> aber wie gesagt, mir ist nicht klar, wie Du die Tasten an den PC >> "übermitteln" willst. > > Der hat doch Micro usb Anschluss. Aber darüber ist nicht der Arduino sprich der ATMega328 verbunden sondern nur der USB to Serial Wandler, d.h. für den PC stellt sich der Arduino als Serielle Schnittstelle dar und nicht als HID (Human Input Device) wie z.B. Keyboard oder Gamepad.
Ralf M. M. schrieb: > Chris S. schrieb: >>> Das sind ganz normale WS2812, dafür gibt's auch für den Arduino Libs, >>> aber wie gesagt, mir ist nicht klar, wie Du die Tasten an den PC >>> "übermitteln" willst. >> >> Der hat doch Micro usb Anschluss. > > Aber darüber ist nicht der Arduino sprich der ATMega328 verbunden > sondern nur der USB to Serial Wandler, d.h. für den PC stellt sich der > Arduino als Serielle Schnittstelle dar und nicht als HID (Human Input > Device) wie z.B. Keyboard oder Gamepad. Das wusste ich auch nicht! Danke sehr! Also soll ich am besten einen PiPico und als Software diese Circuit Python nutzen? Hoffe das habe ich so richtig verstanden. Was die ganzen Tutorials und Hilfen zum programmieren etc. angehen, damit muss ich mich beschäftigen, wenn es soweit ist. Das alles hier hat schon einen enormen Input und es ist bemerkenswert was hier an Schwarmwissen existiert :) Ich sage nur: böhmische Dörfer
Morgen, spätestens übermorgen wird das Material eintreffen. Ich werde hier weiter berichten. Es wäre doch schön, wenn eure Hilfe sogar Früchte trägt und am Ende sogar die Idee verwirklicht werden kann. Inzwischen habe ich die Platinenhalterung als Testmuster gedruckt. Ich darf gespannt sein, ob die Adafruit PCBs da rein gehen. 3D Drucker haben so ihre Toleranzen :)
Ich habe heute die Platine erhalten und testweise in das Gehäuse gesetzt. Da ich jetzt einige übrig habe, wollte ich mich mit der Schaltung vertraut machen. Ich hoffe, ich kann es einfach von der Anleitung auf das PiPico übertragen und entsprechend die Leiterbezeichnung anpassen. Da setze ich mich gleich einmal dran.
Guten Abend Ich habe mich daran versucht die 5x4 Matrix zu programmieren. Ich hatte gehofft, aus der Anleitung von Adafruit einfach alles übernehmen zu können. So war es aber nicht. Es leuchtet nur die erste RGB. Zudem nennen sich die Anschlüsse auf dem Board anders. Diese entsprechend nur zu übernehmen, brachte auch nichts. Was mache ich denn falsch?
:
Bearbeitet durch User
Chris S. schrieb: > Was mache ich denn falsch? Zeig' deinen Schaltplan und dein Programm, dann können wir dir das sehr wahrscheinlich sagen. Ohne das beides können wir das nicht.
Ralf M. M. schrieb: > Aber darüber ist nicht der Arduino sprich der ATMega328 verbunden > sondern nur der USB to Serial Wandler, d.h. für den PC stellt sich der > Arduino als Serielle Schnittstelle dar und nicht als HID (Human Input > Device) wie z.B. Keyboard oder Gamepad. Dann ist ein Arduino mit einem ATmega328 vielleicht die falsche Wahl. Ein Arduino Pro Micro ist da z.B. eher für prädestiniert.
Wolfgang schrieb: > Dann ist ein Arduino mit einem ATmega328 vielleicht die falsche Wahl. > Ein Arduino Pro Micro ist da z.B. eher für prädestiniert. Er benutzt mittlerweile einen Raspi Pico. Der ist zu weit mehr in der Lage als dem, was der TO damit tun will. Sprich: das µC-Modul ist sicher nicht das Problem.
1 | import board |
2 | import keypad |
3 | import neopixel |
4 | |
5 | COLUMNS = 5 |
6 | ROWS = 4 |
7 | |
8 | pixels = neopixel.NeoPixel(board.GP5, 20, brightness=0.3) |
9 | |
10 | keys = keypad.KeyMatrix( |
11 | row_pins=(board.GP0, board.GP1, board.GP2, board.GP3), |
12 | column_pins=(board.GP13, board.GP12, board.GP11, board.GP10, board.GP9), |
13 | columns_to_anodes=False, |
14 | )
|
15 | |
16 | |
17 | def key_to_pixel_map(key_number): |
18 | row = key_number // COLUMNS |
19 | column = (key_number % COLUMNS) |
20 | if row % 2 == 1: |
21 | column = COLUMNS - column - 1 |
22 | return row * COLUMNS + column |
23 | |
24 | |
25 | pixels.fill((0, 0, 0)) # Begin with pixels off. |
26 | while True: |
27 | key_event = keys.events.get() |
28 | if key_event: |
29 | print(key_event) |
30 | if key_event.pressed: |
31 | pixels[key_to_pixel_map(key_event.key_number)] = (255, 0, 0) |
32 | else: |
33 | pixels.fill((0, 0, 0)) |
habe ich das so richtig eingefügt? Ja, ein PiPico und ich hatte nur diesen Code von der Adafruit Webseite umgeändert. Es leuchtet immer nur die erste RGB. Mal weiß, mal grün. Kann nicht sagen warum und wieso. Programm nutze ich sonst keins. Ich habe es mit Mu probiert aber dort wird mir immer wenn ich auf Seriell klicke angezeigt: "Kann nicht zu Gerät verbinden auf Port COM11. Mit Putty hat auch nicht funktioniert die Konsole zu öffnen wie in einem Tutorial gezeigt.
:
Bearbeitet durch User
Chris S. schrieb: > Ja, ein PiPico und ich hatte nur diesen Code von der Adafruit Webseite > umgeändert. Das ist das Problem. Niemand kann das nachvollziehen ohne den beteiligten Code von Adafruit. Auch der "Plan" ist absolut nicht nachvollziehbar, weil man darauf weder erkennen kann, wie die Leiterzüge laufen, noch wo genau nun die LEDs angeschlossen werden. Ein richtiger Schaltplan sieht anders aus. Was man aber auf jeden Fall sagen kann: Wenn du die in diesem Posting von dir Beitrag "Re: RGB Tastenfeld in 5x4 Sonderform" gezeigten Teile verwendest, dann stimmt am Programm definitiv etwas nicht. Das sind ganz einfache RGB-LEDs. Bei 4x5 Tastern sind also insgesamt 60 LEDs anzusteuern. 60 LEDs kann man aber nicht in einer 5x4-Matrix betreiben. Vermutlich ist diese Neopixel-Sache soweiso eigentlich für "intelligente" RGB-LEDs gedacht, wie etwa die WS2812B. Die passt dann für solche einfachen RGB-LEDs mal absolut garnicht. Völlig anderes Prinzip der Ansteuerung.
Ich verstehe das Problem nicht ganz. Die Schaltung habe ich so gemacht wie dort auf dem Bild. Der Rest ist von dieser PCB doch vorgegeben. Auch die RGBs sind schon auf den Platinen fest verbaut. Ich habe dort nicht diese Chinatasten drauf gebaut, sondern einfach Keyboard Tasten drauf gesteckt. Dafür sind schon Halterungen vorhanden. Die Schaltung oben muss halt einer Matrix entsprechen. Ich dachte, das wäre so korrekt. Das Programm von Adafruit? Keine Ahnung ich habe 2 Files in die Library kopiert. Diese benötigt man um Neokeya ansteuern zu können. Der von mir gepostete Code soll die dann aktivieren, dachte ich. Verzeihung, aber ich habe kaum Ahnung von sowas und aus diesem Grund wurde mir das auch empfohlen. Es sollte einfacher zu verstehen sein. Und ich verwende von dieser Platine nur eine 5x4 Matrix. Also 20 Tasten mit 20 RGbs. Das ist aber alles auf den einzelnen PCB Kacheln schon fertig montiert.
:
Bearbeitet durch User
Überprüf mal die Verkabelung. https://learn.adafruit.com/assets/103574 Ist zwar ein Arduino aber das ist egal. Kleiner Tipp dazu. Man klemmt immer (wie auf deiner Zeichnung richtig) die Y und die Y Leitung der Matrix nebeneinander an. Was ich aber sehe ist das deine LED's nicht richtig angeklemmt sind. Das solltest du überprüfen. Ebenso wie die Leitungsanschlüsse der Matrix !!! an der Platine. Das kommt mir komisch vor. https://learn.adafruit.com/adafruit-neokey-5x6-ortho-snap-apart/arduino Deine Matrix ist zwar anders aber das ist fast irrelevant da du nur an einigen Stellen im Programm das anpassen musst. Da findest du ergo alle Infos die du brauchst. Auch Downloads u.co. Bei Problemen : https://translate.google.com/?hl=de ;) Hinweis : Da du ein Pico benutzt, musst du die IDE entsprechend anpassen (Treiber für Pico einstellen).
Danke für den Schubser in die richtige Richtung. Wäre toll wenn du mir noch etwas genauer erklärst worauf du hinaus möchtest. > Was ich aber sehe ist das deine LED's nicht richtig angeklemmt sind. Woran siehst du das? :) > Das solltest du überprüfen. Ebenso wie die Leitungsanschlüsse der Matrix !!! an der Platine. Das kommt mir komisch vor. was genau ist komisch? > Hinweis : Da du ein Pico benutzt, musst du die IDE entsprechend anpassen (Treiber für Pico einstellen). IDE entsprechend anpassen? Treiber? Ich habe es wie nach Anleitung auf der Seite gemacht. Also erst das Pico Geflasht mit 7.0 dann die lib für die neokeys sowie den Code File angepasst für den Test.
Chris S. schrieb: > "Kann nicht zu Gerät verbinden auf Port COM11. > Mit Putty hat auch nicht funktioniert die Konsole zu öffnen wie in einem > Tutorial gezeigt. Das lässt darauf schliessen das die IDE mit den Board nicht zurecht kommt. Ich kenne den Pico nicht, deshalb kann ich dir da nicht helfen. Benutzt mal diese Anleitung um mit dein Pino zu "reden". https://draeger-it.blog/raspberry-pi-pico-in-der-arduino-ide-programmieren/ Da steht auch drin, wie man den "Treiber" für den Pico nach-installiert. Die ganze Anleitung auf adafriuts bassiert nämlich auf nämlich auf einen Arduino-NANO. Ist nicht wirklich ein Problem muss halt nur auf den Pico umgearbeitet werden. Wenn du die Anleitung da nutzt, dann sollte den Pico auch mit dir reden (via Seriall-Interface). Ansonsten kauf dir für 2-10 Euro ein Nano ;) Was die Sache viel einfacher macht. ;)
Aha. Hier wurde mir allerdings der pico empfohlen. Ich hätte noch eine Arduino hier liegen. Soll ich besser den nehmen? Da könnte ich in Simhub eine einfache Matrix hinterlegen und so funktioniert auch meine andere Buttonbox. Problem sind dann allerdings die RGB LEDs und ich habe wirklich null Ahnung, wie ich die dann so eingestellt bekomme, wie ich mir das vorstelle. Aber erst einmal sollte alles leuchten und druckbar sein. Ich mache mich gleich mal da dran. Danke sehr.
Chris S. schrieb: > Ich hätte noch eine Arduino hier liegen. > Soll ich besser den nehmen? Kann ich so nicht entscheiden. Fakt ist, die Tastatur würde (siehe Links) mit einen Arduino NANO problemlos nach zu bauen sein. Die Frage die sich dann stellt ist, wie geht es weiter. Weil die Software da macht nur "Buntes Licht" wenn du ein Knöpfchen drückst. Willst du die Daten auswerten und wie. ?? Der Nano hast 32 Kilobytes !!! an Speicher. Für normale kleine Anwendungen reicht das locker. Aber irgendwann ist selbst ein Rechenzentrum überlastet. Also musst du entscheiden wie viel Leistung / Speicher du brauchst für deine Anwendung. Da ist aber eh im ersten Falle ein Bastelprojekt ist, wäre es vielleicht keine schlechte Idee die Schaltung mit den Anschlüssen mal eben an ein Nano an zu klemmen OHNE LÖTEN. Für so was hast man Steckboards-Kabel entwickelt. Wenn das Teil auf den Nano läuft kann man im Schritt 2. versuchen es weiterzuentwickeln zu seiner Anwendung, ist auch ein Kostenfaktor. Man muss keine Perlen (pico) nutzen, wenn es auch kleiner geht. Wichtig ist aber, das du deine IDE richtig einstellst, und dabei ist es egal obs ein Nano o. Pico ist. ALLES braucht sein Treiber. Egal wie oft ich ein Board anschließe. Wenn es NEU ist und das Board eine LED hat, schicke ich BLINKI rüber. Schaue mir an wie die LED blinkt und freue mich das mein Board mit mir redet. Dann weiß ich das da kein Fehler vorliegt. Ist lächerlich aber so suche ich nie an der falschen Stelle. In den Blog-Link oben liest du genau was ich meine. Und ich denke das erste was du machen solltest ist Blinki zum Board zu senden. !!! Dann weist du wenigstens ob das Board mit den PC redet. Ach ja, Blinki ist ein Programm was die IDE fertig mitliefert, einfach nur laden und dann Hochladen. Und bei einen Pc ist es grundsätzlich so. ALLES was dran hängt braucht sein Treiber. Und ein Pico hängt genau so dran wie ein Nano (der meist ein CH-340-Treiber braucht).
Ok. Ich nehme mir das auf jedenfalls gleich als Lektüre vor. Meine Tasten sollen so eingestellt werden das sie beim 1. Druck Farbe X hat und beim 2. Farbe Y. Das halt bei allen 20 definiert. Ich habe mir das einfach vorgestellt :) Das ich die nicht mal zum laufen bekomme liegt sicher am Pico der da scheinbar nicht so freundlich zu mir ist wie der Arduino. Die Tasten würde ich dann wie Makrotasten als Keypad zuweisen. Ob das alles so funktionieren wird? Ich habe keine Ahnung. Jetzt aber erst mal zurück zum Anfang. :)
Chris S. schrieb: > Meine Tasten sollen so eingestellt werden das sie beim 1. Druck Farbe X > hat und beim 2. Farbe Y. Das halt bei allen 20 definiert. Ist doch einfach. Do fragst ja den Status ab. Als Antwort bekommst du welche Taste gedrückt wird. Nun schickst du einfach an diese Taste den Farbcode für die LED. Ist doch schon ähnlich in dein Code oben. Wird im Prinzip durch diese Zeile gemacht. pixels[key_to_pixel_map(key_event.key_number)] = (255, 0, 0) Musst nur key_event.key_number vorher abfragen und dann den Befehl passend zum Key mit der richtigen Farbe senden. if key_event.key_number = 5 pixels[key_to_pixel_map(key_event.key_number)] = (255, 0, 0) end if Für so was haben die Programmiergötter uns Variablen gegeben. ;)
Ok. Klingt für mich aber nicht einfach :) Ich habe bereits die nächsten Probleme. Bin der Anleitung gefolgt und habe den Treiber dafür installiert. Seitdem erkennt er den pico nicht mehr als Port, sondern als tragbares Gerät. Dadurch kann ich der Anleitung nicht weiter folgen. Ich soll den port mit dem Namen PiPico auswählen und dort den ersten Scatch erstellen.
Chris S. schrieb: > Habe was gefunden. Keine Ahnung wieso ich die übersehen habe. Es wurden > mir immer nur einzelne Farben angezeigt. > Aber vielleicht könnte es mit denen funktionieren. Keine zusätzliche > Bastelei und ich kann die Menge bestellen die ich benötige. Keine großen > Stückzahlen. Paar mehr falls was schief geht schaden trotzdem nicht. Hast du dazu einen Link?
Oh die hatte ich verworfen weil ich mich dann für das Adafruit System entschieden habe. Tut mir leid.
Dirk M. schrieb: > Chris S. schrieb: >> Habe was gefunden. Keine Ahnung wieso ich die übersehen habe. Es wurden >> mir immer nur einzelne Farben angezeigt. >> Aber vielleicht könnte es mit denen funktionieren. Keine zusätzliche >> Bastelei und ich kann die Menge bestellen die ich benötige. Keine großen >> Stückzahlen. Paar mehr falls was schief geht schaden trotzdem nicht. > > Hast du dazu einen Link? Habe eine Mail dazu erhalten. Von wegen ich könnte sie noch kaufen. Hier der Name: PB26-13M Platz 15*15mm Mit LED SPDT Momentary Selbst-Rückkehr PCB Push Button Schalter Für Video Prozessor Einfach in Google eingeben.
Guten Abend Es gibt Neuigkeiten! Inzwischen habe ich die Box soweit fertig. Das Feintuning hat begonnen aber im ganzen bin ich damit durch. Dann die Geschichte mit den Neokeys: Ich habe, nachdem ich die erste Platte eigentlich total versemmelt habe, mir eine zweite gekauft. Lötkolben auch getauscht und das ganze noch mal geplant und erst gelötet, dann zerschnitten. Das Teil läuft soweit, das die LED alle leuchten. Funktionstest ist bestanden. Ich habe ausserdem einen Arduino Micro benutzt und nicht diesen Pico. Mit dem bin ich nicht klar gekommen. Jetzt stehe ich aber vor dem letzten Problem: Dem Code für die Tasten. Ich habe soweit alles von dir versucht so umzusetzen wie vorgeschlagen und bin froh es so getan zu haben, aber das mit dem Programmieren will mir nicht gelingen. Du hast geschrieben: >pixels[key_to_pixel_map(key_event.key_number)] = (255, 0, 0) Musst nur key_event.key_number vorher abfragen und dann den Befehl passend zum Key mit der richtigen Farbe senden. if key_event.key_number = 5 pixels[key_to_pixel_map(key_event.key_number)] = (255, 0, 0) end if was muss denn sonst in den Code bzw den Sketch rein? Ich habe jetzt ein Tastenfeld in 5x4. (Bild1) Ich möchte gerne, das alle Tasten weiß leuchten und bei Betätigung die Farbe vordefiniert wechseln GENAU wie hier. (Bild 2) und beim erneuten betätigen wieder weiß. Wie spreche ich also nun die einzelnen Tasten/RGBs an? das will mir nicht in den Kopf :( Kannst du mir vielleicht helfen?
Das ist ne Daisy-Chain. Einzeln ändern geht nicht, Du musst immer alle neu beschreiben.
Verstehe ich nicht. Der Sinn hinter der Matrix Schaltung sollte doch sein, sie einzeln ansteuern zu können?
Chris S. schrieb: > Verstehe ich nicht. Der Sinn hinter der Matrix Schaltung sollte doch > sein, sie einzeln ansteuern zu können? Sind die RGB-LEDs in einer Matrix oder in einer Kette verschaltet?!
Matrix. Wobei...keine Ahnung ehrlich gesagt. Jedes Platinenteil ist halt mit jedem anderen verbunden. Ich habe einen Test durchgeführt und die LEDS sind der reihe nach an gegangen. Also sind sie einzeln steuerbar. Eigentlich. Das war halt ein fertiger Code. Simple Test. Und nun würde ich gerne den RGBs beim Tastendruck eine Farbe zuweisen knnen. In den Videos von Adafruit kommt das auch so rüber als wäre das möglich. Die drückt mit ihren Fingern auf die Taste und die Farbe ändert sich. Edit noch mal: Für mich ist das eine Matrix. Die Reihen und auch die Spalten werden durch Kabel zum Arduino geführt. Habe das extra so angeschlossen, wie es auf deren Seite auch gezeigt wird. Nur mit dem Unterschied, das ich jedes Teil noch untereinander verlöten musste,
:
Bearbeitet durch User
Chris S. schrieb: > 040DE0FB-2AF0-45AA-8507-9C2F66C3A090.jpg Was ist mit dem Knopp links unten, warum leuchtet der nicht? Chris S. schrieb: > Für mich ist das eine Matrix. Die Reihen und auch die Spalten werden > durch Kabel zum Arduino geführt. Die Tasten sind in einer Matrix, die Beleuchtung in einer Reihe? mfg mf
Chris S. schrieb: > if key_event.key_number = 5 > pixels[key_to_pixel_map(key_event.key_number)] = (255, 0, 0) > end if Genau das. key_event.key_number <- liefert dir die Nr. der Taste die gedrückt wurde. Die Abfrage testet ob die Taste gedrückt wurde. Wenn nun wie im Beispiel Taste 5 gedrückt wurde setzt du mit pixels[key_to_pixel_map(key_event.key_number)] = (r, g, b) die passende Farbe. R steht für Rot, G für Gelb, B = blau wie bei deinen Drucker. Die passenden Werte kannst du z.b. so raus finden. Starte PAINT auf den Windows-PC. Klicke auf FARB-Palette bearbeiten. Klicke auf eine Farbe dann siehst du unten die R G B Werte. Die Zahlen in die Software eingeben (s.o.) und das war es. Das Ergebnis ist, sobald die Taste gedrückt wird leuchte sie in der Farbe wie in Paint ausgesucht (jedenfalls ca.) Abweichungen sind immer drin. Notfalls nachbessern der Werte bis sie dir gefallen. Und kannst in der IF Abfrage dann auch noch weiter Ereignisse reincoden. Ich weiß ja nicht, was du damit im Endeffekt willst. Im Prinzip musst du den Teil nur sagen was passieren soll wenn die Taste gedrückt wird. Wenn die Taste beim 2. x ausgehen soll, musst du eine Status-Variable für die Taste anlegen. !!! Taste_5_status = false (aus) <- z.b. Ich habe ein ähnliches Tastenfeld (ohne Lämpchen) z.b. für eine Steuerungseinheit per IR benutzt. Ich lade mit Taste 1-8 vorprogrammierte Werte. 16 Sendet. 13 ruft ein Menü auf, was dann z.T. die Tastensteuerung umstellt. Die Varianten sind wie die Sache mit den Reiskorn und den Schachbrett (alte Chinesische Geschichte). Der Trick beim Programmieren ist, das man weiß was man will und das umsetzt. Der Rest ist nur noch Fleißarbeit. Dabei ist es völlig egal ob du eine Kaffeemaschine Programmierst die um 7:10 Kaffee macht oder deine Anwendung. Nur du programmierst dann die Schnittstelle zum User.
Die Taste hat nicht geleuchtet weil die nach der Reihe angehen und ich einfach nicht im richtigen Moment abgedrückt habe. Sekunde später und alle wäre aus gewesen :) @Schlaumaier wäre es vielleicht möglich, das du mir für 1-2 Tasten einmal genau den Sketch schreiben würdest, so wie er hinterlegt werden muss? Dann könnte ich das ableiten und die "Fleißarbeit" übernehmen und auf den Rest übertragen. Vor allem kann ich es dann auch nachvollziehen. So verstehe ich nach wie vor nicht, warum es so eingegeben werden muss.
Chris S. schrieb: > Dann könnte ich das ableiten und die "Fleißarbeit" übernehmen und auf > den Rest übertragen. Vor allem kann ich es dann auch nachvollziehen. So > verstehe ich nach wie vor nicht, warum es so eingegeben werden muss. Leider nein. Ich kann zu schlecht die Syntax von C. Ich programmiere die Teile in B4R (in den Fall). Das ist von der Logik her das selbe. Aber für dich leider eine ganz andere Syntax. Die würde dich nur verwirren. Aber lies dir mal diese Artikel durch. Und falls du dich wirklich mit der Materie weiter beschäftigen willst empfehle ich dir folgendes Buch. https://www.amazon.de/Arduino-Kompendium-Elektronik-Programmierung-Projekte/dp/3966450399 Wenn du es auf Papier bestellst bekommt du es als Ebook GRATIS in den üblichen Varianten (PDF / Epub) dazu. Code im Buch dann download. Ich habe es selbst gekauft, weil ich zu faul war für viele Sachen mich für die Ansteuerung durch Internet zu wühlen. Da ist das alles perfekt erklärt. SEHR EMPFEHLENSWERT. Kleiner Nebentipp am Rande: Bei Amazon Unlimited ist es auch zu haben (und das kann man 30 Tage kostenlos testen) ich habe es da getestet=einige Seiten gelesen , im Testzeitraum das Kindle Unlimited gekündigt und das Buch in meiner Buchhandlung vor Ort bestellt. ;)
ok. Vielen Dank. Ich lese das mir nun immer wieder durch und einerseits schreibst du, es sei total einfach. Man müsse nur dies und das eingeben. Andererseits sind die Sachen auf mich aber nicht übertragbar, obwohl du weiter oben mir die Hilfestellung von einem Code gegeben hast? Das passt nicht zusammen. Denn genau mit dem habe ich es doch probiert. Also entweder ist es zu kompliziert oder nicht mal eben zu bewerkstelligen. Warum weiß du aber, was ich machen müsste und andererseits nicht, was ich dort eintragen muss? Verzeih mir wenn ich das so blöd hinterfragen muss :D
Weil ich die Logik problemlos kann. Aber dir als Anfänger nicht die Syntax (die Art Rechtschreibung) richtig zeigen kann. Ich programmiere die Teile einfach unter einen anderen "Zwischensystem". Dieses Basiert auf der Programmiersprache BASIC. Das Arduino-System aber auf den den Grundlagen von C Die Logik ist bei JEDER Programmiersprache auf den Plani gleich. Die Syntax und teilweise auch der Programmaufbau aber total unterschiedlich. Ich schreibe z.b. in B4X . Der Grund ist, das ich zu faul bin, jede Menge Programiersprachen zu lernen von der reinen Syntax her. Also programmiere ich ALLES In Visual-Basic (o.ä.). Und B4X ist halt ein System was für Arduino Android Ei-Fon die selbe Struktur + Syntax hat wie Visual-Basic for Windows. Das wäre der Code in B4X for i = 1 to 16 ' schaltet alles LED's aus pixels[(i) = (0, 0, 0) next i if key_event.key_number = 5 then ' wenn Taste 5 gedrückt lasse sie grau leuchten pixels[key_to_pixel_map(key_event.key_number)] = (224, 224, 224) Starte_prg_von_taste_5 end if Du musst diesen BASIC - Code jetzt in C umwandeln. Hier die Erklärung für IF-THEN abfragen unter C https://www.delftstack.com/de/howto/arduino/arduino-if-statement/ Und hier hast du eine Erklärung wie man gewisse Sachen in Arduino-C löst. http://popovic.info/html/arduino/arduinoUno_1.html Es hilft nix. Du musst programmieren lernen. Wenigstens ein Bisschen.
Ok. Klingt alles nach Neuland. Ich gehe dann mal links gucken und setze mich dran.
Chris S. schrieb: > Ich möchte gerne, das alle Tasten weiß leuchten und bei Betätigung die > Farbe vordefiniert wechseln GENAU wie hier. (Bild 2) > und beim erneuten betätigen wieder weiß. Da hilft alles nichts, Du mußt einen Programmablaufplan erstellen. Um verschiedene Reaktionen auf einen Tastendruck zu erzeugen, brauchst Du eine Zählvariable. Den Wert der Variable kannst Du mit einem switch/case einer Farbe zuweisen oder als Index eines Arrays von Farbwerten. Erreicht die Variable den letzten Wert, setzt Du sie wieder auf 0. Und das machst Du dann für jede Taste. 10 Tasten = 10 Variablen.
>Wenn nun wie im Beispiel Taste 5 gedrückt wurde setzt du mit pixels[key_to_pixel_map(key_event.key_number)] = (r, g, b) die passende Farbe. R steht für Rot, G für Gelb, B = blau wie bei deinen Drucker. Wo sehe ich denn, welche Taste sich wie nennt? ich muss die im Code doch irgendwie ansprechen können. Aktuell hakt es genau daran. Ich kann mir auch von dem Link nicht wirklich viel ableiten. Denn darin werden einzelne LEDs behandelt die allerdings nur eine Farbe wiedergeben und auf einem Port sitzen. Ich habe einen Datenport und insgesamt laufen 20 Tasten mit 20 RGBs in einer Matrix zusammen. Ich finde einfach keinen Startpunkt bei dieser Geschichte. Die RGBS in der Matrix zu benennen war kein Problem. Aber die Tasten funktionieren halt nicht. Hier ist ein Beispiel Sketch:
1 | #include <Adafruit_NeoPixel.h> |
2 | #include "Adafruit_Keypad.h" |
3 | |
4 | #define ROWS 5 // rows
|
5 | #define COLS 6 // columns
|
6 | |
7 | #define NEOPIXEL_PIN A0
|
8 | #define NUM_PIXELS (ROWS * COLS)
|
9 | |
10 | Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_PIXELS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800); |
11 | |
12 | |
13 | //define the symbols on the buttons of the keypads
|
14 | char keys[ROWS][COLS] = { |
15 | {'1','2','3','4','5','6'}, |
16 | {'7','8','9','A','B','C'}, |
17 | {'D','E','F','G','H','I'}, |
18 | {'J','K','L','M','N','O'}, |
19 | {'P','Q','R','S','T','U'} |
20 | };
|
21 | |
22 | uint8_t rowPins[ROWS] = {6, 5, 4, 3, 2}; //connect to the row pinouts of the keypad |
23 | uint8_t colPins[COLS] = {7, 8, 9, 10, 11, 12}; //connect to the column pinouts of the keypad |
24 | |
25 | //initialize an instance of class NewKeypad
|
26 | Adafruit_Keypad customKeypad = Adafruit_Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); |
27 | |
28 | bool lit[ROWS*COLS] = {0}; |
29 | |
30 | void setup() { |
31 | Serial.begin(115200); |
32 | //while (!Serial);
|
33 | Serial.println("Ortho 5x6 keypad demo"); |
34 | strip.begin(); |
35 | strip.setBrightness(40); |
36 | strip.show(); // Initialize all pixels to 'off' |
37 | |
38 | customKeypad.begin(); |
39 | for (int i=0; i<ROWS*COLS; i++) { |
40 | lit[i] = false; |
41 | }
|
42 | }
|
43 | |
44 | uint8_t j=0; // color ticker |
45 | |
46 | void loop() { |
47 | //Serial.println("Test NeoPixels");
|
48 | customKeypad.tick(); |
49 | |
50 | while(customKeypad.available()){ |
51 | keypadEvent e = customKeypad.read(); |
52 | Serial.print((char)e.bit.KEY); |
53 | if (e.bit.EVENT == KEY_JUST_PRESSED) { |
54 | Serial.println(" pressed"); |
55 | uint8_t row = e.bit.ROW; |
56 | uint8_t col = e.bit.COL; |
57 | Serial.print("Row: "); Serial.print(row); |
58 | Serial.print(" col: "); Serial.print(col); |
59 | Serial.print(" -> "); |
60 | uint16_t keynum; |
61 | if (row % 2 == 0) { // even row |
62 | keynum = row * COLS + col; |
63 | } else { // odd row the neopixels go BACKWARDS! |
64 | keynum = row * COLS + (5 - col); |
65 | }
|
66 | Serial.println(keynum); |
67 | lit[keynum] = !lit[keynum]; // invert neopixel status |
68 | }
|
69 | else if(e.bit.EVENT == KEY_JUST_RELEASED) { |
70 | Serial.println(" released"); |
71 | }
|
72 | }
|
73 | |
74 | for(int i=0; i< strip.numPixels(); i++) { |
75 | if (lit[i]) { |
76 | strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255)); |
77 | } else { |
78 | strip.setPixelColor(i, 0); |
79 | }
|
80 | }
|
81 | strip.show(); |
82 | j++; |
83 | |
84 | delay(10); |
85 | }
|
86 | |
87 | |
88 | // Input a value 0 to 255 to get a color value.
|
89 | // The colours are a transition r - g - b - back to r.
|
90 | uint32_t Wheel(byte WheelPos) { |
91 | if(WheelPos < 85) { |
92 | return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); |
93 | } else if(WheelPos < 170) { |
94 | WheelPos -= 85; |
95 | return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); |
96 | } else { |
97 | WheelPos -= 170; |
98 | return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); |
99 | }
|
100 | }
|
Diesen habe ich umgeschrieben soweit ich das richtig verstanden habe zumindest, auf meine Bedürfnisse:
1 | #include <Adafruit_NeoPixel.h> |
2 | #include "Adafruit_Keypad.h" |
3 | |
4 | #define ROWS 4 // rows
|
5 | #define COLS 5 // columns
|
6 | |
7 | #define NEOPIXEL_PIN 6
|
8 | #define NUM_PIXELS (4 * 5)
|
9 | |
10 | Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_PIXELS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800); |
11 | |
12 | |
13 | //define the symbols on the buttons of the keypads
|
14 | char keys[ROWS][COLS] = { |
15 | {'1','2','3','4','5'}, |
16 | {'7','8','9','A','B'}, |
17 | {'D','E','F','G','H'}, |
18 | {'J','K','L','M','N'}, |
19 | };
|
20 | |
21 | uint8_t rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad |
22 | uint8_t colPins[COLS] = {7, 8, 9, 10, 11}; //connect to the column pinouts of the keypad |
23 | |
24 | //initialize an instance of class NewKeypad
|
25 | Adafruit_Keypad customKeypad = Adafruit_Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); |
26 | |
27 | bool lit[ROWS*COLS] = {0}; |
28 | |
29 | void setup() { |
30 | Serial.begin(115200); |
31 | //while (!Serial);
|
32 | Serial.println("Ortho 5x6 keypad demo"); |
33 | strip.begin(); |
34 | strip.setBrightness(40); |
35 | strip.show(); // Initialize all pixels to 'off' |
36 | |
37 | customKeypad.begin(); |
38 | for (int i=0; i<ROWS*COLS; i++) { |
39 | lit[i] = true; |
40 | }
|
41 | }
|
42 | |
43 | uint8_t j=0; // color ticker |
44 | |
45 | void loop() { |
46 | //Serial.println("Test NeoPixels");
|
47 | customKeypad.tick(); |
48 | |
49 | while(customKeypad.available()){ |
50 | keypadEvent e = customKeypad.read(); |
51 | Serial.print((char)e.bit.KEY); |
52 | if (e.bit.EVENT == KEY_JUST_PRESSED) { |
53 | Serial.println(" pressed"); |
54 | uint8_t row = e.bit.ROW; |
55 | uint8_t col = e.bit.COL; |
56 | Serial.print("Row: "); Serial.print(row); |
57 | Serial.print(" col: "); Serial.print(col); |
58 | Serial.print(" -> "); |
59 | uint16_t keynum; |
60 | if (row % 2 == 0) { // even row |
61 | keynum = row * COLS + col; |
62 | } else { // odd row the neopixels go BACKWARDS! |
63 | keynum = row * COLS + (COLS - col); |
64 | }
|
65 | Serial.println(keynum); |
66 | lit[keynum] = !lit[keynum]; // invert neopixel status |
67 | }
|
68 | else if(e.bit.EVENT == KEY_JUST_RELEASED) { |
69 | Serial.println(" released"); |
70 | }
|
71 | }
|
72 | |
73 | for(int i=0; i< strip.numPixels(); i++) { |
74 | if (lit[i]) { |
75 | strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255)); |
76 | } else { |
77 | strip.setPixelColor(i, 0); |
78 | }
|
79 | }
|
80 | strip.show(); |
81 | j++; |
82 | |
83 | delay(10); |
84 | }
|
85 | |
86 | |
87 | // Input a value 0 to 255 to get a color value.
|
88 | // The colours are a transition r - g - b - back to r.
|
89 | uint32_t Wheel(byte WheelPos) { |
90 | if(WheelPos < 85) { |
91 | return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); |
92 | } else if(WheelPos < 170) { |
93 | WheelPos -= 85; |
94 | return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); |
95 | } else { |
96 | WheelPos -= 170; |
97 | return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); |
98 | }
|
99 | }
|
Ich befürchte, irgendwas vergesse ich anzusprechen. Denn von diesem Sketch aus könnte ich bestimmt, sofern denn die Tasten mal funktionieren würden, eine Menge ableiten und ausprobieren.
Ist doch ganz einfach. Du musst folgende Zeilen ändern. Zeilen-Nr. lt. diesen Forum. !!! Zeile 4+5 #define ROWS 5 // rows ' Anzahl der Spalten Vermutlich 4 #define COLS 6 // columns ' Anzahl der Zeilen Vermutlich 5 Zeile 14-19 . Hier must du den Keyboard "abtippen". Damit die Matrix genau so aussieht wie deine. Damit legst du automatisch die Namen der Tasten fest, mit den du Sie später ansprichst. Char keys[ROWS][COLS] = { {'1','2','3','4','5'}, {'7','8','9','A','B'}, {'D','E','F','G','H'}, {'J','K','L','M','N'}, }; Zeile 21 + 22 legt die Anschlüsse Fest (Lerne Englisch für Anfänger) uint8_t rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad uint8_t colPins[COLS] = {7, 8, 9, 10, 11}; //connect to the column pinouts of the keypad Zeile 32 Serial.println("Ortho 5x6 keypad demo"); 'Gibt in der Arduino-IDE die Rückmeldung "Hallo ich bin da" und sagt dir das das Programm sauber gestartet ist. Zeile 51 : Serial.print((char)e.bit.KEY); Sobald du eine Taste gedrückt hast, steht in der Arduino-IDE welchen Name (Siehe Zeile 14-19) erkannt wurde. Grundsaätzlich : Serial.print ist der Befehl der dir Rückmeldungen in die Arduino-IDE gibt vom Programm. Du kannst dir so, Zustandsmeldungen, Werte von Variablen etc. anzeigen lassen. Auch Logikprüfungen sind so möglich . Du schreibt (siehe Zeile 53) Serial.println(" pressed"); Der Text wird nur ausgegeben weil du ne Taste gedrückt hast. Ergo weißt du das das Programm an der Stelle ist, und es da hängt oder auch nicht. Zeile 56 - 59 gibt dir weitere Infos was er genau erkannt hat. Tipp: Wenn es hinterher eng wird im Code (was selten passiert) dann entfernt man alle Zeilen mit Serial.print aus den Code wenn es an der Stelle gut läuft. Der Rest des Codes ist nur Blinki-Blinki um dir die Logik des Ansprechen und beleuchten klar zu machen. Einfach gesagt was dein weiteres Vorgehen angeht. Ändere die von mir beschriebenen Zeilen oben auf deine Tastatur. Das ist nämlich logisch alles das selbe. Aber die VOR-Initialisierung der Hardware (Zeile 0 - 27) muss sitzen. Ansonsten passiert da gar nix. !!! Sorge also dafür das du die logisch richtigen Rückmeldungen im Monitor (extra-Fenster der Arudino-IDE) bekommst. DANN geht es weiter.
Ja Moment :) Soweit war ich doch schon. Siehe den Code den ich geändert habe. Alles was soweit verständlich war habe ich auf mein Teil umgeschrieben. Lediglich das hier verstehe ich nicht so ganz: >Hier must du den Keyboard "abtippen". wo abtippen? Es passiert ja nichts. Ich kann die Tasten nicht erkennen also kann ich auch keine einfügen dort. Ich hatte es so wie im Beispiel also belassen. Dann erklärt das auch, warum, nichts passiert? >Zeile 32 Serial.println("Ortho 5x6 keypad demo"); 'Gibt in der Arduino-IDE die Rückmeldung "Hallo ich bin da" und sagt dir das das Programm sauber gestartet ist. Zeile 51 : Serial.print((char)e.bit.KEY); Sobald du eine Taste gedrückt hast, steht in der Arduino-IDE welchen Name (Siehe Zeile 14-19) erkannt wurde. in der IDE steht nie etwas. Nichts... Nur das es einen Fehler beim Übertragen gibt: >C:\\Documents\Arduino\libraries\Adafruit_Keypad/Adafruit_Keypad_Ringbuf fer.h:57:5: note: type 'struct Adafruit_Keypad_Ringbuffer' should match type 'struct Adafruit_Keypad_Ringbuffer' Adafruit_Keypad_Ringbuffer; ^ C:\Documents\Arduino\libraries\Adafruit_Keypad\Adafruit_Keypad_Ringbuffe r.h:57:5: note: the incompatible type is defined here Adafruit_Keypad_Ringbuffer; ^ Ich habe diese Ordner bereits neu installiert, die Daten dort angesehen und auf Github versucht mit den alternativen klar zu kommen. Weiß halt nicht was damit gemeint ist. Am Ende jedoch speichert er den Sketch trotzdem ab. Das hre ich daran, das er sich ab und anmeldet am Port. Und an dieser Zeile hier: >Der Sketch verwendet 7282 Bytes (25%) des Programmspeicherplatzes. Das Maximum sind 28672 Bytes. Globale Variablen verwenden 372 Bytes (14%) des dynamischen Speichers, 2188 Bytes für lokale Variablen verbleiben. Das Maximum sind 2560 Bytes. >Serial.print ist der Befehl der dir Rückmeldungen in die Arduino-IDE gibt vom Programm. Du kannst dir so, Zustandsmeldungen, Werte von Variablen etc. anzeigen lassen. Auch Logikprüfungen sind so möglich . Du schreibt (siehe Zeile 53) Serial.println(" pressed"); Der Text wird nur ausgegeben weil du ne Taste gedrückt hast. Ergo weißt du das das Programm an der Stelle ist, und es da hängt oder auch nicht. >Sorge also dafür das du die logisch richtigen Rückmeldungen im Monitor (extra-Fenster der Arudino-IDE) bekommst. Das hier ist der Schlüssel. Ich bekomme keine Rückmeldungen. Das ist es ja:(
Dein Sketch ist NICHT hochgeladen. Wenn das hochgeladen ist, und die initialisieren überlebt hat und BEVOR du irgendwas machen kannst / Musst steht im Seriellen-Monitor. void setup() { ' <-erste echte Programmroutine die abgearbeitet wird NACH den INI. Serial.begin(115200); ' init die Seriell Schnittstelle (ich würde den Wert auf bei Stress 9600 setzen. //while (!Serial); Serial.println("Ortho 5x6 keypad demo"); <- Und das sagt dir dann das es lebt. Bei dir ist zwar richtig berechnet worden. ABER die Fehlermeldungen sagen das das Adafruit-Teil nicht mit deiner IDE zusammenarbeitet. Mein Tipp: Lass die Installation von der IDE machen Hier die Anleitung. http://funduino.de/hardware-software#222_Bibliotheken_zur_Arduino_Softwarehinzufuegen Wenn du in einen Code z.b. #include "Adafruit_Keypad.h" liest, dann ist das erste was du versuchen solltest nach der Anleitung im Link vorzugehen. Du gibst in den Such-Fenster einfach den Teil in den " ein, aber OHNE .h und den Unterstrich durch ein Leerzeichen ersetzen. Was in den Beispiel bedeutet : adafruit keypad Da finde ich die Libs in mehren Versionen. Ich fange meist mit der neusten an, und wenn die Stress machen stelle ich (wenn vorhanden) auf eine neue um. =================================================================== Chris S. schrieb: > wo abtippen? Es passiert ja nichts. Ich kann die Tasten nicht erkennen > also kann ich auch keine einfügen dort. hihi. Ich meine die (mögliche) Beschriftung deiner Tastatur. Was du sogar indirekt gemacht hast. ;) char keys[ROWS][COLS] = { {'1','2','3','4','5'}, {'7','8','9','A','B'}, {'D','E','F','G','H'}, {'J','K','L','M','N'}, }; Bedeutet die 2 Taste in der 3 Reihe ist (oder wird) mit E beschriftet auf der echten vor dir gekauften Tastatur. Und damit du Durchblick hast, gibst du mit der Martix halt jeder Taste ein Namen. Genau wie die Tasten auf deiner PC-Tastatur. Die mit den A drauf, ist halt die A-Taste ;) Du gibst durch diesen Befehl also nur der Taste ein Namen den man sinnesweise mit der Matrix der Tastatur gleich gibt (deshalb das abtippen). Ich persönlich mache 0-9 und dann mit Buchstaben weiter. In der Abfrage schreibe ich im Kommentar dann dahinter was ich damit will. z.b. keypadEvent e = customKeypad.read(); Serial.print((char)e.bit.KEY); if (e.bit.EVENT == "E") { ' funkt Taste e = Menü aufrufen. das ' bedeutet das alles was dahinter kommt bla bla ist, und von Compiler ignoriert wird.
Erst einmal vielen Dank das du mir das so gut erklärt hast. >Wenn das hochgeladen ist, und die initialisieren überlebt hat und BEVOR du irgendwas machen kannst / Musst steht im Seriellen-Monitor. Ich habe hier einen anderen Test mal auf den Arduino hochgeladen um die LEDs zu testen. Da wird mir auch nichts im Monitor angezeigt. Da steht im blauen Rahmen nur das "Hochladen abgeschlossen" ist. Im Monitor unter Werkzeuge, steht nichts. Vielleicht meinst du auch noch was anderes? >Lass die Installation von der IDE machen Genau das habe ich auch getan. Ich bin nur noch nicht alle Versionen durch gegangen. Werde ich jetzt mal tun. >hihi. Ich meine die (mögliche) Beschriftung deiner Tastatur. Was du sogar indirekt gemacht hast. ;) Sehr gut. Dann kann das so bleiben vorerst. Edit: Also sobald ich die Version auf 1.2 änder, wird mir gar nicht mehr das Beispiel der Ortho 5x6 in Beispielen angezeigt. Das führt dann auch dazu, das ich beim Überprüfen 1000 Fehlermeldungen bekomme. Jedes andere Beispiel mit Keypads wirft mir immer den Fehler mit diesem Ringbuffer aus.
:
Bearbeitet durch User
Hmm Ich würde mal das Testen. Aber nur als "Schuss ins Blaue." Ich muss nämlich zugeben, das ich keine Ahnung habe was diese Fehlermeldung bedeutet. https://www.arduino.cc/reference/en/libraries/ringbuffer/ Davon abgesehen gilt immer. Es kann nie schlecht sein, wenn man viele Libs auf den Rechner zu Verfügung hat. Vielleicht das ist aber meine reine Vermutung, braucht die Lib eins der Adafruit-Teile.
Leider habe ich genau das auch schon probiert :) Ich habe auch schon gedacht das irgendwas vielleicht in der Datei dazu fehlerhaft geschrieben wurde aber das kann ja nicht sein. Oder der Arduino Micro ist ungeeignet?
Chris S. schrieb: > Oder der Arduino Micro ist ungeeignet? Der merkt gar nix davon. Wenn du auf den Micro BLINKI (das ist eine Code den die IDE mitbringt) übertragen kannst dann ist alles fein was die IDE-Komunikation angeht. Wenn du in Blinki nach einen Delay Befehl mal den Befehl Serial.println("Blinki blinkt"); einträgst, sieht du dann die Rückmeldung im Monitor. (Ist ein extra Fenster in der IDE). Aber dein Problem ist ein reinen Software-Problem. Der Compiler bekommt irgendwas in den falschen Hals. Schreib mal Adafruits an, vielleicht ist denen das Problem bekannt und sie haben eine Lösung. Ich gebe zu, das ich keine habe. Ferndiagnosen sind immer schwer besonders wenn es sich um Hardware handelt die ich nicht kenne. Ansonsten melde dich mal im Arduino-Forum an. Da gibt es eine DE Abteilung und die Jungs da sind viel Besser als ich. Wobei ich persönlich versuchen würde das System zu trennen und mit Standard-Routinen auszukommen. Also ohne Adafruits Zeug. Das würde bedeuten ich indiziere einen KEYPAD-Treiber und ein WS2812 Treiber. Beides gibt es wie Sand am Meer. Der Keypad-Treiber ist für die Tasten da. Der WS2812-Treiber für die Beleuchtung. Wenn du besser wärst in den Materie (keine Beleidigung) würde ich dir sagen, tausche den Neopixel-Treiber (Treiber = Include) gegen ein anderen WS-2812 Treiber aus und teste das ganze. Du darfst nie vergessen. Das ganze System ist auf Basteln und lernen ausgelegt (besonders an Schulen) und nicht für DAUS die etwas um schicken weil sie die Anleitung nicht lesen können. ;) Und ich finde genau DAS macht den Reiz aus. ;)
Schlaumaier schrieb: > Wenn du besser wärst in den Materie (keine Beleidigung) würde ich dir > sagen, tausche den Neopixel-Treiber (Treiber = Include) gegen ein > anderen WS-2812 Treiber aus und teste das ganze. Es geht bei dieser Aussage nicht darum das du eine andere Include machst, sondern das du dann den ganzen Code umschreiben musst. Aber noch einmal. Das sind 2 verschiedene System auf der Platine die eigentlich NIX mit einander zu tun haben. 1. Das Keypad-System. Das kann jeder lausige Keypad-Treiber ansteuern. 2. Das Beleuchtungssystem. Das ist ein WS2812 System. Mache dich über das System = die Ansteuerung diese "LED" mal schlau. Dann verstehst du was ich meine. WS2812 (o.ä.) findest du in jeder LED-Farbsteuerungskette aus den Supermarkt mit Fernbedienung. Die sind heutzutage nix besonders mehr. Sie sind etwas zickig (findest hier im Forum Beträge ohne ende zu) aber perfekt um Beleuchtungswünsche zu realisieren. ;)
Ok. Also kann ich das was ich jetzt verbaut habe auch damit nutzen wenn ich das richtig verstanden habe? Ich muss mir halt "nur" die Codes zusammen basteln. Bei Adafruit habe ich schon angefragt und das Problem geschildert. Kannst wohl Gedanken lesen? :)
Ok. Also das Keypad funktioniert einwandfrei. Die definierten Zahlen und Buchstaben werden auch so im Monitor angezeigt. Das war natürlich einfach! Hatte es die ganze Zeit richtig eingegeben, aber der Fehler scheint am Code von Adafruit zu liegen. Das waren jetzt einige Tage für Nüsse :( Jetzt geht es weiter. Nun müssen diese Tasten die RGBs zugewiesen bekommen. Bisher habe ich aber nur Lichterketten gefunden und ich muss einzelne RGBs ansteuern können.
Hier ist eine Anleitung für die Ansteuerung für die LED's. https://funduino.de/nr-17-ws2812-neopixel Es gibt mit Sicherheit auch noch andere Lib's. Aber die Adafruit-Neopixel lib ist dominant. Aber schön das die die erste Hälfte der Aufgabe (inkl. Rückmeldung im Monitor) hinbekommen hast. So langsam wird das was, und du lernst sogar was.
Kleiner Nachtrag: https://www.youtube.com/watch?v=UVISnxXh_VY Ist im Prinzip das selbe wie dein Keyboard. Du musst nur den Datenpin angeben, dafür sorgen das die Kette genug Saft hat (Notfalls extern versorgen) und im Programm-Befehl sagen wie welche LED leuchten soll. Vorher nur sagen wie lang die Kette ist. Du hast eine Kette !!!! die liegt nur komisch unter den Tasten rum ;)
Oh danke für die Sachen! Werde ich mir reinziehen und mal sehen ob ich es hin bekomme. Übrigens hatte ich schon solche Neopixel WS2812 gesucht aber dort ging es immer um define Pin x und define Pin y für irgendwelche Daten. Andere Anleitungen hatten RGB aber dann wurden dort die Farben einzeln am Pin angesteuert. Konnte mir davon nichts ableiten. Das hier sieht aber gut aus. :)
gugg Video an. Du brauchst SAFT (+ u. -) und EINE Datenleitung. Reicht völlig aus. Du brauchst nur die Anzahl der LED's angeben. In deinen Code NUM_PIXEL #define NEOPIXEL_PIN 6 ' Pin an den die Datenleitung angeschlossen ist. #define NUM_PIXELS (4 * 5) <- Anzahl der LED's Das ist alles. Wie gesagt. Die sind manchmal zickig, und dir geht schnell der Saft aus, deshalb hat der in den Video auch eine Externe Versorgung. Aber ansonsten sind die fein. Chris S. schrieb: > Übrigens hatte ich schon solche Neopixel WS2812 Die bekommst du bei Ebay an jeder Ecke. Aber du solltest 2 Bedingungen beachten. 1. Das sie die Spannung deines Board haben. !! (Meist 5 Volt), es gibt auch welche die 12 V brauchen. 2. Das sie nach JEDER Led mit einer Schere durch zu schneiden sind. Man muss ja nicht, aber wenn es nicht passt sieht es so besser aus. Davon abgesehen kann man sie dann leichter verlegen. Gib einfach "Arduino und WS2812B (neueres Modell) ein.
Ich bin schon am LEDs sortieren und die Farben stelle ich auch schon ein. Bin also auf Zack gerade. Jetzt muss ich nur noch wissen wie ich da gleich die Taste so steuer, das sie bei weiß bleibt und bei erneutem Druck auf die eingestellte Farbe zurück geht. Dann bin ich schon fertig. Bilder gibts dann natürlich auch
Habe die Farben jetzt erst einmal sortiert. Nach Spalten so wie ich das für mich in der Matrix auch darstellen möchte. Leider sind die Neopixel ja nicht der Reihe nach geschaltet. Musste also etwas herum probieren. Jetzt läuft das JUHU Morgen gucke ich dann mal ob ich die Tasten zum umschalten bekomme.
Na fein. Dann wird das ja langsam was. Chris S. schrieb: > Morgen gucke ich dann mal ob ich die Tasten zum umschalten bekomme. Dein Programm muss den Status der Taste wissen. Die einfachste Methode ist eine Variable je Taste zu setzen. Entweder über ein Array oder einzeln. Hier im Beispiel ist es eine Varible je Taste = Status_taste_1 für Taste 1. Das geht auch mit weniger Code einfacher über ein Array. Aber dazu musst du erst mal Array verstehen lernen ;) und nicht nur benutzen. Weil DAS machst du mit den Code ja. Einzeln ist altmodisch und hässlich aber funktioniert. ;) Wenn du nur 2 Zustände brauchst reicht es die Variable BOOLEAN zu definieren und den Status festzulegen. z.B. Aus / EIN. Dann am Start den Zustand und den Status setzen. z.b. Status_taste_1 = false ' led aus Bei der Abfrage machst du dann if status_taste_1 = false then status_taste_1 = true und via Befehl die passende Farbe setzen else status_taste_1 = false und via Befehl die LED ausschalten bzw. die passende Farbe setzen end if Das ist Basic-Code und nur zur logischen Erklärung. Musst du in den C-Code umwandeln. Wenn du mehr als 2 Zustände brauchst, musst du die Variable der Taste z.b. als Integer definieren und die if-then Abfrage anpassen. Eine alternative zu if /then ist Switch-Case. https://www.arduino.cc/reference/de/language/structure/control-structure/switchcase/ Must du dich mal schlau lesen. Wie hast du denn das Ring-Problem gelöst ??
Ok. Ich gucke mal das ich das umgeschrieben bekomme. Danke. Das Ring Problem habe ich gelst, da ich es gar nicht verwendet habe. Habe lediglich Testkeypad und den Code von deinem Link zusammen gemischt. Nicht wundern. Die Farben entsprechen exakt dem wie es sein soll. :) Mein Code sieht aktuell so aus:
1 | #include <SimpleKeypad.h> |
2 | #include <Adafruit_NeoPixel.h> |
3 | #ifdef __AVR__
|
4 | #include <avr/power.h> |
5 | #endif
|
6 | #define PIN 6
|
7 | #define NUMPIXELS 20
|
8 | Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); |
9 | |
10 | int pause=100; // 100 Millisekunden Pause bis zur Ansteuerung der nächsten LED. |
11 | |
12 | const byte nb_rows = 4; // four rows |
13 | const byte nb_cols = 5; // four columns |
14 | char key_chars[nb_rows][nb_cols] = { // The symbols of the keys |
15 | {'1', '2', '3', '4', '5'}, |
16 | {'6', '7', '8', '9', 'A'}, |
17 | {'B', 'C', 'D', 'E', 'F'}, |
18 | {'G', 'H', 'I', 'J', 'K'} |
19 | };
|
20 | byte rowPins[nb_rows] = {2, 3, 4, 5}; |
21 | byte colPins[nb_cols] = {7, 8, 9, 10, 11}; |
22 | |
23 | SimpleKeypad kp1((char*)key_chars, rowPins, colPins, nb_rows, nb_cols); // New keypad called kp1 |
24 | |
25 | void setup() { |
26 | Serial.begin(9600); |
27 | Serial.println("Press any key on the keypad and it will show up here :"); |
28 | pixels.begin(); // Initialisierung der NeoPixel |
29 | }
|
30 | |
31 | void loop() { |
32 | char key = kp1.getKey(); // The getKey function scans the keypad every 10 ms and returns a key only one time, when you start pressing it |
33 | if (key) { // If getKey returned any key |
34 | Serial.println(key); // it is printed on the serial monitor |
35 | |
36 | pixels.setPixelColor(0, pixels.Color(0,255,255)); |
37 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
38 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
39 | pixels.setPixelColor(9, pixels.Color(0,255,255)); |
40 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
41 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
42 | pixels.setPixelColor(10, pixels.Color(0,255,255)); |
43 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
44 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
45 | pixels.setPixelColor(19, pixels.Color(0,255,255)); |
46 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
47 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
48 | |
49 | pixels.setPixelColor(1, pixels.Color(255,255,0)); |
50 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
51 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
52 | pixels.setPixelColor(8, pixels.Color(255,255,255)); |
53 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
54 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
55 | pixels.setPixelColor(11, pixels.Color(255,255,255)); |
56 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
57 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
58 | pixels.setPixelColor(18, pixels.Color(0,255,0)); |
59 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
60 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
61 | |
62 | pixels.setPixelColor(2, pixels.Color(255,255,255)); // |
63 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
64 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
65 | pixels.setPixelColor(7, pixels.Color(0,255,0)); // |
66 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
67 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
68 | pixels.setPixelColor(12, pixels.Color(0,255,0)); // |
69 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
70 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
71 | pixels.setPixelColor(17, pixels.Color(0,255,255)); // |
72 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
73 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
74 | |
75 | pixels.setPixelColor(3, pixels.Color(0,0,0)); // |
76 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
77 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
78 | pixels.setPixelColor(6, pixels.Color(0,0,0)); // |
79 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
80 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
81 | pixels.setPixelColor(13, pixels.Color(0,0,0)); // |
82 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
83 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
84 | pixels.setPixelColor(16, pixels.Color(0,0,0)); // |
85 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
86 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
87 | |
88 | pixels.setPixelColor(4, pixels.Color(0,255,255)); |
89 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
90 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
91 | pixels.setPixelColor(5, pixels.Color(255,255,255)); |
92 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
93 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
94 | pixels.setPixelColor(14, pixels.Color(255,255,255)); |
95 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
96 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
97 | pixels.setPixelColor(15, pixels.Color(0,255,255)); |
98 | pixels.show(); // Durchführen der Pixel-Ansteuerung |
99 | delay (pause); // Pause, in dieser Zeit wird nichts verändert. |
100 | |
101 | }
|
102 | }
|
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.