Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte Experto: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Previews Exclusivos: Obtén acceso anticipado a anuncios de nuevos productos y avances.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones y Sorteos Festivos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo!

2.1.9 Joystick

Nota

../_images/mcp3008_and_adc0834.jpg

Dependiendo de la versión de su kit, identifique si tiene ADC0834 o MCP3008 y continúe con la sección correspondiente.

Introducción

En este proyecto, vamos a aprender cómo funciona un joystick. Manipulamos el joystick y mostramos los resultados en la pantalla.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/image317.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los siguientes enlaces.

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

Módulo Joystick

-

ADC0834

-

Diagrama Esquemático

Cuando se lee la información del joystick, hay algunas diferencias entre los ejes: los datos de los ejes X e Y son analógicos, por lo que es necesario usar el ADC0834 para convertir el valor analógico a digital. Los datos del eje Z son digitales, por lo que puedes usar directamente el GPIO para leerlos, o también puedes usar el ADC para leerlos.

../_images/image319.png ../_images/image320.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/image193.png

Paso 2: Ir a la carpeta del código.

cd ~/raphael-kit/nodejs/

Paso 3: Ejecutar el código.

sudo node joystick.js

Después de ejecutar el código, mueve el joystick y los valores correspondientes de x, y y Btn se mostrarán en la pantalla.

Código

const Gpio = require('pigpio').Gpio;
const ADC0834 = require('./adc0834.js').ADC0834;

const adc = new ADC0834(17, 18, 22);
const btn = new Gpio(25, {
    mode: Gpio.INPUT,
    pullUpDown: Gpio.PUD_UP,
});

setInterval(async() => {

    x_val = await adc.read(0);
    y_val = await adc.read(1);

    btn_val = btn.digitalRead();
    console.log(`x = ${x_val}, y = ${y_val}, btn = ${btn_val}\n`);
}, 100);

Explicación del Código

const ADC0834 = require('./adc0834.js').ADC0834;

Importamos un constructor ADC0834 para usar el módulo adc0834.

setInterval(async() => {

    x_val = await adc.read(0);
    y_val = await adc.read(1);

    btn_val = btn.digitalRead();
    console.log(`x = ${x_val}, y = ${y_val}, btn = ${btn_val}\n`);
}, 100);

Cuando se leen los valores de múltiples canales de ADC0834 al mismo tiempo, es necesaria la programación asíncrona. Aquí construimos una función de promesa, y usamos la instrucción await de la función async para escribir de manera elegante esta compleja tarea asíncrona.

Imagen del Fenómeno

../_images/image194.jpeg