_08_Poti_controls_Servo

Ein Servo wird von einem Potentiometer kontrolliert.

/*
* Poti controls Servo
* Controlling a servo position using a potentiometer (variable resistor) 
* 
* Anmerkung: was bei Fehlern hilft: einen Pin ohne PWM und RX/TX benutzen (also 2, 4, 7, 8, 12 oder 13)
* 
* UNBEDINGT BEACHTEN: Wenn die Servo-Library benutzt wird, geht auf den digitalen
* Pins 9 und 10 die PWM-Funktionalitaet verloren. D.h., dass man auf diesen
* Pins z.B. keine LEDs mehr dimmen kann.
*/

#include <Servo.h>                    // servo-bibliothek laden

Servo myservo;                        // create servo object to control a servo 
int servoPin = 8;                     // choose pin 8 to connect servo

int potpin = 2;                       // analog pin used to connect the potentiometer
int val;                              // variable to read the value from the analog pin 

void setup() { 
  myservo.attach(servoPin);           // attaches the servo on pin 8 to the servo object 
  Serial.begin(9600);                 // initialize serial interface
} 

void loop() { 
  val = analogRead(potpin);           // reads the value of the potentiometer (value between 0 and 1023) 
  val = map(val, 0, 1023, 0, 179);    // scale it to use it with the servo (value between 0 and 180) 
  Serial.println(val);                // print value to Serial Monitor
  myservo.write(val);                 // sets the servo position according to the scaled value 
  delay(15);                          // waits for the servo to get there 
} 

Dieses Beispiel herunterladen

Aktuelle Beiträge

Servos – alternative Bewegungsbeispiele

Unter diesem Link gibt es eine zip-Datei mit verschiedenen Bewegungsarten für Servo-Motoren. Hier eine kurze Beschreibung der einzelnen Beispiele:

  • completelyRandom: Nach zufällig ausgewählten Zeitabschnitten denkt sich das Programm neue Zufalls-Zielpositionen und -Geschwindigkeiten für den Servo aus.
  • servoChameleon: Der Servo bewegt sich ein Stück in eine Richtung und dann ein etwas kleineres Stück wieder zurück, dann wieder hin, usw. Wenn er an einer Seite angekommen ist, läuft das ganze rückwärts.
  • sinMovement: Servo bewegt sich wie von Sinus-Kurven bekannt, dh. er beginnt langsam an einer Seite, wird auf seinem Weg zur Mittelposition schneller und dann wieder langsamer, je näher er der anderen Seite kommt. Dann geschieht das Selbe rückwärts.
  • slowlyGettingFaster: Wie sinMovement, nur wird der Servo gegen Ende einer Bewegung nicht langsamer.
  • tickBackAndForth: Servo “tickt” von links nach rechts und wieder zurück, dh. er macht immer nur kleine Schritte wie ein Uhrzeiger.
  • verySlow: Servo bewegt sich sehr langsam von links nach rechts und wieder zurück. Weil Servos nur ganze Zahlen von 0-180 entgegennehmen, gibt es auch hier ein “Ticken”. Eine komplett weiche Bewegung ist leider mit Standard-Servos unmöglich.

Viel Spaß beim Tüfteln!

Marius

Veröffentlicht in Labor
  1. .ino! Kommentare deaktiviert
  2. Überarbeitung der Beispiele Kommentare deaktiviert
  3. Experience Design im Sommersemester 11 Kommentare deaktiviert
  4. Physical Computing I & II Kommentare deaktiviert