5.11 Alternar el Joystick¶
Si juegas muchos videojuegos, entonces deberías estar muy familiarizado con el Joystick. Se utiliza habitualmente para mover el personaje, rotar la pantalla, etc.
El principio detrás de la capacidad del Joystick para permitir que la computadora lea nuestras acciones es muy simple. Se puede pensar como compuesto por dos potenciómetros que están perpendiculares entre sí. Estos dos potenciómetros miden el valor analógico del joystick vertical y horizontalmente, resultando en un valor (x,y) en un sistema de coordenadas planas en ángulo recto.
El joystick de este kit también tiene una entrada digital, que se activa cuando se presiona el joystick.
Componentes Requeridos
Para este proyecto, necesitaremos los siguientes componentes.
Definitivamente es conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ELEMENTOS EN ESTE KIT |
ENLACE |
---|---|---|
Kit de Inicio ESP32 |
320+ |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
---|---|
- |
|
Pines Disponibles
Pines Disponibles
Aquí hay una lista de pines disponibles en la placa ESP32 para este proyecto.
Para Entrada Analógica
IO14, IO25, I35, I34, I39, I36
Para Entrada Digital
IO13, IO14, IO27, IO26, IO25, IO33, IO4, IO18, IO19, IO21, IO22, IO23
Pines de Strapping (Entrada)
Los pines de strapping son un conjunto especial de pines que se utilizan para determinar modos de arranque específicos durante el inicio del dispositivo (es decir, reinicio por encendido).
Pines de Strapping
IO5, IO0, IO2, IO12, IO15
Generalmente, no se recomienda usarlos como pines de entrada. Si deseas usar estos pines, considera el impacto potencial en el proceso de arranque. Para más detalles, por favor refiérete a la sección Pines de Estrapeo.
Esquemático
El pin SW (eje Z) está conectado a IO33, que tiene una resistencia pull-up de 4.7K incorporada. Por lo tanto, cuando el botón SW no está presionado, emitirá un nivel alto. Cuando el botón está presionado, emitirá un nivel bajo.
I34 e I35 cambiarán sus valores a medida que manipules el joystick. El rango de valores es de 0 a 4095.
Conexión
Código
Nota
Abre el archivo
5.11_joystick.py
ubicado en la rutaesp32-starter-kit-main\micropython\codes
o copia y pega el código en Thonny. Luego, haz clic en «Ejecutar script actual» o presiona F5 para ejecutarlo.Asegúrate de seleccionar el intérprete «MicroPython (ESP32).COMxx» en la esquina inferior derecha.
from machine import ADC,Pin
import time
xAxis = ADC(Pin(34, Pin.IN)) # create an ADC object acting on a pin
xAxis.atten(xAxis.ATTN_11DB)
yAxis = ADC(Pin(35, Pin.IN)) # create an ADC object acting on a pin
yAxis.atten(yAxis.ATTN_11DB)
button = Pin(33, Pin.IN, Pin.PULL_UP)
while True:
xValue = xAxis.read() # read a raw analog value in the range 0-4095
yValue = yAxis.read() # read a raw analog value in the range 0-4095
btnValue = button.value()
print(f"X:{xValue}, Y:{yValue}, Button:{btnValue}")
time.sleep(0.1)
Cuando el programa se ejecuta, la Shell imprime los valores x, y y del botón del joystick.
X:1921, Y:1775, Button:0
X:1921, Y:1775, Button:0
X:1923, Y:1775, Button:0
X:1924, Y:1776, Button:0
X:1926, Y:1777, Button:0
X:1925, Y:1776, Button:0
X:1924, Y:1776, Button:0
Los valores de los ejes x e y son valores analógicos que varían de 0 a 4095.
El botón es un valor digital con un estado de 1(suelto) o 0(presionado).