Verkabelung einer Knopfleiste

Hallo :slight_smile:

ich bin noch relativ neu bei Arduino und brauch für eine Verkabelung ein wenig Hilfe.
Für ein Projekt brauche ich mehrere Knöpfe an einem ESP32 und habe mir dafür eine dieser Knopfleisten besorgt. Die jeweiligen Pins am ESP32 sollen dann ein HIGH lesen wenn die Buttons betätigt werden.

Universal 4 Key Push Button Switch Modul Keyboard Board für Arduino DIY KIT https://amzn.eu/d/4Jbd0ji

Stellt sich jetzt aber heraus, dass die eigentlich für einen Arduino Mega vorgesehen ist, der wohl schon Pull-Up Wiederstände hat. Wenn ich das richtig verstanden hab hat ein ESP32 die nicht intern.
Um das Extern zu lösen will ich versuchen, die Verkabelung so klein wie möglich zu halten und hab ich mich an einem ersten Schaltplan versucht:

Würde das mit dem Pull-Down so funktionieren? Und wenn nicht, was müsste ich ändern?

Wenn ich das richtig verstanden hab, dann müssten die Dioden den Strom daran hindern, alle Eingänge auf HIGH zu stellen wenn ich einen Knopf drücken würde.

Ich würd mich über Hilfe sehr freuen.
Viele Grüße und schönes Wochenende :slight_smile:

Der ESP32 hat sowohl Pulllup- als auch Pullodwn-Fähigkeiten

pinMode (Pin1, INPUT_PULLUP);
pinMode (Pin2, INPUT_PULLDOWN);

Der Widerstandswert ist nicht wirklich genau, da dies bei Widerständen in Silizium schwierig ist, aber Sie können davon ausgehen, dass er zwischen 10 kΩ und 100 kΩ liegt. Die meisten Leute würden 50 kΩ als Basiswert verwenden

statt 4 Dioden und einem Widerstand würde man einfach 4 Widerstände nehmen.

Aber der ESP32 hat definitiv Pullups ohnehin ... und offenbar sogar pulldowns wie angemerkt.

P.S.: hier findet man Knopfleisten
SCNR.

Ah super, dankeschön.
Werd ich nachher mal so ausprobieren.

Sorry falls die Frage komplett dumm ist, aber würde der Strom dann bei Betätigung nicht Zugang zu allen Pins bekommen?

Wie gesagt, bin noch sehr neu in dem Kram.

der "Strom" ist ein Kreis. Und faul. Der sucht sich den Widerstand-ärmsten weg.
"Rechts" vom Widerstand liegt volles GND Potential an, da hat "plus" keine Chance.

Ohne Gewähr. Können andere sicher besser erklären.

Wen du die Stromquelle drehst das haste ein PullUP am Eingang, aber wo zu das? mall testen was der ESP macht mit internem PullUP wen alles OK, dann sind die Widerstände nicht erforderlich.
An deiner Tasterleiste den GND an GND vom ESP, Pins belegen und mit INPUT_PULLUP steuern, Achtung umgekehrte Logik , wen Taster betätigt ist am Eingang Low.

Für einen ersten Test könnte das etwa so aussehen:

bzw.:

Und ein erstes Testprogramm, um zu sehen, ob es funktioniert und ob alles richtig verbunden ist könnte vielleicht so aussehen. Die Taster werden dabei auf LOW abgefragt (siehe Logical NOT):

const int taster1Pin = 19;
const int taster2Pin = 18;
const int taster3Pin = 17;
const int taster4Pin = 16;

void setup() {
  Serial.begin(9600);
  pinMode(taster1Pin, INPUT_PULLUP);
  pinMode(taster2Pin, INPUT_PULLUP);
  pinMode(taster3Pin, INPUT_PULLUP);
  pinMode(taster4Pin, INPUT_PULLUP);
}

void loop() {
  if (!digitalRead(taster1Pin)) {     // wenn Taster 1 gedrückt (=LOW)
    Serial.println("Taster 1");
  }
  if (!digitalRead(taster2Pin)) {     // wenn Taster 2 ...
    Serial.println("Taster 2");
  }
  if (!digitalRead(taster3Pin)) {     // wenn Taster 3 ...
    Serial.println("Taster 3");
  }
  if (!digitalRead(taster4Pin)) {     // wenn Taster 4 ...
    Serial.println("Taster 4");
  }

}

(Da gibt es natürlich noch viel elegantere Code-Varianten mit Arrays, dem Entprellen der Taster und und und.)

Danke dir :slight_smile:
klappt super so.
War nur etwas erstaunt, dass nur einer der drei GND Pins so funktioniert (bei der ESP32-CAM der unter IO0).

Vielen Dank für eure schnelle und gute Hilfe.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.