Servo steuerung

Hallo ich bin Einsteiger mit dem Adruino.
Habe einige Beispiel Projekte aus Büchern durchgemacht darunter auch mit dem Servo
Ich habe diesen einfachen Sketch geschrieben bei dem der Servo bis 150 fährt und stoppt

#include <Servo.h>
Servo servo1;
void setup(){
servo1.attach(9);
}
void loop(){
servo1.write(150);
}

Dann habe ich diese Zeile geschrieben

#include <Servo.h>
Servo servo1;
int pos = 0;

void setup(){
servo1.attach(9);
}
void loop(){
for (pos = 0; pos < 150; pos += 1) // dreht sich von 0 zu 150 in einer Schritten
{
servo1.write(pos); // servo soll zur variable 'pos' drehen
delay(15);
}
}

So dreht sich der Servo von 0 nach 150 und fängt dann wieder von vorne an
Ich möchte aber dass der Servo bis 150 fährt und dann an dieser Position stehen bleibt.
Ich habe mir gedacht mit einer if schleife aber ich weiß nicht wie ich das schreiben soll.
Ich hoffe doch dass ihr mir dabei helfen könnt
Es ist kein Projekt mit dem Servo, ich möchte einfach nur die Programmierung verstehen

Mit der for Schleife positionierst Du den Servo in Schritten von 0 bis150. Nachdem for fertig ist ist auch die loop() Funktion fertig. Danach wird die loop() Funktion erneut aufgerufen und somit auch die for Schleife.

Abhilfe:

  • die for-Schleife in die setup() Funktion gebe und loop() leer lassen.
  • eine Statusvariable definieren, die anfangs zB null ist, und dann beim ersten Durchgang 1 gesetzt wird. die for-Schleife bedingt mit der Statusvariable ausführen:
#include <Servo.h>
Servo servo1;
int pos = 0;
int status =0;

void setup()
  {
  servo1.attach(9);
  }
void loop()
  {
  if (status==0)
    {
    for (pos = 0; pos < 150; pos += 1) // dreht sich von 0 zu 150 in einer Schritten
      {
      servo1.write(pos); // servo soll zur variable 'pos' drehen
      delay(15);
      }
    status=1;
    }
  }

Grüße Uwe