Arduino - Chave DIP

As chaves DIP (Dual In-line Package) são muito usadas em eletrônica para fins de configuração, como definir endereços de dispositivos, ativar ou desativar funções, etc. Neste tutorial, vamos aprender a usar a chave DIP com o Arduino. Em detalhes, vamos aprender:

Arduino com chave DIP

Sobre a Chave DIP

As chaves DIP são usadas principalmente para configurar dispositivos, permitindo que o usuário defina parâmetros como endereço do dispositivo, configurações de comunicação, códigos de segurança, modo de operação e preferências do sistema em diversas indústrias e aplicações.

Uma chave DIP é formada por várias pequenas chaves deslizantes montadas juntas. Cada uma dessas chaves deslizantes é chamada de "posição". Existem vários tipos de chaves DIP, de acordo com o número de posições que elas têm. Por exemplo, há chaves DIP de 2 posições, de 4 posições, de 5 posições, de 6 posições, de 8 posições e de 10 posições.

Uma chave DIP pode representar um número configurável. Cada posição da chave corresponde a um bit do número. Alternando as posições entre ON e OFF, podemos definir o número que quisermos.

Pinagem

Pinagem da chave DIP
image source: diyables.io

Uma chave DIP tem duas fileiras de pinos, e a quantidade de pinos em cada fileira corresponde ao número de posições da chave. Por exemplo, uma chave DIP de 4 posições tem um total de 8 pinos, distribuídos igualmente com 4 pinos de cada lado. Dentro da chave DIP, cada par de pinos opostos forma uma chave deslizante. Vale notar que não é preciso diferenciar os pinos dos dois lados, pois eles são intercambiáveis.

Como Funciona

Nas chaves DIP, quando uma chave está na posição ON, isso significa que a chave está fechada. Ou seja, a conexão elétrica está feita, permitindo que a corrente passe pela chave.

Por outro lado, quando uma chave está na posição OFF, isso significa que a chave está aberta. Nesse estado, a conexão elétrica está interrompida e a corrente não consegue passar pela chave.

Então, resumindo:

  • Posição ON: circuito fechado, permitindo a passagem de corrente.
  • Posição OFF: circuito aberto, bloqueando a passagem de corrente.

Quando conectamos um lado de uma chave ao GND e o outro a um pino do Arduino, e depois configuramos o pino do Arduino como entrada digital com pull-up, a tabela abaixo mostra a relação entre a posição da chave e os valores lidos pelo Arduino:

Posição da chave DIP Representação binária Estado do circuito Estado do pino do Arduino
ON 1 FECHADO LOW
OFF 0 ABERTO HIGH

Nas próximas partes, vamos usar uma chave DIP de 4 posições como exemplo. Você pode adaptar facilmente para chaves DIP de 2 posições, 3 posições, 5 posições, 6 posições, 8 posições e 10 posições...

Diagrama de Ligação

Diagrama de ligação da chave DIP com Arduino

This image is created using Fritzing. Click to enlarge image

Código Arduino - Chave DIP

Vamos aprender com dois códigos:

  • Ler o estado ON/OFF de cada posição da chave DIP.
  • Codificar as posições em um número.

Código Arduino - Lendo o estado ON/OFF da chave DIP

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/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); }

Passos Rápidos

  • Faça a ligação como no diagrama de ligação acima
  • Conecte o Arduino ao PC com o cabo USB
  • Abra o Arduino IDE
  • Selecione a placa e a porta corretas
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino
  • Mude cada posição da chave DIP para ON, uma de cada vez.
  • Veja o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
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
Ln 11, Col 1
Arduino Uno on COM15
2

Código Arduino - Codificando os estados da chave DIP em um número

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/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); }

Passos Rápidos

  • Carregue o código acima no Arduino
  • Mude cada posição da chave DIP para ON, uma de cada vez.
  • Veja o resultado no Serial Monitor, ele fica parecido com o mostrado abaixo.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
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
Ln 11, Col 1
Arduino Uno on COM15
2

Observe que o valor depende da posição de cada chave deslizante. A tabela abaixo mostra a correspondência entre as posições ON/OFF e o valor inteiro para a chave DIP de 4 posições:

Posição-1Posição-2Posição-3Posição-4Valor BinárioValor Decimal
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

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!