Hello! im fairly new to arduino and coding, and i need help!
i want that when i release the joystick the servos doesnt go to the start position and stays put, bc im trying to make a robotic arm.
this is the code:
#include <Servo.h>
// Definizione dei pin per i joystick
const int pinJoystickX1 = A0;
const int pinJoystickY1 = A1;
const int pinJoystickX2 = A2;
const int pinJoystickY2 = A3;
// Definizione dei pin per i motori servo
const int pinServoX1 = 9;
const int pinServoY1 = 10;
const int pinServoX2 = 11;
const int pinServoY2 = 12;
// Definizione dell'intervallo per la mappatura del joystick
const int minVal = 0;
const int maxVal = 1023;
// Definizione dell'intervallo di gradi del motore servo
const int minDegree = 0;
const int maxDegree = 180;
Servo servoX1;
Servo servoY1;
Servo servoX2;
Servo servoY2;
void setup() {
// Inizializzazione dei motori servo
servoX1.attach(pinServoX1);
servoY1.attach(pinServoY1);
servoX2.attach(pinServoX2);
servoY2.attach(pinServoY2);
}
void loop() {
// Lettura dei valori sull'asse X e Y del primo joystick
int joystickValueX1 = analogRead(pinJoystickX1);
int joystickValueY1 = analogRead(pinJoystickY1);
// Lettura dei valori sull'asse X e Y del secondo joystick
int joystickValueX2 = analogRead(pinJoystickX2);
int joystickValueY2 = analogRead(pinJoystickY2);
// Mappatura dei valori letti sull'asse X e Y del primo joystick nell'intervallo dei gradi dei primi due motori servo
int servoPositionX1 = map(joystickValueX1, minVal, maxVal, minDegree, maxDegree);
int servoPositionY1 = map(joystickValueY1, minVal, maxVal, minDegree, maxDegree);
// Mappatura dei valori letti sull'asse X e Y del secondo joystick nell'intervallo dei gradi degli altri due motori servo
int servoPositionX2 = map(joystickValueX2, minVal, maxVal, minDegree, maxDegree);
int servoPositionY2 = map(joystickValueY2, minVal, maxVal, minDegree, maxDegree);
// Movimento dei primi due motori servo alle posizioni calcolate dai valori del primo joystick
servoX1.write(servoPositionX1);
servoY1.write(servoPositionY1);
// Movimento degli altri due motori servo alle posizioni calcolate dai valori del secondo joystick
servoX2.write(servoPositionX2);
servoY2.write(servoPositionY2);
// Aggiornamento della posizione dei motori servo ogni 10 millisecondi (adattabile)
delay(10);
}
Thank you for seeing this!!`
