Ayuda con los servos!!!

Hola!!
Acabo de empezar a utilizar servomotores y tengo un problema. no se si se trata del sketch o del circuito, pero creo que es el Sketch. Aquí os dejo el circuito y el Sketch:

#include <Servo.h>
Servo myservo;
const int ledizq=7;
const int ledder=6;
const int pulsadorizq=11;
const int pulsadorder=10;
void setup() {
  // put your setup code here, to run once:
  myservo.attach(9);
  pinMode(ledizq,OUTPUT);
  pinMode(ledder,OUTPUT);
  pinMode(pulsadorizq,INPUT);
  pinMode(pulsadorder,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly: 
  myservo.write(90);
  if (digitalRead(pulsadorizq)==HIGH){
    digitalWrite(ledizq, HIGH);
    digitalWrite(ledder, LOW);
    myservo.write(0);
    }
  else{
    digitalWrite(ledizq, LOW);
    digitalWrite(ledder, LOW);
    myservo.write(90);
    }
  if (digitalRead(pulsadorder)==HIGH){
    digitalWrite(ledizq, LOW);
    digitalWrite(ledder, HIGH);
    myservo.write(180);
    }
  else{
    digitalWrite(ledizq, LOW);
    digitalWrite(ledder, LOW);
    myservo.write(90);
    }
}

Perdonen, no he dicho lo que quiero conseguir :sweat_smile:. Quiero que cuando pulses un botón, el servo apunte hacia el LED y que el LED se encendia.

quitá el codigo del else.
sino pulsa lo manda siempre al otro lado y cuando pulsas y soltas se vuelve sin darte cuenta.
El micro va a 16000000 de veces por segundo.

Se lo he quitado y ahora el servo entra en un bucle, se mueve un poco hacia la derecha y un poco hacia la izquierda

el servo se tiene que mover mientras pulsas el boton? o con darle una vez tiene que ir al lado que le toque? y si esto ultimo es así, cuándo tiene que volver al centro?

yo pondría unos delays despues de la pulsación, para que te lo lea bien, ya que sino, creerá que le has dado un monton de veces

#include <Servo.h>
Servo myservo;
const int ledizq=7;
const int ledder=6;
const int pulsadorizq=11;
const int pulsadorder=10;
void setup() {
  // put your setup code here, to run once:
  myservo.attach(9);
  pinMode(ledizq,OUTPUT);
  pinMode(ledder,OUTPUT);
  pinMode(pulsadorizq,INPUT);
  pinMode(pulsadorder,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly: 
  myservo.write(90);
  if (digitalRead(pulsadorizq)==HIGH){
    delay(300);// para que te lea bien la pulsacion
    digitalWrite(ledizq, HIGH);
    digitalWrite(ledder, LOW);
    myservo.write(0);
    
    delay (5000); // que pasen 5 segundos para que vuelva a su estado original
    digitalWrite(ledizq, LOW);
    digitalWrite(ledder, LOW);
    myservo.write(90);
    }
  if (digitalRead(pulsadorder)==HIGH){
delay(300);// para que lea bien la pulsacion del boton
    digitalWrite(ledizq, LOW);
    digitalWrite(ledder, HIGH);
    myservo.write(180);
    
    delay(5000);// que pasen 5 segundos antes de volver al estado original
    digitalWrite(ledizq, LOW);
    digitalWrite(ledder, LOW);
    myservo.write(90);
    }
}

de esta manera, el servo debería ir directo al led, aunque si quieres que vaya poco a poco, puedes hacerlo con un "for" que queda más chulo 8):

if (digitalRead(pulsadorder)==HIGH){
  delay(300);// para que lea bien la pulsacion del boton
  digitalWrite(ledizq, LOW);
  digitalWrite(ledder, HIGH);
  for (int i=90;i<180;i++){
    delay (100);
    myservo.write (i);
  }
}

Puedes mejorarlo mas aun y hacer que haste que no suelte el boton no avance

if (digitalRead(pulsadorder)==HIGH)
{
  while(digitalRead(pulsadorder)==HIGH);// Se queda en el bucle hasta soltar el boton
  digitalWrite(ledizq, LOW);
  digitalWrite(ledder, HIGH);
  for (int i=90;i<180;i++){
    delay (100);
    myservo.write (i);
  }
}

principiantau:
Se lo he quitado y ahora el servo entra en un bucle, se mueve un poco hacia la derecha y un poco hacia la izquierda

eso te ha pasado porque has quitado el else pero no le dejas tiempo al Servo a que llegue a donde tiene que llegar, con lo que los comandos se te ejecutan instantáneamente: Según le ordenas girar y empieza, ya le has enviado la orden de volver, por eso el tema del delay de los 5 segundos (por ejemplo), antes de que empiece a volver al estado original