Servon käyttö Arduinossa

Tehtävänannot

– Ohjata servoa eri tavoilla: servo.h ja suoraan digitalWrite(HIGH) ja LOW.

– Kirjoittaa sarjaportin monitorille (serial monitor) viestejä.

Servon ohjaaminen servo.h -kirjaston avulla

Seuraavassa koodissa ensin keskitetään servo. Keskittäinen siis keskittää servon liikeradan puoleen väliin, eli 90 asteeseen. Servo kääntyy 0 – 180 asteeseen.Tämän avulla siis saadaan servon yksilöllinen keskikohta selville. Esimerkiksi kokeessa käytetyssä servossa keskikohta oli kellontaululla havainnollistettuna kello 1 eikä 12 niin kuin voisi olettaa.

#include <Servo.h>
 Servo myTestServo;

 void setup(){
     myTestServo.attach(2); // 2 = pin number where data cable is attached
     myTestServo.write(90); // 90 = degrees
 }

 void loop(){
     delay(100); 
 }

Seuraavaksi voikin ohjelmoida servon liikkumaan edes takaisin niin kauan kuin virtaa vaan riittää.

#include <Servo.h>
 Servo myServo;
 int delayTime = 1000;

 void setup(){
     myServo.attach(2); // 2 = pin number where data cable is attached
 }
 void loop() {
     myServo.write(90); // 90 = degrees where You want to turn the servo
     delay(delayTime);  

     myServo.write(180); 
     delay(delayTime);

     myServo.write(90);
     delay(delayTime);

     myServo.write(0);
     delay(delayTime);
}

Servon ohjaaminen digitalWrite -komentojen avulla

Ja sitten servon ohjaaminen ilman valmiina olevaa kirjastoa. Tämä keino olikin aluksi vaikeampi kuin kirjaston käyttäminen, mutta tämän avulla ongelmien ratkaiseminen voi olla hyvinkin paljon helpompaa.

int servo = 2;
int angle;
int pwm; // pulse width modulation

void setup(){
    pinMode(servo, OUTPUT);
}

void loop (){
    for (angle = 0; angle < 180; angle += 5) {
    servoPulse(servo, angle); }
    for (angle = 180; angle > 0; angle -= 5) {
    servoPulse(servo, angle); }
}

void servoPulse (int servo, int angle){
    pwm = (angle*11) + 500; // Convert angle to microseconds
    digitalWrite(servo, HIGH);
    delayMicroseconds(pwm);
    digitalWrite(servo, LOW);
    delay(50); // Refresh cycle of servo
}

 Arduinolla toteutettu projekti

Löysin Youtubesta videon, jossa Arduinon avulla on tehty ilmarummut. Eli ilman varsinaisia rumpuja pystyy soittamaan rumpuja. Projektiin oli käytetty paljon aikaa ja sen toimivuus näytti olevan loistava. En tietenkään voi olla varma, koska videossa olisi pitänyt myös soittaa ihan miten sattuu, jolloin voisi huomata rumpujen oikeasti toimivan. Video osoitti kuitenkin, että Arduinolla voi saada aikaa ihan mitä vain.

Tässä vielä linkki videoon.

Lähteet

Tero Karvinen – Prototyypin rakentaminen

Servo, digitalWrite – http://electronics.divinechildhighschool.org/Home/Arduino-Lessons/servo-how-to

Arduino servo, pwm – http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM

 

– Antti-Ville Jokela

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Bookmark the permalink.

Comments are closed