🚀 Introduzione
Vuoi controllare una piccola piattaforma orientabile muovendola a destra, sinistra, in alto e in basso? 🎮⚙️
In questo progetto realizzerai un sistema pan-tilt controllato tramite joystick, utilizzando Arduino UNO e due servomotori.
Il primo servo controllerà il movimento orizzontale, chiamato pan.
Il secondo servo controllerà il movimento verticale, chiamato tilt.
Muovendo il joystick, la piattaforma seguirà gradualmente la direzione scelta. Premendo il pulsante integrato nel joystick, il sistema tornerà automaticamente alla posizione centrale.
👉 Il progetto è ideale come base per supporti orientabili, piccoli robot, telecamere, sensori mobili e torrette dimostrative.
Vuoi controllare una piccola piattaforma orientabile muovendola a destra, sinistra, in alto e in basso? 🎮⚙️
In questo progetto realizzerai un sistema pan-tilt controllato tramite joystick, utilizzando Arduino UNO e due servomotori.
Il primo servo controllerà il movimento orizzontale, chiamato pan.
Il secondo servo controllerà il movimento verticale, chiamato tilt.
Muovendo il joystick, la piattaforma seguirà gradualmente la direzione scelta. Premendo il pulsante integrato nel joystick, il sistema tornerà automaticamente alla posizione centrale.
👉 Il progetto è ideale come base per supporti orientabili, piccoli robot, telecamere, sensori mobili e torrette dimostrative.
🎯 Cosa realizzerai
Con Arduino creerai un sistema che:
Con Arduino creerai un sistema che:
- ↔️ muove una piattaforma a destra e sinistra;
- ↕️ regola l’inclinazione verso l’alto e il basso;
- 🎮 utilizza un joystick analogico;
- ⚙️ controlla due servomotori;
- 🎯 mantiene il movimento entro limiti sicuri;
- 🧊 applica una zona morta al centro del joystick;
- 🚀 muove i servo gradualmente;
- 🔘 riporta il sistema al centro tramite pulsante;
- 📟 mostra le posizioni su display LCD;
- ✅ utilizza codice compatibile con Arduino UNO.
🧰 Materiale necessario
Il supporto pan-tilt può essere acquistato già pronto oppure realizzato con materiali leggeri.
- 1x Arduino UNO;
- 1x modulo joystick analogico;
- 2x servomotori SG90, MG90S o compatibili;
- 1x supporto pan-tilt per due servo;
- 1x display LCD 16×2 con interfaccia I2C;
- 1x alimentatore esterno da 5V per i servomotori;
- cavetti jumper;
- breadboard;
- cavo USB.
Il supporto pan-tilt può essere acquistato già pronto oppure realizzato con materiali leggeri.
🛒 Non hai ancora i componenti?
Molti dei progetti presenti su progettiarduino.com utilizzano componenti elettronici di base come LED, resistenze, sensori e breadboard.
Se stai iniziando con Arduino, il modo più semplice è utilizzare un kit completo per principianti, che include quasi tutti i componenti necessari per realizzare molti dei progetti presenti sul sito.
👉 Kit Arduino consigliato:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4b3dxjW
📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un'occhiata anche ai miei libri dedicati ad Arduino.
All'interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su Arduino:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4rfzjXE
Molti dei progetti presenti su progettiarduino.com utilizzano componenti elettronici di base come LED, resistenze, sensori e breadboard.
Se stai iniziando con Arduino, il modo più semplice è utilizzare un kit completo per principianti, che include quasi tutti i componenti necessari per realizzare molti dei progetti presenti sul sito.
👉 Kit Arduino consigliato:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4b3dxjW
📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un'occhiata anche ai miei libri dedicati ad Arduino.
All'interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su Arduino:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4rfzjXE
📚 Librerie necessarie
Il progetto utilizza:
Per il display LCD devi installare una libreria compatibile con LiquidCrystal_I2C.
Per installarla:
Il progetto utilizza:
- Servo;
- LiquidCrystal_I2C.
Per il display LCD devi installare una libreria compatibile con LiquidCrystal_I2C.
Per installarla:
- apri Arduino IDE;
- vai su Sketch → Include Library → Manage Libraries;
- cerca LiquidCrystal I2C;
- installa una versione compatibile con il tuo modulo.
🔌 Schema di collegamento
Joystick analogico
Il modulo joystick possiede normalmente cinque pin:
Nel codice viene utilizzata la modalità INPUT_PULLUP, quindi il pulsante premuto viene letto come LOW.
Servomotore PAN
Il servo orizzontale controlla il movimento destra-sinistra:
Servomotore TILT
Il servo verticale controlla il movimento alto-basso:
Display LCD 16×2 I2C
Se il display non mostra nulla, il tuo modulo potrebbe utilizzare l’indirizzo 0x3F.
Joystick analogico
Il modulo joystick possiede normalmente cinque pin:
- VCC → 5V;
- GND → GND;
- VRx → A0;
- VRy → A1;
- SW → pin digitale 2.
Nel codice viene utilizzata la modalità INPUT_PULLUP, quindi il pulsante premuto viene letto come LOW.
Servomotore PAN
Il servo orizzontale controlla il movimento destra-sinistra:
- filo segnale → pin digitale 9;
- alimentazione → 5V esterno;
- GND → GND comune.
Servomotore TILT
Il servo verticale controlla il movimento alto-basso:
- filo segnale → pin digitale 10;
- alimentazione → 5V esterno;
- GND → GND comune.
Display LCD 16×2 I2C
- VCC → 5V;
- GND → GND;
- SDA → A4;
- SCL → A5.
Se il display non mostra nulla, il tuo modulo potrebbe utilizzare l’indirizzo 0x3F.
⚠️ Alimentazione dei servomotori
Due servomotori possono richiedere una corrente superiore a quella fornibile stabilmente dal pin 5V di Arduino.
Per evitare:
Collega insieme:
👉 La massa comune è necessaria per permettere ad Arduino di inviare correttamente i segnali di controllo.
Due servomotori possono richiedere una corrente superiore a quella fornibile stabilmente dal pin 5V di Arduino.
Per evitare:
- riavvii;
- vibrazioni;
- movimenti irregolari;
- surriscaldamento della scheda;
Collega insieme:
- GND dell’alimentatore;
- GND dei due servo;
- GND di Arduino.
👉 La massa comune è necessaria per permettere ad Arduino di inviare correttamente i segnali di controllo.
💻 Codice Arduino
Il programma legge continuamente i due assi del joystick.
Quando il joystick viene spostato:
Il movimento non dipende direttamente dal valore assoluto del joystick.
Arduino controlla invece la direzione e aumenta o diminuisce progressivamente gli angoli.
In questo modo il joystick funziona come un comando di movimento continuo.
Il programma legge continuamente i due assi del joystick.
Quando il joystick viene spostato:
- l’asse X modifica la posizione PAN;
- l’asse Y modifica la posizione TILT.
Il movimento non dipende direttamente dal valore assoluto del joystick.
Arduino controlla invece la direzione e aumenta o diminuisce progressivamente gli angoli.
In questo modo il joystick funziona come un comando di movimento continuo.
⚙️ Come funziona
Il joystick restituisce valori analogici compresi tra 0 e 1023.
Quando si trova al centro, il valore dovrebbe essere vicino a 512.
Nella pratica il centro può variare leggermente.
Per questo il programma utilizza una zona morta.
Se il valore si trova nell’intervallo centrale, il servo non si muove.
Se supera la zona morta, Arduino modifica gradualmente l’angolo.
Il joystick restituisce valori analogici compresi tra 0 e 1023.
Quando si trova al centro, il valore dovrebbe essere vicino a 512.
Nella pratica il centro può variare leggermente.
Per questo il programma utilizza una zona morta.
Se il valore si trova nell’intervallo centrale, il servo non si muove.
Se supera la zona morta, Arduino modifica gradualmente l’angolo.
↔️ Movimento PAN
Il servo PAN controlla il movimento orizzontale.
Il codice limita l’angolo tra:
Quando il joystick viene mosso verso destra, l’angolo aumenta.
Quando viene mosso verso sinistra, l’angolo diminuisce.
Se il movimento risulta invertito, puoi scambiare nel codice incremento e decremento.
Il servo PAN controlla il movimento orizzontale.
Il codice limita l’angolo tra:
- 10°;
- 170°.
Quando il joystick viene mosso verso destra, l’angolo aumenta.
Quando viene mosso verso sinistra, l’angolo diminuisce.
Se il movimento risulta invertito, puoi scambiare nel codice incremento e decremento.
↕️ Movimento TILT
Il servo TILT controlla l’inclinazione verticale.
Per evitare di forzare il supporto meccanico, il movimento viene limitato tra:
👉 Prima di montare definitivamente il supporto, prova i servo senza carico per verificare gli angoli corretti.
Il servo TILT controlla l’inclinazione verticale.
Per evitare di forzare il supporto meccanico, il movimento viene limitato tra:
- 30°;
- 150°.
👉 Prima di montare definitivamente il supporto, prova i servo senza carico per verificare gli angoli corretti.
🚀 Movimento graduale
Gli angoli non vengono modificati in modo continuo a ogni ciclo del programma.
Arduino attende un breve intervallo prima di cambiare nuovamente la posizione.
La costante:
const unsigned long INTERVALLO_MOVIMENTO = 20;
controlla la velocità.
Un valore più piccolo produce un movimento più rapido.
Un valore più grande lo rende più lento.
Gli angoli non vengono modificati in modo continuo a ogni ciclo del programma.
Arduino attende un breve intervallo prima di cambiare nuovamente la posizione.
La costante:
const unsigned long INTERVALLO_MOVIMENTO = 20;
controlla la velocità.
Un valore più piccolo produce un movimento più rapido.
Un valore più grande lo rende più lento.
🔘 Ritorno al centro
Premendo il joystick, il sistema imposta come destinazione:
Durante il ritorno, il display mostra:
CENTRATURA
Quando entrambi i servo raggiungono la posizione centrale, il sistema torna al controllo manuale.
Premendo il joystick, il sistema imposta come destinazione:
- PAN → 90°;
- TILT → 90°.
Durante il ritorno, il display mostra:
CENTRATURA
Quando entrambi i servo raggiungono la posizione centrale, il sistema torna al controllo manuale.
🧠 Perché è un progetto importante
Con questo progetto impari a:
Con questo progetto impari a:
- controllare due servomotori;
- utilizzare un joystick analogico;
- gestire due assi indipendenti;
- creare una zona morta;
- regolare la velocità in modo proporzionale;
- limitare gli angoli di sicurezza;
- riconoscere la pressione del joystick;
- realizzare un ritorno automatico al centro;
- visualizzare le posizioni su LCD;
- sviluppare codice compatibile con Arduino UNO.
🔄 Varianti possibili
Vuoi migliorare il progetto?
Vuoi migliorare il progetto?
- 📷 monta una piccola telecamera;
- 📏 aggiungi un sensore a ultrasuoni;
- 🔦 monta un LED orientabile;
- 💾 salva l’ultima posizione nella EEPROM;
- 🎯 aggiungi posizioni predefinite;
- 🔘 usa il pulsante per cambiare modalità;
- 📟 crea un menu LCD;
- 🔔 aggiungi un buzzer;
- 📱 controlla il sistema tramite Bluetooth;
- 🤖 integra il supporto in un robot;
- 🌞 realizza un inseguitore solare;
- 🛰️ crea una piccola antenna orientabile.