12. servo sweep

Servo

Mål: Att kunna styra positionen på en servo.

Teori: En servo har tre kablar: Vin, GND och signal. Ge servon 5V/GND och styr signalkabeln med Arduinon. Servon kommer då att kunna roteras exakt mellan 0 och 180 grader.


 

Fritzing kopplingsschema

12 Servo sweep


Arduino koden

#include <Servo.h> // inkludera servo biblioteket
 
Servo myservo;  // skapa servo object  
                // upp till 12 servo objekt kan skapas pa de flesta kort
 
int pos = 0;    // servons position sparas i variabeln pos
 
void setup() 
  { 
    myservo.attach(13);  // kopplar servo objektet till pin13 
  } 
 
void loop() 
{ 
   for(pos = 0; pos <= 170; pos += 5) // starta fr 0 och hoppa med 5 grader tills 170 grader 
    {                                  
      myservo.write(pos);              // skriv till servon de olika positionerna  
      delay(5);                       // pausa 5ms 
    } 
   for(pos = 170; pos>=10; pos-=5)     // samma tillbaka
    {                                
      myservo.write(pos);              
      delay(5);                       
    } 
} 

Servo med knapp

Mål: Att kunna styra positionen på en servo då man trycker på en knapp

Teori: Arduino läser tryckknappen på pin 2 hela tiden. Då knappen inte är intryckt så är pin 2 kopplad till ground (LOW) och när knappen trycks in så kopplas pin 2 till 5V (HIGH). Resistorn på 10 kiloohm är till för att undvika kortslutning.

I koden styrs servon beroende på tryckknappens läge.

fritzing layout


Arduino koden

#include <Servo.h>            // inkludera servo biblioteket
Servo myservo;                // skapa servo object  
int button;                   // en variabel för att spara knappens värde (på eller av)
 
void setup() 
{ 
    myservo.attach(13);       // kopplar servo objektet till pin13 
    pinMode(2, INPUT);        // definiterar pin2 som input
} 
 
void loop() 
{ 
    button = digitalRead(2);  // läs pin2 (på eller av)
  
    if(button == HIGH){       // om knappen på                   
      myservo.write(90);      // rotera servon till 90 grader 
      }
      
    else if(button == LOW){   // om knappen av  
      myservo.write(0);       // rotera servon till 0 grader 
      }

} 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s