horpos começa com 90, e verpos começa com 0. verpos só começa a aumentar quando chega a 90, que é quando horpos passa pelos 180 e volta aos 90. Eu não percebo muito bem o problema em termos reais, mas vejo que verpos vai ficar estacado nos 90 (no codigo inicial também era assim).
Podias eliminar o if/else dos verservo e fazer algo semelhante como o horservo:
void motion_2(){
for (int dir = 1; dir == 1 || horpos > valor_inicial_horpos; horpos += 2*dir, verpos += dir) {
horservo.write(horpos);
delay(VSPEED);
verservo.write(verpos)
delay(HSPEED);
if (horpos >= 180 + valor_inicial_horpos) {
dir = -1;
horpos -= 2;
verpos -= 1;
continue;
}
Print_Data();
}
}
horpos vai até 180 + init e volta ao init.
verpos vai até 90 + init e volta init.
No caso de 180 ser o maximo e 0 o minimo (que passas pelas funções de versvo e horservo), e o valor inicial do horpos não poder ser 0 e o do verpos menos ou igual a 90, tens de criar duas variaveis de direção, uma para o verpos e outra para o horpos. Mas parece que não é o teu problema.
↧