Olá pessoal!
Estou com uma dúvida em relação a maneiras de ativar os servos.
Esta forma funciona perfeitamente, mas é grande e repetitiva demais:
void servos(int id){ //Recebe como parametro o id do nicho a ser ativado principalmente com o valor de nicho[w]
// Escreve no Serial o nicho ativado
Serial.print("----------- nicho ");
Serial.print(id);
Serial.println(" liberado -------------");
servo1.write(0); // Posiciona o Servo 1 em 0 - posicao inicial
servo2.write(0); // Posiciona o Servo 2 em 0 - posicao inicial
servo3.write(0); // Posiciona o Servo 3 em 0 - posicao inicial
servo4.write(0); // Posiciona o Servo 4 em 0 - posicao inicial
servo5.write(0); // Posiciona o Servo 5 em 0 - posicao inicial
servo6.write(0); // Posiciona o Servo 6 em 0 - posicao inicial
delay(100);
switch (id){
case 1 : //Caso a funcao seja chamada com nicho[w] = 1,
servo1.write(180); //posiciona o servo em 180 - posicao de despejo
delay(100);
break;
case 2 : //Caso a funcao seja chamada com nicho[w] = 2,
servo2.write(180); //posiciona o servo em 180 - posicao de despejo
delay(100);
break;
case 3 : //Caso a funcao seja chamada com nicho[w] = 3,
servo3.write(180); //posiciona o servo em 180 - posicao de despejo
delay(100);
break;
case 4 : //Caso a funcao seja chamada com nicho[w] = 4,
servo4.write(180); //posiciona o servo em 180 - posicao de despejo
delay(100);
break;
case 5 : //Caso a funcao seja chamada com nicho[w] = 5,
servo5.write(180); //posiciona o servo em 180 - posicao de despejo
delay(100);
break;
case 6 : //Caso a funcao seja chamada com nicho[w] = 6,
servo6.write(180); //posiciona o servo em 180 - posicao de despejo
delay(100);
break;
}
}
Tentei implementar um String Array para guardar os nomes servo1, servo2...
String servo[7] = {"servo1","servo2","servo3","servo4","servo5","servo6"}; //vetor para armazenar os nomes dos servos
void servos(int id){ //Recebe como parametro o id do nicho a ser ativado - valor de nicho[w]
// Escreve no Serial o nicho ativado
Serial.print("nicho ");
Serial.print(id);
Serial.println(" liberado");
for(int k=1;k<7;k++){ // Loop para resetar a rotação dos servos
servo[k].write(0); // Posiciona o servo em 0 - posicao inicial
delay(100);
}
servo[id].write(180); // Posiciona o servo em 180 - posicao de despejo
delay(100);
}
Mas ao compilar recebo o seguinte erro:
Arduino: 1.8.5 (Windows 10), Placa:"Arduino/Genuino Uno"
error: 'class String' has no member named 'write'
servo[k].write(0);
^
error: 'class String' has no member named 'write'
servo[id].write(180);
^
exit status 1
'class String' has no member named 'write'
Peço uma indicação do que fazer para otimizar este fragmento