ESP32 - Chave DIP

As chaves DIP (Dual In-line Package) são frequentemente usadas em eletrônica para fins de configuração, como definir endereços de dispositivos, ativar ou desativar funções e muito mais. Neste tutorial, vamos explorar o uso da chave DIP com o ESP32. Especificamente, vamos abordar os seguintes tópicos:

ESP32 com Chave DIP

Sobre a Chave DIP

As chaves DIP são componentes fundamentais para a configuração de dispositivos, permitindo que os usuários ajustem parâmetros como endereços de dispositivos, configurações de comunicação, códigos de segurança, modos de operação e preferências do sistema em diversos setores e aplicações.

Uma chave DIP é composta por várias pequenas chaves deslizantes agrupadas, e cada chave é chamada de "posição". Existem vários tipos de chaves DIP, definidos pelo número de posições que oferecem. As opções incluem chaves DIP de 2 posições, 4 posições, 5 posições, 6 posições, 8 posições e 10 posições...

Cada posição de uma chave DIP corresponde a um bit de um número configurável. Alternando as posições entre ON e OFF, os usuários podem definir o valor numérico desejado. Essa flexibilidade permite uma configuração precisa dos parâmetros de acordo com necessidades específicas.

Pinagem

Pinagem da Chave DIP
image source: diyables.io

Uma chave DIP é composta por duas fileiras de pinos, e o número de pinos em cada fileira corresponde ao número de posições disponíveis. Por exemplo, uma chave DIP de 4 posições tem um total de 8 pinos, distribuídos igualmente com 4 pinos de cada lado. Na estrutura da chave DIP, cada par de pinos opostos forma uma chave deslizante. É importante observar que não é necessário 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 indica que a chave está fechada, estabelecendo uma conexão elétrica que permite a passagem de corrente.

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 é interrompida, impedindo a passagem de corrente pela chave.

Para esclarecer:

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

Ao conectar um lado da chave ao GND e o outro a um pino do ESP32, e configurar o pino do ESP32 como entrada digital com pull-up, a tabela a seguir mostra a relação entre a posição da chave e os valores lidos pelo ESP32:

Posição da chave DIP Representação binária Estado do circuito Estado do pino do ESP32
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 ESP32

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Código ESP32 - Chave DIP

Vamos aprender com dois códigos:

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

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

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-dip-switch */ #define POSITION_NUM 4 #define ON LOW #define OFF HIGH // define the pins connected to the dip switch const int SWITCH_PINS[] = { 26, 27, 14, 12 }; 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

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
  • Faça a ligação como na imagem acima.
  • Conecte a placa ESP32 ao seu PC por um cabo USB Type-C
  • Abra o Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Clique no botão Upload no Arduino IDE para carregar o código no ESP32
  • Coloque cada posição da chave DIP em ON, uma por uma.
  • Veja o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' 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
ESP32 Dev Module on COM15
2

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

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-dip-switch */ #define POSITION_NUM 4 #define ON LOW #define OFF HIGH // define the pins connected to the dip switch const int SWITCH_PINS[] = { 26, 27, 14, 12 }; 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

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 no Arduino IDE.
  • Faça a ligação como na imagem acima.
  • Conecte a placa ESP32 ao seu PC por um cabo USB Type-C
  • Abra o Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Faça upload do código acima para o ESP32
  • Coloque cada posição da chave DIP em ON, uma por uma.
  • Veja o resultado no Serial Monitor. Ele se parece com o abaixo.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' 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
ESP32 Dev Module on COM15
2

Observe que o valor depende das posições de cada chave deslizante. A tabela abaixo mostra a relação entre as posições ON/OFF e o valor inteiro para uma 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!