Styr en servo

Servomotor

Servomotorer kan brukes til mye. I Bygge en terning brukes en slik motor til Ä slÄ en terning. I roboten pÄ bildet brukes to servomotorer per ben til Ä styre hvordan roboten skal gÄ (eller vinke).

html_image

Arduino-basert robot med to servomotorer per ben.

En servomotor er en liten motor som kan vris et gitt antall grader. Servomotorer skilles fra hverandre nÄr det gjelder hvor mange grader de kan vris, og hvor mye de orker Ä dra. Servomotoren som er inkludert i bokens medfÞlgende komponentpakke, kan dra opptil 800 g og kan vris opptil 180°.

Styring av servomotor

I fĂžlgende eksempel skal vi styre hvordan en servomotor skal vris, ved hjelp av et potensiometer. Vi kobler servomotoren til GPIO-pinne 9 og potensiometeret til analog inngang 0.

html_image

Illustrasjon laget med komponenter fra Fritzing (fritzing.org). CC BY-SA 3.0

Obs! Vi mÄ bryte av tre pinner fra pinnelisten for Ä kunne koble servomotoren til koblingsbrettet (i og med at bÄde koblingsbrettet og servomotoren har hunnkoblinger).

I selve skissen begynner vi med Ä inkludere biblioteket for servomotorer. I motsetning til Button-biblioteket er Servo-biblioteket forhÄndsinstallert i utviklingsmiljÞet. Det er derfor nok Ä skrive fÞlgende kodesnutt (der vi ogsÄ lager et nytt servoprosjekt som vi kaller pointer).

// Include the servo library
#include <Servo.h>

// Create a new servo object
Servo pointer;  

Avhengig av hvordan vi vrir potensiometeret fĂ„r vi en verdi mellom 0 og 1023 fra den analoge inngangen. Vi mĂ„ regne om den skalaen slik at den tilsvarer vridningen av servomotoren, dvs. 0 til 180. Heldigvis finnes det en praktisk funksjon kalt map som vi kan bruke til dette. Ved Ă„ kalle den opp kan vi tilpasse skalaen 0–1023 til 0–180.

html_image

Map-funksjonen tilpasser skalaen.

Map-funksjonen brukes pÄ fÞlgende mÄte: 

map(vÀrde, ursprungs-min, ursprungs-max, nytt min, nytt max);

Den ferdige skissen ser slik ut:

ServoReadPot.ino

Sist endret: 23.01.2017