Esistono molti modi per trasferire informazioni da una persona a un microcontrollore oa un computer e uno di questi è l'utilizzo di un joystick. Vediamo come collegare ad Arduino un joystick analogico con due assi e un pulsante.
È necessario
- -Arduino;
- - joystick a due assi;
- - 3 resistori con valore nominale di 220 Ohm;
- - 1 RGB o 3 LED convenzionali.
Istruzioni
Passo 1
Il joystick è un dispositivo comodo e facile da usare per la trasmissione di informazioni. Esistono numerosi tipi di joystick in termini di numero di gradi di libertà, principio di lettura delle indicazioni e tecnologie utilizzate. I joystick sono più spesso usati per controllare il movimento di qualsiasi meccanismo, modello controllato, robot. Il joystick analogico, che esamineremo oggi, è una maniglia fissata a un giunto sferico con due assi reciprocamente perpendicolari. Quando la manopola è inclinata, l'asse ruota il contatto mobile del potenziometro, a causa del quale cambia la tensione alla sua uscita. Inoltre, il joystick analogico ha un pulsante tattile, che viene attivato quando si preme la maniglia verticalmente.
Passo 2
Collegare il joystick secondo lo schema seguente. Collegare le uscite analogiche X e Y del joystick agli ingressi analogici A1 e A2 dell'Arduino, l'uscita del pulsante SW all'ingresso digitale 8. Il joystick è alimentato da una tensione di +5 V.
Passaggio 3
Per vedere chiaramente come funziona il joystick, scriviamo un tale schizzo. Dichiariamo i pin, impostiamo le modalità operative per loro. Si noti che nella procedura setup(), impostiamo l'ingresso switchPin a un livello alto. Ciò abilita il resistore di pull-up integrato su questa porta. Se non lo accendi, quando il pulsante del joystick non viene premuto, l'ottava porta Arduino si bloccherà in aria e catturerà i pickup. Ciò porterà a falsi positivi indesiderati e caotici.
Nella procedura loop(), effettuiamo costantemente il polling dello stato del pulsante e lo visualizziamo utilizzando il LED all'uscita 13. A causa dell'attivazione dell'ingresso switchPin, il LED è costantemente acceso e quando viene premuto il pulsante si spegne, e non viceversa.
Successivamente, leggiamo le letture dei due potenziometri del joystick: l'uscita degli assi X e Y. Arduino ha un ADC a 10 bit, quindi i valori letti dal joystick si trovano nell'intervallo da 0 a 1023. Nella posizione centrale del joystick, come puoi vedere nell'illustrazione, i valori nella regione 500 sono circa al centro dell'intervallo.
Passaggio 4
Di solito viene utilizzato un joystick per controllare i motori elettrici. Ma perché non usarlo per controllare la luminosità di un LED, ad esempio? Colleghiamo un LED RGB (o tre LED ordinari) alle porte digitali 9, 10 e 11 dell'Arduino secondo lo schema sopra, senza dimenticare, ovviamente, le resistenze.
Passaggio 5
Cambieremo la luminosità dei colori corrispondenti quando si cambia la posizione del joystick lungo gli assi, come mostrato in figura. A causa del fatto che il joystick potrebbe non essere centrato con precisione dal produttore e avere il centro della scala non intorno a 512, ma da 490 a 525, il LED potrebbe accendersi leggermente anche quando il joystick è in posizione neutra. Se vuoi che sia completamente disattivato, apporta le modifiche appropriate al programma.
Passaggio 6
Sulla base del diagramma sopra, scriveremo uno schizzo dell'Arduino per controllare la luminosità del LED RGB usando un joystick.
Per prima cosa dichiareremo la corrispondenza dei pin e delle due variabili - ledOn e prevSw - per lavorare con il pulsante. Nella procedura setup(), assegnare le funzioni ai pin e collegare la resistenza di pull-up al pin del pulsante con il comando digitalWrite (swPin, HIGH).
Nel loop() definiamo la pressione del pulsante del joystick. Quando si preme il pulsante, si commutano le modalità operative tra la modalità "torcia" e la modalità "musica a colori".
In modalità freeMode(), la luminosità dei LED è controllata inclinando il joystick in diverse direzioni: più forte è l'inclinazione lungo l'asse, più luminoso risplende il colore corrispondente. Inoltre, la trasformazione dei valori viene rilevata dalla funzione map (value, fromLower, fromUpper, toLower, toUpper). La funzione map() trasferisce i valori misurati (da Low, ad High) lungo gli assi del joystick all'intervallo di luminosità desiderato (a Low, ad High). Puoi fare lo stesso con le normali operazioni aritmetiche, ma questa notazione è molto più breve.
Nella modalità discoMode (), tre colori aumentano alternativamente di luminosità e si spengono. Per poter uscire dal ciclo quando viene premuto il pulsante, controlliamo ogni iterazione per vedere se il pulsante è stato premuto.
Passaggio 7
Il risultato è una torcia composta da un LED RGB a tre colori, la cui luminosità di ciascun colore viene impostata tramite un joystick. E quando si preme il pulsante, si attiva la modalità "musica a colori". Anche se lo uso, al contrario, come luce notturna.
Quindi, abbiamo imparato come collegare un joystick analogico a due assi con un pulsante all'Arduino e leggere le letture da esso. Puoi pensare e implementare un uso più interessante del joystick rispetto al nostro esempio.