Servo motor

Een motor zet elektriche stroom om in beweging. Bij een servomotor is deze beweging een rotatie tot maximaal 180 graden. 
Servomotoren worden gebruikt in machines om bijvoorbeeld machine-onderdelen of producten in de juiste positie te brengen. Een bewakingscamera kan met behulp van een servomotor ook in verschillende posities gebracht worden.

We gaan nu bekijken hoe je de servomotor kunt aansluiten op de Arduino en hoe je de servomotor vervolgens kunt aansturen. 

Benodigdheden:
- Jumper draden: Rood, zwart, nog 1 andere draad
- Servomotor
- 3 male header pins (zie plaatje hieronder)



Maak hiermee het volgende circuit:



Met de rode draad zorg je ervoor dat het breadboard voorzien wordt van 5V, de zwarte draad verbindt het breadboard weer met Ground.
De drie male header pins zijn de verbinding tussen de servomotor en het breadboard. 
Let goed op dat je de zwarte draad van de servomotor met de - kolom (Ground) verbindt en de rode draad van de servomotor met de + kolom (5V) verbindt. 
De witte draad van de servomotor verbind je met poort 9 op de Arduino.

Code:

#include <Servo.h> 
 
Servo myservo;  // create servo object to control a servo 
                        // twelve servo objects can be created on most boards
 
int pos = 0;       // variable to store the servo position 
 
void setup() 

  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 

 
void loop() 

  for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees 
  {                                                  // in steps of 1 degree 
    myservo.write(pos);          // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 180; pos>=0; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);          // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
}

Met deze code laat je de servomotor een rotatie van 0 tot 180 graden en weer terug maken. 

Je kunt de positie van de arm van de servomotor ook zelf bepalen met behulp van een pot-meter.
Hiervoor gaan we de pot-meter toevoegen aan het eerder opgestelde circuit. 

Extra benodigdheden:
- POT-meter
- 3 lange jumper draden, 2 korte jumper draden

Je zet de pot-meter er op de volgende manier tussen:



Let erop dat de twee buitenste pinnetjes van de pot-meter met 5V en Ground verbonden zijn. 
Zorg dat je de middelste pin kunt laten aflezen door hem met een jumper draad te verbinden met analoge poort A0.

Code:

#include <Servo.h> 

Servo myservo;  // create servo object to control a servo

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

void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  Serial.begin(9600);
}

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

De POT-meter fungeert nu als een draaiknop waarmee je de positie van de arm kunt bepalen.