Ecco un esempio di codice Arduino per controllare un sistema Pan-Tilt utilizzando un joystick. In questo esempio, utilizzeremo un joystick analogico collegato all’Arduino per controllare due servomotori: uno per il movimento in direzione orizzontale (pan) e uno per il movimento in direzione verticale (tilt).
Assicurati di collegare il joystick ai pin analogici dell’Arduino e i servomotori ai pin appropriati. Inoltre, dovresti avere la libreria “Servo” installata nell’IDE di Arduino.
#include <Servo.h>
Servo servoPan; // Dichiarazione dell'oggetto per il servo orizzontale (pan)
Servo servoTilt; // Dichiarazione dell'oggetto per il servo verticale (tilt)
int joyX; // Variabile per la lettura del joystick orizzontale
int joyY; // Variabile per la lettura del joystick verticale
int joyX_center = 512; // Valore centrale del joystick orizzontale
int joyY_center = 512; // Valore centrale del joystick verticale
void setup() {
servoPan.attach(9); // Collega il servo orizzontale al pin 9
servoTilt.attach(10); // Collega il servo verticale al pin 10
}
void loop() {
// Leggi i valori del joystick
joyX = analogRead(A0);
joyY = analogRead(A1);
// Mappa i valori del joystick ai gradi del servo (0-180)
int servoPanAngle = map(joyX, 0, 1023, 0, 180);
int servoTiltAngle = map(joyY, 0, 1023, 0, 180);
// Aggiorna la posizione dei servomotori
servoPan.write(servoPanAngle);
servoTilt.write(servoTiltAngle);
// Aggiorna la posizione centrale del joystick se necessario (calibrazione)
if (abs(joyX - joyX_center) > 10 || abs(joyY - joyY_center) > 10) {
joyX_center = joyX;
joyY_center = joyY;
}
delay(20); // Aggiorna la posizione dei servomotori ogni 20 millisecondi (50 Hz)
}
Con questo codice, il joystick controlla la posizione dei servomotori in modo che il Pan (orizzontale) e il Tilt (verticale) del sistema rispondano ai movimenti del joystick. Assicurati di calibrare il joystick in modo che il centro corrisponda alla posizione di riposo dei servomotori.
Nota che dovrai adattare i pin utilizzati per collegare i servo al tuo setup hardware, poiché possono variare a seconda del modello di Arduino o del modulo Pan-Tilt utilizzato.