Nota

Ciao, benvenuto nella Community di appassionati di Raspberry Pi, Arduino e ESP32 di SunFounder su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato ai nuovi annunci di prodotti e alle anteprime.

  • Sconti speciali: Godi di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e giveaway: Partecipa a concorsi e promozioni durante le festività.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

2.1.9 Joystick

Nota

../_images/mcp3008_and_adc0834.jpg

A seconda della versione del tuo kit, identifica se hai ADC0834 o MCP3008 e procedi con la sezione corrispondente.

Introduzione

In questo progetto, impareremo come funziona il joystick. Manipoleremo il joystick e visualizzeremo i risultati sullo schermo.

Componenti necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/image317.png

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

OGGETTI IN QUESTO KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

Modulo Joystick

-

ADC0834

-

Schema elettrico

Quando si leggono i dati del joystick, ci sono alcune differenze tra gli assi: i dati degli assi X e Y sono analogici, il che richiede l’uso dell’ADC0834 per convertire il valore analogico in valore digitale. I dati dell’asse Z sono digitali, quindi è possibile leggerli direttamente utilizzando il GPIO, oppure è possibile utilizzare l’ADC per leggerli.

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

Procedure sperimentali

Passo 1: Costruisci il circuito.

../_images/image193.png

Passo 2: Vai alla cartella del codice.

cd ~/raphael-kit/nodejs/

Passo 3: Esegui il codice.

sudo node joystick.js

Dopo l’esecuzione del codice, muovi il joystick e i valori corrispondenti di x, y, Btn verranno visualizzati sullo schermo.

Codice

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);

Spiegazione del Codice

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

Importiamo un costruttore ADC0834 per utilizzare il modulo 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);

Quando si leggono i valori di più canali dell’ADC0834 contemporaneamente, è necessaria la programmazione asincrona. Costruiamo qui una funzione promise, E utilizziamo l’istruzione await della funzione async per scrivere in modo elegante questo compito asincrono complesso.

Immagine del fenomeno

../_images/image194.jpeg