LED Drucktaster an Arduino Micro Buttonbox anschliessen.

Hallo

Ich habe eine Buttonbox mit 32 Tasten gebaut. Als Controller dient ein Arduino Micro der am PC als Joystick erkannt wird. Für die Verkabelung habe ich eine 4x8 Matrix erstellt, was eine Kombination aus 32 Tasten ermöglicht. Alles funktioniert wunderbar soweit, zum Glück, denn in wirklichkeit habe ich von Elektronik keine Ahnung. Ich habe mich einfach damit beschäftigt und habe das irgendwie hinbekommen.

Aber, die eine Taste (die Grosse Engine Start Taste) hat eine LED und könnte leuchten. Nur weiss ich nicht wie und wo es angeschlossen werden sollte. Von Volt und Ohm habe ich keine Ahnung.

Zur Darstellung habe ich ein paar Bilder hinzugefügt. Auch eine Anleitung zur LED Taste habe ich beigelegt, damit ihr alle Infos habt.

Ob die Taste dauerleuchten soll oder nur beim drücken weiss ich noch nicht und ist auch egal.

Wer kann helfen?

Hier das Script:

#include <Keypad.h>
#include <Joystick.h>

#define ENABLE_PULLUPS
#define NUMBUTTONS 32
#define NUMROWS 4
#define NUMCOLS 8

byte buttons[NUMROWS][NUMCOLS] = {
  {0,1,2,3,4,5,6,7},
  {8,9,10,11,12,13,14,15},
  {16,17,18,19,20,21,22,23},
  {24,25,26,27,28,29,30,31}

};

byte rowPins[NUMROWS] = {A0, A1, A2, A3};
byte colPins[NUMCOLS] = {2, 3, 4, 5, 6, 7, 8, 9};

Keypad buttbx = Keypad( makeKeymap(buttons), rowPins, colPins, NUMROWS, NUMCOLS);

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, 
  JOYSTICK_TYPE_JOYSTICK, 32, 0,
  false, false, false, false, false, false,
  false, false, false, false, false);

void setup() {
  Joystick.begin();
}

void loop() { 
  CheckAllButtons();
}

void CheckAllButtons(void) {
  if (buttbx.getKeys()) {
     for (int i=0; i<LIST_MAX; i++) {
       if ( buttbx.key[i].stateChanged ) {
         switch (buttbx.key[i].kstate) {  
           case PRESSED:
           case HOLD:
             Joystick.setButton(buttbx.key[i].kchar, 1);
             break;
           case RELEASED:
           case IDLE:
             Joystick.setButton(buttbx.key[i].kchar, 0);
             break;
         }
       }   
     }
   }
}


Zuerst einmal ein eine Sketch Zeichnung. (das nennt man doch so oder?)


So sieht die Buttonbox verbaut aus.


Von innen!


Die Taste mit LED ist jetzt an Schraube 1 und 2 angeschlossen. (nur Taster Funktion)
Am Arduino Micro verbindet es beim drücken A2 und D2.


Das ist die Anleitung zur LED Taste.

Moin,

sieht gut aus, das Teil!
LEDs haben zwei Anschlüsse: Anode (+) und Kathode (-)
Siehst Du ja auch auf dem Datenblatt, da ist vor der Anode noch ein 1,5 kOhm Widerstand. Der Wert ist für den Betrieb mit 5 V zu groß, da siehste nix funzeln.

Probier mal, ob Du an den Widerstand rankommst und ihn tauschen kannst. Wenn nicht wirst Du nur mit Zusatzaufwand das Ding zum leuchten bekommen, Stepup-Wandler könnte man einbauen ... keine Ahnung ob Du Dich da reinhängen willst.

Klaus_ww:
Probier mal, ob Du an den Widerstand rankommst und ihn tauschen kannst. Wenn nicht wirst Du nur mit Zusatzaufwand das Ding zum leuchten bekommen, Stepup-Wandler könnte man einbauen ... keine Ahnung ob Du Dich da reinhängen willst.

Ein StepUp-Wandler reicht da nicht.
Dann braucht es auch einen Spannungsteiler am Arduino-Pin.
Sonst liegt die höhere Spannung am Arduino.
Widerstand tauschen ist die bessere Lösung.

Edit:
Das macht aber nur Sinn, wenn die Led und der Widerstand direkt rausgeführt wird.

Es ist fraglich, ob es überhaupt geht, da sich die Led einen Anschluss mit dem Taster teilt. Welcher wiederum Teil einer Matrix ist.

Also beim Widerstand tauschen beide Anschlüsse rausführen.

Eine LED innerhalb einer Tastaturmatrix bei dreipoligem Tasteranschluß halte ich für überhaupt möglich nicht so einfach, da sie nur sporadisch Spannung bekäme. Wenn man den Taster aus der Matrix herausnimmt und selbständig am Micro anschließt, geht es. Pins sind ja noch frei.

Der Spanier war schneller :slight_smile:

Ihr habt Recht, hab mir das Schaltbild des Tasters nicht genau genug angeschaut. Als Teil der Matrix > Finger weg von LED-Beschaltungen.

Gehen tuts schon aber dann muß die Matrix und das ganze Auslesen der Matrix auf die Ansteuerung der LED optimiert werden. Das Auslesen der Taster kann ja sehr schnell erfolgen. einige µS pro Tasterreihe genügen. Außerdem ist es Vorteilhaft. wenn die Taster mit LED so eingebaut sind daß alle LED gleichzeitig leuchten können.
Grüße Uwe

Danke allen für eure Vorschläge.

Die Taste habe ich nun auseinander genommen und siehe da, ein Widerstand.

Mit was für einen muss ich den ersetzen?

Die Taste muss nicht zwingend teil der Matrix sein.

Wie gesagt, ich habe wenig Ahnung von Elektronik. Also sagt mir bitte was ich genau machen muss, wie ich diesen Button aus der Matrix nehme und wo ich es anschliessen kann. Danke :slight_smile:


Engine Start Button mit Widerstand und LED

Wenn die Taste aus der matrix nehme kannst ist es sicher am einfachsten.

Der Taster wird einen gemeinsamen Pol haben für den Taster und die LED. Jetzt mußt Du herausfinden weches Pind er LEd da dran ist (Kathose oder Anode).
Grüße Uwe

Wenn du ein Board mit 5 Volt verwendest, würde ich den Widerstand durch einen mit ca. 200 bis 500 Ohm ersetzen und versuchen die Anschlüsse getrennt von den Anschlüssen des Tasters herauszuführen. Es geht da eigentlich nur um den Anschluss "1" laut Datenblatt (siehe Ausgangspost). Dann kannst du die LED ganz unabhängig vom Taster betreiben.

uwefed:
Jetzt mußt Du herausfinden weches Pind er LEd da dran ist (Kathode oder Anode).

Laut Datenblatt Anode (+) an Pin 1, Kathode (-) an Pin 3.

uxomm:
Wenn du ein Board mit 5 Volt verwendest, würde ich den Widerstand durch einen mit ca. 200 bis 500 Ohm ersetzen und versuchen die Anschlüsse getrennt von den Anschlüssen des Tasters herauszuführen.

Widerstand = (5V - 2,2V) / 0,02A = 140 Ohm also irgendwas größer diesem Wert.

Ich sehe drei Möglichkeiten:

  • Widerstand wechseln und Taster verläßt Matrix.
  • Widerstand wechseln und Anode getrennt herausführen. Taster kann in Matrix bleiben.
  • Anode und Kathode getrennt herausführen, wenn kein Widerstand mechanisch paßt. Taster kann in Matrix bleiben, Widerstand außerhalb des Tasters verdrahten.

Wenn Du schreibst, wofür Du Dich entschieden hast, kann es weitergehen.

Besten Dank für eure hilfreichen Antworten.

agmue:
Ich sehe drei Möglichkeiten:

  • Widerstand wechseln und Taster verläßt Matrix.
  • Widerstand wechseln und Anode getrennt herausführen. Taster kann in Matrix bleiben.
  • Anode und Kathode getrennt herausführen, wenn kein Widerstand mechanisch paßt. Taster kann in Matrix bleiben, Widerstand außerhalb des Tasters verdrahten.

Wenn Du schreibst, wofür Du Dich entschieden hast, kann es weitergehen.

Ich habe mich für Variante 2 und 3 entschieden. Wobei der Widerstand mit einem 150 Ohm Widerstand intern ersetzt werden konnte. Es schien mir logisch, Anode und Kathode vom Taster komplett zu trennen und habe deswegen Schraube 3 komplett eliminiert und eine Öffnung gebohrt, um Anode und Kathode getrennt herauszuführen.


Violett = Anode (+) hier ist jetzt ein 150 Ohm Widerstand dazwischen.
Weiss = Kathode (-)

So kann ich die Taste in der Matrix lassen und die LED separat ansteuern, oder?

Ihr dürft jetzt gerne Vorschläge machen, wie ich die LED am Arduino anschliessen kann und wie ich Sie zum leuchten bringe. Entweder dauerhaft leuchten, was sicher am einfachsten ist, oder mit einem Ereignis verknüpfen. Zb. Wenn eine Matrix Taste gedrückt wird. Danke