Hallo Julian,
die meisten Erklärungen sind richtig. Es gibt hie und da etwas merkwürdige Formulierungen und ein paar falsche Vorstellungen was in der jeweiligen Code-Zeile gemacht wird.
if(!Sensor.init()) { //sagt dem Sensor, dass wenn die Initialisierung nicht erfolgreich erfolgt, über den Monitor den Satz unter der Schleife ausgibt
Serial.println(" Fehler beim finden und initialisieren des Sensors!"); // gibt dem Benutzer bescheid, dass der Arduino den Sensor nicht gefunden hat
Dem Sensor wird nichts gesagt. Der Bibliotheks-Code meldet, dass das ansprechen des Sensors nicht funktioniert hat = es kam keine Antwort vom Sensor.
myservo.attach(9); // gibt an, dass der Servo an Pin 9 angeschlossen ist (PWM-Pin)
sagt der Servo-Library erzeuge das Servosteuersignal am Pin 9.
Dem Programm ist dabei vollkommen wurscht ob das Servo nun angeschlossen ist oder nicht
if (Sensor.timeoutOccurred()) {Serial.print("TIMEOUT");} // wieder eine Schleife, der befehlt, dass wenn der Sensor für eine gewisse Zeit auf LOW, gesetzt ist, also keine Spannung hat,
keine Schleife! . Eine If-Bedingung wird abgearbeitet und das war es dann.
If-bedingungen können sich aber selbstverständlich innerhalb einer Programm-Schleife befinden
und nur durch diese Tatsache, dass sich eine if-bedingung innerhalb einer Schleife befindet wird die if.bedingung wiederholt ausgeführt. Aber bei jedem Schleifendurchgang nur exakt einmal
Serial.println(); // schreibt über den Seriellen Monitor die ganze Zeit die gemessenen Daten vom Sensor
Schreibt einfach nur einen Zeilenvorschub sonst nichts!
Wenn ein function-call Serial.println() etwas schreiben soll dann muss das was geschrieben werden soll zwischen den Klammern stehen
Serial.println("Hallo Welt");
schreibt Hallo Welt in den seriellen Monitor
val = analogRead(Potipin); //beschreibt die Variable als neue Funktion, analogRead soll die analogen Daten über den Poti messen
Ruft die function analogRead() auf die je nach Potistellung einen Zahlenwert zwischen 0 und 1023 zurück gibt. Dieser Zahlenwert wird in der Variable names "val" gespeichert
myservo.write(val); //liefert die Daten, welche durch die map-Funktion in digitale Werte umgewandelt wurden, an den Servo
Benutzt den Zahlenwert der in der Variable namens "val" gespeichert ist und weist den Servo-library-code an den Zahlenwert als Servoposition in Grad zu benutzen.
Wenn die Variable "val" den Zahlenwert 140 enthält
könnte man salopp sagen "steuere Servoarm auf 140 Grad"
Was in deinem Code jetzt noch überhaupt nicht vorkommt ist irgendein Versuch auch nur eine einzige Zeile hinzuzufügen wie der Wert der Abstandsmessung benutzt werden könnte um
die Position des Servoarms davon steuern zu lassen.
Es ist nicht so wichtig dass diese von dir geänderte Code-Version compiliert.
Das wirklich wichtige ist, dass DU SELBST anfängst darüber nachzudenken wie das gehen KÖNNTE. Und dann mit einer hochspezifischen Frage zu deiner Code-Änderung im nächsten Posting eine Frage stellst.
Dabei lernst du am meisten. Außerdem kann man dann an deiner Antwort am besten sehen welche Dinge kannst du schon und welche noch nicht. Und WIE muss man etwas ergänzend erklären damit du es richtig verstehst.
Von mir wirst du NIEMALS einen vorgekauten Code dazu bekommen. Über andere kann ich natürlich nicht bestimmen.
vgs