Styre en servo

Styre en servo

I dette kapittelet skal vi få en servomotor til å bevege seg avhengig av hvordan vi vrir på et potensiometer.

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).

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.

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.

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: 2017-09-08