Salve a tutti,
da poco mi sono affacciato a questo splendido mondo e fino ad adesso me la sono cavata abbastanza bene considerando che sono quasi all'asciutto di programmazione in c, tuttavia conoscendo la struttura e alcuni comandi e modificando alcuni sketch già scritti sono sempre riuscito nel mio intento. Adesso però ho bisogno di un piccolo aiuto vi espongo la questione:
Devo comandare un servocomando collegato ad arduino tramite una scheda in grado di controllare via seriale fino a 32 servocomandi, attraverso un joystick a due assi collegato ad arduino.
Non ho bisogno che il comando sia proporzionale, ma semplicemente che quando metto il joy a destra il servo ruoti per un verso e a sx per l'altro. In sostanza il joy alla fine mi svolge la funzione di due pulsanti.
Ora ho scritto il seguente sketch e sebbene sul monitor seriale mi viene restituito in visivo il comando del servo ovvero #3P(rot)T100 il servo non si muove di un passo.
Ho provato a cambiare il passo della rotazione da +1 a +10 e a giocare con il delay e la velocità con cui il servo deve raggiungere la posizione, ma niente....
Ho sbagliato completamente il codice?
int joy = A4; // joystick per movimento parabola
int joyval = 400; // posizione neutra
int rot = 1450; // partenza rotazione
int pass = 0; // incremento operazioni
int movdx = 10;
int movsx = 10;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (pass == 0)
{
//Serial.print("#1P1000T1000\r\n"); //parabola inclinata
//delay(2000);
//Serial.print("#2P900T1000\r\n"); //parabola aperta
(pass = pass + 1);
//Serial.print("#1P650T1000\r\n"); //posizione reset inclinazione
//delay(2000);
Serial.print("#3P1450T1000\r\n"); //posizione reset rotazione
delay(2000);
Serial.print("#3P600T1000\r\n");
}
if (pass == 1)
{
joyval = analogRead(joy);
if (joyval >= 800)
{(rot = rot + movdx);
if (rot == 2300)
{(movdx = 0);}
else
{(movdx = 10);}
Serial.print("#3P");
Serial.print(rot);
Serial.print("T100\r\n");
Serial.println(rot);
delay(100);
}
if (joyval <= 100)
{(rot = rot - movsx);
if (rot == 600)
{(movsx = 0);}
else
{(movsx = 10);}
Serial.print("#3P");
Serial.print(rot);
Serial.print("T100\r\n");
Serial.println(rot);
Serial.println(rot);}
delay(300);
}
}