Problem mit Servo steuerung

Oha, da sind mehrere Macken drin:

  • Das Zeichen '\0' (als Nullbyte) wird mit Backslash ("") geschrieben, nicht mit Slash ("/").

  • atof() wandelt einen ASCII-String in eine Fließkommazahl, nicht in einen int. Verwende dafür besser atoi(), sonst wird die Fließkommabibliothek mit in deinen Sketch gebaut. Das kostet Platz und ist langsam.

  • du hast die serielle Schnittstelle auf 9600 BPS gestellt, das sind etwa 1000 Zeichen pro Sekunde. Deine while-Schleife läuft aber sehr viel schneller als 1000x pro Sekunde. Nach dem ersten gelesenen Zeichen
    wird also die Abbruchbedingung (Serial.available()>0) zuschlagen, einfach weil das nächste Zeichen noch nicht da ist.
    Besser ist es da, gar keine Schleife zu verwenden:

#include <Servo.h>

Servo se;
char inByte[12];
int i = 0;
char zeichen;
char fertig = 0;
int pos;

void setup(){
  se.attach(4);
  se.write(90);
  Serial.begin(9600);
  Serial.println("Ready...");
}

void loop()
{
  // erst mal serielle Schnittstelle auswerten
  if(Serial.available()){
    zeichen = Serial.read();
    if((zeichen >='0') && (zeichen <='9') && (i < 10)) // numerisches Zeichen?
    {
      fertig = 0;
      inByte[i] = zeichen; // zeichen in den String uebernehmen
      inByte[i+1] = '\0'; // Ein String hat in C/C++ ein Nullbyte am Ende
      i++;
    }
    else fertig = 1; // ein nicht-numerisches Zeichen beendet die Zahl
  }
  
  // Wenn von der Seriellen was kam kann das jetzt umgewandelt werden
  if((fertig == 1) && (i > 0)) // nur bei i>0 haben wir was gelesen! 
  {
    pos = atoi(inByte);
    se.write(pos);
    Serial.println(pos);
    i = 0;
  }
  
  // hier kann evtl. weitere Verarbeitung erfolgen
}

loop() schaut in jedem Durchgang, ob ein Zeichen angekommen ist. Falls ja, wird überprüft ob es eine Ziffer ist. Ist es eine, wird sie an den String angehängt (bis zu 10 Ziffern), andernfalls wird die Zahleneingabe beendet ("fertig = 1;").
Dann schaut loop() ob eine Zahl komplett angekommen ist (also i > 0 und fertig == 1). Wenn ja, wird der Servo gestellt und i wieder genullt.

Dadurch wird loop() nicht durch eine while()-Schleife blockiert und kann mehrere tausend Durchläufe pro Sekunde schaffen, so dass man "nebenbei" jetzt noch Luft für andere Aufgaben hat (Sensoren auslesen, LEDs blinken lassen etc...).
Wichtig ist halt nur, dass keine dieser Aktionen den Arduino blockiert.

Gruß
pi