Pan-Tilt utilizzando un joystick

Share

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.