Arduino UNO R4 - DIP Switch

DIP (Dual In-line Package) switches worden vaak gebruikt in elektronica om apparaten in te stellen, zoals het instellen van adressen of het aan- en uitzetten van functies. In deze handleiding leren we hoe u een DIP switch met Arduino UNO R4 gebruikt. We behandelen:

Arduino UNO R4 met DIP Switch

Over DIP Switch

DIP switches worden voornamelijk gebruikt om apparaten te configureren, zodat gebruikers instellingen kunnen aanpassen zoals apparaatadres, communicatieopties, beveiligingscodes, bedrijfsmodus en systeemvoorkeuren voor verschillende toepassingen en industrieën.

Een DIP switch bestaat uit meerdere kleine schuifschakelaars gecombineerd in één eenheid. Elke schuifschakelaar wordt een "positie" genoemd. Er zijn verschillende soorten DIP switches, elk met een specifiek aantal posities zoals 2, 4, 5, 6, 8 of 10.

Een DIP switch kan worden ingesteld om verschillende getallen weer te geven. Elke schakelaarpositie verbindt met een bit in het getal. Door deze posities AAN of UIT te schakelen, kunnen we het getal kiezen dat we nodig hebben.

Pinout

DIP Switch Pinout
image source: diyables.io

Een DIP switch heeft twee rijen pinnen. Het aantal pinnen in elke rij komt overeen met het aantal schakelaarposities. Bijvoorbeeld, in een DIP switch met 4 posities zijn er in totaal 8 pinnen, met 4 pinnen aan elke kant. Elk paar pinnen tegenover elkaar vormt een schuifschakelaar. Het is belangrijk om op te merken dat het niet uitmaakt aan welke kant een pin zich bevindt omdat de pinnen uitwisselbaar zijn.

Hoe Het Werkt

Wanneer een DIP switch AAN staat, is deze gesloten. Dit zorgt ervoor dat elektriciteit door de schakelaar kan stromen.

Wanneer een schakelaar UIT staat, is deze open. Dit betekent dat de elektrische verbinding verbroken is en er geen stroom door de schakelaar kan vloeien.

Om het duidelijk te maken:

  • AAN positie: Circuit is gesloten, stroom kan passeren.
  • UIT positie: Circuit is open, stroom kan niet passeren.

Wanneer u de ene kant van de schakelaar met GND verbindt en de andere kant met de Arduino UNO R4 pin, en de Arduino UNO R4 pin instelt als een pull-up digitale input, toont de onderstaande tabel de relatie tussen de schakelaarpositie en de waarden die van de Arduino UNO R4 worden gelezen.

DIP schakelaar positie Binaire representatie Circuit toestand Arduino UNO R4 pin toestand
AAN 1 GESLOTEN LOW
UIT 0 OPEN HIGH

In de volgende secties gebruiken we een 4-positie DIP switch als voorbeeld. U kunt dit ook aanpassen voor 2-positie, 3-positie, 5-positie, 6-positie, 8-positie en 10-positie DIP switches.

Bedradingsschema

Arduino UNO R4 DIP switch Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.

Arduino UNO R4 Code - DIP Switch

We zullen het gebruik van twee codevoorbeelden verkennen:

  • Controleren of elke schakelaar AAN of UIT staat.
  • Deze schakelaarposities omzetten naar een getal.

Arduino UNO R4 code - Lezen van de AAN/UIT toestand van de DIP switch

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-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); }

Snelle Stappen

Volg deze instructies stap voor stap:

  • Als dit uw eerste keer is met de Arduino Uno R4 WiFi/Minima, raadpleeg dan de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/Minima in de Arduino IDE.
  • Bedrading de componenten volgens het meegeleverde schema.
  • Verbind het Arduino Uno R4 board met uw computer via een USB-kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer het juiste Arduino Uno R4 board (bijv., Arduino Uno R4 WiFi) en COM-poort.
  • Volg het meegeleverde bedradingsschema.
  • Verbind de Arduino UNO R4 met uw computer via een USB-kabel.
  • Start de Arduino IDE software.
  • Kies het juiste board en poort.
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino UNO R4 te verzenden.
  • Zet elke schakelaar van de DIP Switch één voor één aan.
  • Controleer de resultaten in de 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 UNO R4 code - Coderen van de toestanden van DIP switch naar een getal

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-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); }

Snelle Stappen

Volg deze instructies stap voor stap:

  • Als dit uw eerste keer is met de Arduino Uno R4 WiFi/Minima, raadpleeg dan de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/Minima in de Arduino IDE.
  • Bedrading de componenten volgens het meegeleverde schema.
  • Verbind het Arduino Uno R4 board met uw computer via een USB-kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer het juiste Arduino Uno R4 board (bijv., Arduino Uno R4 WiFi) en COM-poort.
  • Upload de code naar Arduino UNO R4.
  • Zet elke schakelaar op de DIP switch één voor één aan.
  • Controleer de Serial Monitor om de resultaten te zien, die er als volgt uit zullen zien.
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  

Houd er rekening mee dat de waarde verandert op basis van de posities van elke schuifschakelaar. De onderstaande tabel toont hoe de AAN/UIT posities overeenkomen met de gehele getallen voor een 4-positie DIP switch:

Positie-1Positie-2Positie-3Positie-4Binaire WaardeDecimale Waarde
UIT UIT UIT UIT 0000 0
UIT UIT UIT AAN 0001 1
UIT UIT AAN UIT 0010 2
UIT UIT AAN AAN 0011 3
UIT AAN UIT UIT 0100 4
UIT AAN UIT AAN 0101 5
UIT AAN AAN UIT 0110 6
UIT AAN AAN AAN 0111 7
AAN UIT UIT UIT 1000 8
AAN UIT UIT AAN 1001 9
AAN UIT AAN UIT 1010 10
AAN UIT AAN AAN 1011 11
AAN AAN UIT UIT 1100 12
AAN AAN UIT AAN 1101 13
AAN AAN AAN UIT 1110 14
AAN AAN AAN AAN 1111 15

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!