Arduino - DIP-Schalter

DIP-Schalter (Dual-In-Line-Package) werden in der Elektronik häufig zu Konfigurationszwecken verwendet, z. B. zum Festlegen von Geräteadressen, zum Aktivieren oder Deaktivieren von Funktionen usw. In diesem Tutorial lernen wir, wie man den DIP-Schalter mit dem Arduino verwendet. Im Detail werden wir lernen:

Arduino mit DIP-Schalter

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×DIP Schalter
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über DIP-Schalter

DIP-Schalter werden hauptsächlich zur Gerätekonfiguration verwendet und ermöglichen es Benutzern, Parameter wie Geräteadresse, Kommunikationseinstellungen, Sicherheitscodes, Betriebsmodus und Systemeinstellungen festzulegen, die in verschiedenen Branchen und Anwendungen eingesetzt werden.

Ein DIP-Schalter besteht aus mehreren kleinen Schiebeschaltern, die alle in einem Gehäuse zusammengefasst sind. Jeder dieser Schiebeschalter wird als eine "Position" bezeichnet. DIP-Schalter gibt es in verschiedenen Ausführungen, abhängig von der Anzahl der Positionen, die sie haben. Zum Beispiel gibt es DIP-Schalter mit 2 Positionen, 4 Positionen, 5 Positionen, 6 Positionen, 8 Positionen und 10 Positionen.

Ein DIP-Schalter kann eine konfigurierbare Zahl darstellen. Jede Stellung am Schalter entspricht einem Bit der Zahl. Durch das Umschalten der Stellungen zwischen EIN und AUS können wir die gewünschte Zahl festlegen.

Pinbelegung

DIP-Schalter Pinbelegung
image source: diyables.io

Ein DIP-Schalter besteht aus zwei Pin-Reihen, wobei die Anzahl der Pins in jeder Reihe der Anzahl der verfügbaren Schalterpositionen entspricht. Zum Beispiel umfasst ein DIP-Schalter mit 4 Positionen insgesamt 8 Pins, gleichmäßig verteilt, mit 4 Pins auf jeder Seite. Innerhalb der DIP-Schalteranordnung bildet jedes gegenüberliegende Pin-Paar einen Schiebeschalter. Es ist bemerkenswert, dass es nicht notwendig ist, zwischen Pins auf den beiden Seiten zu unterscheiden, da sie austauschbar sind.

Wie es funktioniert

Bei DIP-Schaltern bedeutet die ON-Position eines Schalters, dass der Schalter geschlossen ist. Dadurch wird der elektrische Kontakt hergestellt, wodurch der Strom durch den Schalter fließen kann.

Umgekehrt bedeutet dies, dass sich der Schalter in der Aus-Position befindet und geöffnet ist. In diesem Zustand ist die elektrische Verbindung unterbrochen, und der Strom kann nicht durch den Schalter fließen.

Also, um das zu klären:

  • AN-Position: Geschlossener Stromkreis, der den Stromfluss ermöglicht.
  • AUS-Position: Offener Stromkreis, der den Stromfluss blockiert.

Wenn wir eine Seite eines Schalters mit GND verbinden und die andere mit dem Arduino-Pin, konfigurieren wir anschließend den Arduino-Pin als digitalen Pull-Up-Eingang. Die folgende Tabelle zeigt die Beziehung zwischen der Stellung des Schalters und den vom Arduino gelesenen Werten:

DIP switch position Binary representation Circuit state Arduino pin state
ON 1 CLOSED LOW
OFF 0 OPEN HIGH

In den nächsten Abschnitten verwenden wir zum Beispiel einen DIP-Schalter mit vier Positionen. Sie können ihn leicht an DIP-Schalter mit zwei Positionen, drei Positionen, fünf Positionen, sechs Positionen, acht Positionen oder zehn Positionen anpassen.

Verdrahtungsdiagramm

Arduino DIP-Schalter Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino-Code - DIP-Schalter

Wir lernen anhand von zwei Codebeispielen:

  • Das Auslesen des Ein-/Aus-Zustands einzelner Positionen am DIP-Schalter.
  • Die Positionen in eine Zahl codieren.

Arduino-Code - Lesen des Ein/Aus-Zustands des DIP-Schalters

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-dip-switch */ #define POSITION_NUM 4 #define ON LOW #define OFF HIGH // define the pins connected to the dip switch const int SWITCH_PINS[] = { 2, 3, 4, 5 }; void setup() { // initialize serial communication Serial.begin(9600); // set the dip switch pins as inputs with pull-up resistors enabled for (int i = 0; i < POSITION_NUM; i++) pinMode(SWITCH_PINS[i], INPUT_PULLUP); } void loop() { // Read the state of each switch position for (int i = 0; i < POSITION_NUM; i++) { Serial.print("position "); Serial.print(i + 1); Serial.print(": "); int state = digitalRead(SWITCH_PINS[i]); if (state == ON) Serial.println("ON "); else Serial.println("OFF "); } Serial.println(); // add a delay to prevent rapid readings delay(500); }

Schnelle Schritte

  • Verdrahten Sie gemäß dem oben gezeigten Schaltplan.
  • Verbinden Sie den Arduino über ein USB-Kabel mit dem PC.
  • Öffnen Sie die Arduino IDE.
  • Wählen Sie das richtige Board und den richtigen Port aus.
  • Klicken Sie im Arduino IDE auf Upload-Schaltfläche, um den Code auf den Arduino hochzuladen.
  • Schalten Sie nacheinander jede Position des DIP-Schalters auf EIN.
  • Sehen Sie das Ergebnis im Serial Monitor.
COM6
Send
position 1: OFF position 2: OFF position 3: OFF position 4: OFF position 1: ON position 2: OFF position 3: OFF position 4: OFF position 1: ON position 2: ON position 3: OFF position 4: OFF position 1: ON position 2: ON position 3: ON position 4: OFF position 1: ON position 2: ON position 3: ON position 4: ON
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Arduino-Code - Codierung der Zustände des DIP-Schalters in eine Zahl

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-dip-switch */ #define POSITION_NUM 4 #define ON LOW #define OFF HIGH // define the pins connected to the dip switch const int SWITCH_PINS[] = { 2, 3, 4, 5 }; void setup() { // Initialize serial communication Serial.begin(9600); // Set the DIP switch pins as inputs with pull-up resistors enabled for (int i = 0; i < POSITION_NUM; i++) pinMode(SWITCH_PINS[i], INPUT_PULLUP); } void loop() { int encoded_state = 0; for (int i = 0; i < POSITION_NUM; i++) { int state = digitalRead(SWITCH_PINS[i]); if (state == ON) encoded_state |= 1 << (POSITION_NUM - i - 1); } Serial.print("encoded state: "); Serial.println(encoded_state); // add a delay to prevent rapid readings delay(500); }

Schnelle Schritte

  • Lade den obigen Code auf den Arduino hoch.
  • Schalte nacheinander jede Stellung des DIP-Schalters auf EIN.
  • Sieh das Ergebnis im Serial Monitor; es sieht unten wie folgt aus.
COM6
Send
encoded state: 0 encoded state: 1 encoded state: 2 encoded state: 3 encoded state: 4 encoded state: 5 encoded state: 6 encoded state: 7 encoded state: 8 encoded state: 9 encoded state: 10 encoded state: 11 encoded state: 12 encoded state: 13 encoded state: 14 encoded state: 15
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Bitte beachten Sie, dass der Wert von den Positionen der einzelnen Schiebeschalter abhängt. In der untenstehenden Tabelle wird die Zuordnung zwischen der AN/AUS-Position und dem ganzzahligen Wert für einen 4-Positionen-DIP-Schalter dargestellt:

Position-1Position-2Position-3Position-4Binary ValueDecimal Value
OFF OFF OFF OFF 0000 0
OFF OFF OFF ON 0001 1
OFF OFF ON OFF 0010 2
OFF OFF ON ON 0011 3
OFF ON OFF OFF 0100 4
OFF ON OFF ON 0101 5
OFF ON ON OFF 0110 6
OFF ON ON ON 0111 7
ON OFF OFF OFF 1000 8
ON OFF OFF ON 1001 9
ON OFF ON OFF 1010 10
ON OFF ON ON 1011 11
ON ON OFF OFF 1100 12
ON ON OFF ON 1101 13
ON ON ON OFF 1110 14
ON ON ON ON 1111 15

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!