- Material requerido
- Comprensión del módulo de joystick:
- Diagrama de circuito:
- Programación para interconectar el joystick:
- Vista de simulación:
- Hardware y funcionamiento:
Los dispositivos de entrada juegan un papel vital en cualquier proyecto de electrónica. Estos dispositivos de entrada ayudan al usuario a interactuar con el mundo digital. Un dispositivo de entrada puede ser tan simple como un botón o tan complicado como una pantalla táctil; varía según los requisitos del proyecto. En este tutorial vamos a aprender cómo conectar un joystick con nuestro microcontrolador PIC, un joystick es una forma genial de interactuar con el mundo digital y casi todo el mundo lo habría usado para jugar videojuegos en su adolescencia.
Un joystick puede parecer un dispositivo sofisticado, pero en realidad es solo una combinación de dos potenciómetros y un botón. Por lo tanto, también es muy fácil interactuar con cualquier MCU siempre que sepamos cómo usar la función ADC de esa MCU. Ya hemos aprendido cómo usar ADC con PIC, por lo tanto, sería solo una solución para interconectar el Joystick. Para las personas que son nuevas en pickit, se recomienda aprender el proyecto ADC anterior, así como el Proyecto de secuencia de parpadeo de LED para facilitar la comprensión del proyecto.
Material requerido
- PicKit 3 para programación
- Módulo Joy Stick
- PIC16F877A IC
- Soporte para CI de 40 pines
- Tablero perfilado
- OSC de cristal de 20 MHz
- Alfileres Bergstik
- Resistencia 220ohm
- 5 LED de cualquier color
- 1 kit de soldadura
- IC 7805
- Adaptador 12V
- Cables de conexión
- Tablero de circuitos
Comprensión del módulo de joystick:
Los joysticks están disponibles en diferentes formas y tamaños. En la figura siguiente se muestra un módulo de joystick típico. Un joystick no es más que un par de potenciómetros y un botón pulsador montados sobre una disposición mecánica inteligente. El potenciómetro se usa para realizar un seguimiento del movimiento X e Y del joystick y el botón se usa para detectar si se presiona el joystick. Ambos potenciómetros emiten un voltaje analógico que depende de la posición del joystick. Y podemos obtener la dirección del movimiento interpretando estos cambios de voltaje usando algún microcontrolador. Anteriormente, interconectamos Joystick con AVR, Joystick con Arduino y Raspberry Pi.
Antes de conectar cualquier sensor o módulo con un microcontrolador, es importante saber cómo funciona. Aquí nuestro joystick tiene 5 pines de salida de los cuales dos son para alimentación y tres para datos. El módulo debe alimentarse con + 5V. Los pines de datos se denominan VRX, VRY y SW.
El término "VRX" significa voltaje variable en el eje X y el término "VRY" significa voltaje variable en el eje Y y "SW" significa interruptor.
Entonces, cuando movemos el joystick hacia la izquierda o hacia la derecha, el valor de voltaje en VRX variará y cuando lo variamos hacia arriba o hacia abajo, VRY variará. De manera similar, cuando lo movemos en diagonal, tanto VRX como VRY variarán. Cuando presionamos el interruptor, el pin SW se conectará a tierra. La siguiente figura le ayudará a comprender mucho mejor los valores de salida.
Diagrama de circuito:
Ahora que sabemos cómo funciona el Joystick, podemos llegar a la conclusión de que necesitaremos dos pines ADC y un pin de entrada digital para leer los tres pines de datos del módulo Joystick. El diagrama de circuito completo se muestra en la siguiente imagen
Como puede ver en el diagrama del circuito, en lugar del joystick hemos utilizado dos potenciómetros RV1 y RV3 como entradas analógicas de tensión y una entrada lógica para el interruptor. Puede seguir las etiquetas escritas en color violeta para hacer coincidir los nombres de los pines y hacer sus conexiones en consecuencia.
Tenga en cuenta que los pines analógicos están conectados a los canales A0 y A1 y el interruptor digital está conectado a RB0. También tendremos 5 luces LED conectadas como salida, para que podamos iluminar una en función de la dirección en que se mueva el joystick. Entonces, estos pines de salida están conectados al PORT C desde RC0 a RC4. Una vez que hayamos panoramizado nuestro diagrama de circuito, podemos continuar con la programación, luego simular el programa en este circuito, luego construir el circuito en una placa y luego cargar el programa en el hardware. Para darle una idea, mi hardware después de realizar las conexiones anteriores se muestra a continuación
Programación para interconectar el joystick:
El programa para conectar el joystick con PIC es simple y directo. Ya sabemos a qué pines está conectado el Joystick y cuál es su función, por lo que simplemente tenemos que leer el voltaje analógico de los pines y controlar los LED de salida en consecuencia.
El programa completo para hacer esto se proporciona al final de este documento, pero para explicar las cosas, estoy dividiendo el código en pequeños fragmentos significativos a continuación.
Como siempre, el programa se inicia configurando los bits de configuración, no vamos a discutir mucho acerca de cómo configurar los bits de configuración porque ya lo hemos aprendido en el proyecto LED parpadeando y es lo mismo para este proyecto también. Una vez establecidos los bits de configuración, tenemos que definir las funciones de ADC para usar el módulo ADC en nuestro PIC. Estas funciones también se aprendieron en el tutorial de cómo usar ADC con PIC. Después de eso, tenemos que declarar qué pines son entradas y cuáles son pines de salida. Aquí el LED está conectado a PORTC por lo que son pines de salida y el pin de interruptor del Joystick es un pin de entrada digital. Entonces usamos las siguientes líneas para declarar lo mismo:
// ***** Configuración de E / S **** // TRISC = 0X00; // PORT C se utiliza como puertos de salida PORTC = 0X00; // Hacer que todos los pines sean bajos TRISB0 = 1; // RB0 se utiliza como entrada // *** Fin de la configuración de E / S ** ///
Los pines ADC no necesitan definirse como pines de entrada porque cuando se utiliza la función ADC se asignará como pin de entrada. Una vez definidos los pines, podemos llamar a la función ADC_initialize que definimos anteriormente. Esta función establecerá los registros ADC requeridos y preparará el módulo ADC.
ADC_Initialize (); // Configurar el módulo ADC
Ahora, entramos en nuestra infinita , mientras que bucle. Dentro de este bucle tenemos que monitorizar los valores de VRX, VRY y SW y en base a los valores tenemos que controlar la salida del led. Podemos comenzar el proceso de monitoreo leyendo el voltaje analógico de VRX y VRY usando las siguientes líneas
int joy_X = (ADC_Read (0)); // Leer el eje X del joystick int joy_Y = (ADC_Read (1)); // Leer el eje Y del joystick
Esta línea guardará el valor de VRX y VRY en la variable joy_X y joy_Y respectivamente. La función ADC_Read (0) significa que estamos leyendo el valor ADC del canal 0, que es el pin A0. Hemos conectado VRX y VRY a los pines A0 y A1 y, por lo tanto, leemos desde 0 y 1.
Si puede recordar de nuestro tutorial de ADC, sabemos que leemos el voltaje analógico, el PIC, al ser un dispositivo digital, lo leerá de 0 a 1023. Este valor depende de la posición del módulo del joystick. Puede utilizar el diagrama de etiquetas anterior para saber qué valor puede esperar para cada posición del joystick.
Aquí he utilizado el valor límite de 200 como límite inferior y un valor de 800 como límite superior. Puedes usar lo que quieras. Así que usemos estos valores y comencemos a encender los LED en consecuencia. Para hacer esto, tenemos que comparar el valor de joy_X con los valores predefinidos usando un bucle IF y hacer que los pines LED sean altos o bajos como se muestra a continuación. Las líneas de comentarios te ayudarán a comprender mejor
if (joy_X <200) // Joy subió {RC0 = 0; RC1 = 1;} // Ilumina el LED superior else if (joy_X> 800) // Joy bajó {RC0 = 1; RC1 = 0;} // Ilumina el LED inferior else // Si no se mueve {RC0 = 0; RC1 = 0;} // Apagar ambos led
De manera similar, también podemos hacer lo mismo con el valor del eje Y. Solo tenemos que reemplazar la variable joy_X con joy_Y y también controlar los siguientes dos pines LED como se muestra a continuación. Tenga en cuenta que cuando no se mueve el joystick, apagamos ambas luces LED.
if (joy_Y <200) // Joy se movió a la izquierda {RC2 = 0; RC3 = 1;} // Se ilumina el LED izquierdo else if (joy_Y> 800) // Joy se movió a la derecha {RC2 = 1; RC3 = 0;} // Ilumina el LED derecho else // Si no se mueve {RC2 = 0; RC3 = 0;} // Apaga ambos LED
Ahora tenemos una última cosa más que hacer, tenemos que verificar el interruptor si está presionado. El pin del interruptor está conectado a RB0, por lo que podemos usar nuevamente el bucle if y verificar si está encendido. Si se presiona apagaremos el LED para indicar que se ha presionado el interruptor.
if (RB0 == 1) // Si se presiona Joy RC4 = 1; // LED central iluminado else RC4 = 0; // LED medio apagado
Vista de simulación:
El proyecto completo se puede simular utilizando el software Proteus. Una vez que haya escrito el programa, compile el código y vincule el código hexadecimal de la simulación al circuito. Entonces deberías notar que las luces LED brillan según la posición de los potenciómetros. La simulación se muestra a continuación:
Hardware y funcionamiento:
Después de verificar el código usando la simulación, podemos construir el circuito en una placa de pruebas. Si ha estado siguiendo los tutoriales de PIC, se habrá dado cuenta de que usamos la misma placa de perforación que tiene el circuito PIC y 7805 soldados. Si también está interesado en hacer uno para usarlo con todos sus proyectos PIC, entonces suelde el circuito en una placa perf. O también puede construir el circuito completo en una placa de pruebas. Una vez que el hardware esté listo, sería algo como esto a continuación.
Ahora cargue el código en el microcontrolador PIC usando el PICkit3. Puede consultar el proyecto LED Blink para obtener orientación. Debería notar que la luz amarilla se enciende tan pronto como se carga el programa. Ahora use el joystick y varíe la perilla, para cada dirección del joystick notará que el LED respectivo se eleva. Cuando se presiona el interruptor en el medio, apagará el LED en el medio.
Este trabajo es solo un ejemplo, puedes construir muchos proyectos interesantes encima. El funcionamiento completo del proyecto también se puede encontrar en el video que se encuentra al final de esta página.
Espero que haya entendido el proyecto y haya disfrutado construyéndolo, si tiene algún problema para hacerlo, no dude en publicarlo en la sección de comentarios a continuación o escribirlo en los foros para obtener ayuda.