Cómo conectar y usar un DIP Switch de 6 u 8 posiciones

Un DIP switch (Dual Inline Package switch) de 6 posiciones permite tener 6 interruptores individuales en un solo encapsulado. Este tutorial te mostrará cómo conectarlo y usarlo con un microcontrolador como Arduino para leer su estado.

Materiales necesarios:

  • 1 DIP switch de 6 posiciones.
  • Arduino Uno (o cualquier otro modelo compatible).
  • 6 resistencias de 220 Ω (pull-down).
  • Protoboard.
  • Cables jumper.
  • Fuente de alimentación USB para Arduino.

Diagrama de conexión:

Paso 1: Comprender el DIP switch

El DIP switch tiene:

  • 6 interruptores individuales, numerados del 1 al 6.
  • 2 filas de pines:
    • Una fila conecta cada interruptor a un pin independiente.
    • La otra fila se conecta a una fuente común, ya sea tierra (GND) o voltaje (Vcc).

Cuando un interruptor está en la posición:

  • ON: Conecta su pin a Vcc.
  • OFF: El pin queda flotante, o si se usa una resistencia pull-down, conectado a GND.

Paso 2: Conexión del DIP switch

  1. Configura las resistencias pull-down:
    • Conecta un extremo de cada resistencia (220 Ω) a tierra (GND).
    • Conecta el otro extremo al pin correspondiente de cada interruptor del DIP switch.
  2. Conecta los pines del DIP switch:
    • Conecta una fila del DIP switch a los pines digitales del Arduino (por ejemplo, del pin 2 al pin 7).
    • Conecta la otra fila común del DIP switch a Vcc (5V en el Arduino).

Código de programación 1:

int int1=2, int2=3, int3=4, int4=5, int5=6, int6=7;
int state1=0, state2=0, state3=0, state4=0, state5=0, state6=0;

void setup() {
  Serial.begin(9600);
  pinMode(int1, INPUT);
  pinMode(int2, INPUT);
  pinMode(int3, INPUT);
  pinMode(int4, INPUT);
  pinMode(int5, INPUT);
  pinMode(int6, INPUT);
}

void loop() {
  
  state1 = digitalRead(int1);
  state2 = digitalRead(int2);
  state3 = digitalRead(int3);
  state4 = digitalRead(int4);
  state5 = digitalRead(int5);
  state6 = digitalRead(int6);
  
  Serial.print(state1);
  Serial.print(" ");
  Serial.print(state2);
  Serial.print(" ");
  Serial.print(state3);
  Serial.print(" ");
  Serial.print(state4);
  Serial.print(" ");
  Serial.print(state5);
  Serial.print(" ");
  Serial.println(state6);
}

Este código en Arduino está diseñado para leer el estado de un DIP switch de 6 posiciones y mostrar los valores correspondientes en el Monitor Serial. Aquí tienes una explicación detallada de cada sección:

1. Declaración de variables

int int1 = 2, int2 = 3, int3 = 4, int4 = 5, int5 = 6, int6 = 7;
int state1 = 0, state2 = 0, state3 = 0, state4 = 0, state5 = 0, state6 = 0;
  • int1 a int6: Representan los números de los pines digitales del Arduino donde están conectadas las salidas del DIP switch (pines 2 a 7).
  • state1 a state6: Guardan el estado de cada interruptor del DIP switch. El valor será:
    • 1: Si el interruptor está en ON.
    • 0: Si el interruptor está en OFF.

2. Configuración inicial en setup()

void setup() {
  Serial.begin(9600);
  pinMode(int1, INPUT);
  pinMode(int2, INPUT);
  pinMode(int3, INPUT);
  pinMode(int4, INPUT);
  pinMode(int5, INPUT);
  pinMode(int6, INPUT);
}
  • Serial.begin(9600): Configura la comunicación serial a una velocidad de 9600 baudios para enviar datos al Monitor Serial.
  • pinMode(intX, INPUT): Configura los pines digitales conectados al DIP switch como entradas, permitiendo que Arduino lea sus estados.

3. Bucle principal en loop():

void loop() {
  state1 = digitalRead(int1);
  state2 = digitalRead(int2);
  state3 = digitalRead(int3);
  state4 = digitalRead(int4);
  state5 = digitalRead(int5);
  state6 = digitalRead(int6);

  Serial.print(state1);
  Serial.print(" ");
  Serial.print(state2);
  Serial.print(" ");
  Serial.print(state3);
  Serial.print(" ");
  Serial.print(state4);
  Serial.print(" ");
  Serial.print(state5);
  Serial.print(" ");
  Serial.println(state6);
}

3.1 Lectura del DIP switch

  • digitalRead(intX): Lee el estado de cada pin digital.
    • Si el interruptor correspondiente está en ON, el pin se conecta a 5V, y la función retorna 1.
    • Si el interruptor está en OFF, el pin está conectado a GND (por la resistencia pull-down), y la función retorna 0.

3.2 Impresión de los estados

  • Serial.print(stateX): Imprime el valor de cada interruptor en el Monitor Serial, separándolos con un espacio.
  • Serial.println(state6): Imprime el estado del último interruptor seguido de un salto de línea para facilitar la lectura de los datos.

4. Salida esperada

Si el DIP switch tiene la siguiente configuración (posición 1, 2, 3, 4, 5, 6):

  • ON, OFF, ON, OFF, OFF, ON, el Monitor Serial mostrará:
1 0 1 0 0 1

5. Cómo funciona

  1. Arduino lee los estados de los interruptores conectados a los pines digitales 2, 3, 4, 5, 6, 7.
  2. Los estados (0 o 1) se almacenan en las variables state1 a state6.
  3. Los valores se envían al Monitor Serial para que puedas ver en tiempo real qué interruptores están en ON o OFF.

Código de programación 2:

Este código hace lo mismo que mostro anteriormente pero reduciendo el número de lineas escritas para su funcionamiento:

void setup() {
  Serial.begin(9600);
  
  // Configurar los pines 2 a 7 como entradas
  for (int pin = 2; pin <= 7; pin++) {
    pinMode(pin, INPUT);
  }
}

void loop() {
  // Leer el estado de cada interruptor y mostrarlo en el Serial Monitor
  Serial.print("Estado del DIP Switch: ");
  for (int pin = 2; pin <= 7; pin++) {
    Serial.print(digitalRead(pin)); // Leer el estado del pin
    Serial.print(" "); // Separar valores
  }
  Serial.println();
  delay(500); // Esperar medio segundo
}

Explicación:

  1. Serial.begin(9600):
    • Inicia la comunicación serial a una velocidad de 9600 baudios para que el Arduino pueda enviar datos al Monitor Serial.
  2. for (int pin = 2; pin <= 7; pin++):
    • Un bucle for que recorre los números de los pines digitales desde 2 hasta 7.
    • Para cada pin, ejecuta pinMode(pin, INPUT), configurándolo como entrada para leer el estado de cada posición del DIP switch.
  • Serial.print("Estado del DIP Switch: "):
    • Imprime un mensaje descriptivo antes de mostrar los estados de los interruptores.
  • for (int pin = 2; pin <= 7; pin++):
    • Recorre cada pin digital desde 2 hasta 7.
    • digitalRead(pin): Lee el estado del pin (0 para OFF, 1 para ON) y retorna su valor.
    • Serial.print(digitalRead(pin)): Muestra el estado del pin en el Monitor Serial.
    • Serial.print(" "): Añade un espacio entre los valores para separarlos visualmente.
  • Serial.println():
    • Añade un salto de línea al final de cada lectura para que los datos se muestren en líneas independientes.
  • delay(500):
    • Introduce una pausa de 500 milisegundos (medio segundo) antes de realizar la siguiente lectura.

¿Qué hace este código?

  1. Configura los pines digitales 2 a 7 como entradas para leer el estado de los interruptores del DIP switch.
  2. Lee periódicamente (cada 500 ms) el estado de los interruptores y lo imprime en el Monitor Serial.
  3. Muestra los estados como una serie de números binarios (0 o 1), separados por espacios.

Ventajas de este enfoque

  • Eficiencia: Usa un bucle for para reducir la repetición de código.
  • Escalabilidad: Si necesitas leer más o menos interruptores, solo debes ajustar los valores del bucle.
  • Claridad: Muestra los resultados en un formato organizado y fácil de entender.

Ahora puedes usar un DIP switch de 6 posiciones para configurar parámetros, activar funciones o enviar señales digitales en tus proyectos. Este tutorial se puede adaptar a múltiples aplicaciones en electrónica y programación con Arduino. ¡Experimenta y explora sus posibilidades!


(4) Comentarios

* * * <a href="http://cadplusindia.com/?zq5779">Unlock Free Spins Today</a> * * * hs=c045b086bb7b85d7ebff0f347199f028*
2025-03-26 12:11:23 | Responder

5tevis

* * * Snag Your Free Gift: http://cadplusindia.com/?zq5779 * * * hs=c045b086bb7b85d7ebff0f347199f028*
2025-03-26 12:11:21 | Responder

drz1df

* * * <a href="http://rattanatour.com/upload/uploads/j15ker.php?1rll9">Claim Free iPhone 16</a> * * * hs=c045b086bb7b85d7ebff0f347199f028*
2025-02-22 03:46:13 | Responder

2nbwck

* * * Claim Free iPhone 16: http://rattanatour.com/upload/uploads/j15ker.php?1rll9 * * * hs=c045b086bb7b85d7ebff0f347199f028*
2025-02-22 03:46:10 | Responder

pdnr91

Pública tu duda o comentario

Resuelve tus dudas con la comunidad.

*Obligatorio*
Total de impresiones: 111