Arduino: Servos ansteuern

Damit sich meine kleine Roboter-Platform auch aus etwas komplizierteren Lagen selbstständig heraus navigieren kann, muss sie nicht nur feststellen, ob sich vor ihr ein Hindernis befindet. Sie muss auch nachsehen, ob sich neben ihr Hindernisse befindet. Deshalb habe ich den den GP2D12 Entfernungssensor kipp- und schwenkbar montiert. Das Kippen und Schwenken des Sensors erfolgt über zwei Servos.

Meine Recherche zum Ansteuern von Servos mit dem Arduino ergab zunächst etwas verwirrende Ergebnisse. Offenbar war in der Entwicklungsumgebung früher (vor Version 0017) keine Servo-Library enthalten. Die Library, die damals zum Download bereit stand, musste etwas anders angesprochen werden als die Version, die seit 0017 im der Entwicklungsumgebung enthalten ist. Näheres hier: Arduino Playground – Servo.

In meinem kleinen Beispiels-Sketch werden zwei Servos (Pin 8 und Pin 9) über die Tasten 8, 4, 6, 2 (am Besten auf dem Nummernblock) gesteuert. Damit die im Roboter verbauten Servos nirgends anstoßen ist die Drehrichtung in beide Richtungen begrenzt.

— schnipp —

#include <Servo.h>

// Pins festlegen
int pin1 = 9;
int pin2 = 8;

// Servo-Objekt erzeugen
Servo servo1;
Servo servo2;

// Ausgangsposition in Winkelgraden
int pos1 = 90;
int pos2 = 45;

void setup()
{ servo1.attach(pin1);
  servo2.attach(pin2);
  Serial.begin(9600);
}

void loop()
{ // Drehung begrenzen
  if(pos1 < 0) pos1 = 0;
  if(pos1 > 180) pos1 = 180;
  if(pos2 < 45) pos2 = 45;
  if(pos2 > 130) pos2 = 130;

  // Position setzen
  servo1.write(pos1);
  servo2.write(pos2);

  delay(50);

  if(Serial.available())
  { char ch = Serial.read();

    switch(ch)
    { case '4': pos1-=45; break; // schwenken
      case '6': pos1+=45; break; // schwenken
      case '8':  pos2-=10; break; // kippen
      case '2':   pos2+=10; break; // kippen
    }
  }
}

— schnapp —

Siehe auch:


Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>