====== Wie man einen Servomotor ansteuert ====== ===== Was du schon weißt ===== * Wie man eine Leuchtdiode an den //Arduino// anschließt und einen Widestand verwendet. * Wie man einen Quelltext bzw. ein Programm auf den //Arduino// hochlädt. * Wie man eine Leuchtdiode zum Blinken bringt. * Wie man eine Leuchtdiode auf Tastendruck ein- bzw. ausschaltet. * Wie man mit dem //Arduino// abfragt, ob ein Taster gedrückt wurde. Stecke **niemals** auf dem Steckbrett um, während der Arduino noch mit Strom versorgt wird. Achte darauf, dass auf dem Steckbrett keine **Kurzschlüsse** entstehen. ===== Was kommt jetzt? ===== Jetzt lernst du, wie ein Motor - genauer ein Servomotor - an den //Arduino// angschlossen und betrieben wird. Dazu schauen wir uns einen Servomotor einmal genauer an: {{ :faecher:informatik:schrecksekunde:servo.png }} Wie du siehst, hat so ein Servomotor drei Kabel: ein gelbes, ein rotes und ein braunes.\\ Zwei der drei Kabel sind für die Stromversorgung da: das rote und das braune (in der Zeichnung ist das **braune** Kabel **schwarz**.). Das gelbe Kabel ist für die Bewegung des Servomotors vorgesehen. Der Servomotor kommt zwar mit 5 V aus, benötigt aber relativ viel Strom. Daher schließen wir das **rote** Kabel **nicht** am 5 V-Kontakt an, sondern an //VIN//. Dieser Kontakt ist unten ganz rechts.\\ Das braune Kabel kommt entweder direkt an den Kontakt //GND// oder an eine der beiden waagerechten Leiste, die mit //GND// verbunden sind.\\ Die Schaltung sieht zunächst folgendermaßen aus: {{ :faecher:informatik:schrecksekunde:arduino-servo.png }} Achte darauf, dass das rote und braune Kabel wirklich korrekt angeschlossen sind. Sonst könnten der //Arduino// oder Servomotor irreparablen Schaden nehmen. Fehlt noch, wie man dem Arduino mitteilt, wohin er sich bewegen soll. Dazu kannst du das folgende Programm verwenden: #include Servo myservo; void setup() { myservo.attach(2); } void loop() { myservo.write(180); delay(2000); myservo.write(0); delay(2000); } Über die gelbe Datenleitung teilt der //Arduino// dem Servomotor mit, wie weit er sich drehen soll. Der Servomotor schafft bauartbedingt nur eine halbe Umdrehung, was dem Winkel 180 ° entspricht. Zuerst fährt der Servomotor aber in seine Ausgangslage, die 0 ° entspricht. Eine ganze Umdrehung wären 360 °, die ist aber - wie erwähnt - nicht machbar für diese Art von Motor. Schaue dir den **loop**-Bereich an: void loop() { myservo.write(180); delay(2000); myservo.write(0); delay(2000); } Dort siehst du, dass dem Servomotor mitgeteilt wird, er solle in die Ausgangslage fahren. Damit er das kann, muss eine kurze Zeit gewartet werde. Die hier angegebenen 2 Sekunden sind dafür viel mehr als ausreichend.\\ Dananch wird der Servomotor angewiesen, in die anderen Endposition zu fahren. Danach wird ebenfalls eine kurze Zeit gewartet. ===== Ziel erreicht ===== **Herzlichen Glückwunsch! Du weißt nun, wie man mit dem //Arduino// einen Servomotor ansteuert.** ===== Weitere Ideen ===== Wenn du noch Zeit hast, knnst du folgendes ausprobieren: * Lasse den Servomotor nicht den ganzen Weg fahren, sondern nur einen Teil. * Lasse den Servomotor sich im [[faecher:informatik:schrecksekunde:sekundentakt|Sekundentakt]] einen Teil vorwärts bewegen. * Simuliere einen Scheibenwischer (im Auto). Baue dazu einen Taster mit ein. "Wische", wenn der Taster das Wischen eingeschaltet hat. Dazu kannst du das Programm [[faecher:informatik:schrecksekunde:taster#vollstaendiges_programm_mit_taster|mit der Leuchtdiode und dem Taster]] erweitern. Statt der Leuchtdiode verwendest du einfach den Servomotor. Alternativ findest du das Scheibenwischerprogramm auch [[faecher:informatik:schrecksekunde:scheibenwischer|hier]]. ====== Wie geht's weiter? ====== Weiter geht's mit dem [[faecher:informatik:schrecksekunde:zusammenbau|Zusammenbau des Messgerätes]].