いそぷろのブログ

おもしろいことを考えていきたい

【Arduino電子工作】サーボ for文でスムーズな回転

目的

サーボをスムーズに回転(角度変更)させる

 

今回使うもの

過去記事と同じ

www.isopro91.com

 

設計・計算

過去記事と同じ

 

回路

過去記事と同じ

 

プログラム

/*
目的:サーボの角度を0度から180度へぬるっと変更
http://www.isopro91.com
2015/6/3
*/

#include<Servo.h>

Servo servo1;

int val = 0;

void setup() {
    servo1.attach(4);
}

void loop() {
    for(int i=0; i<=180; i++){
    val = i;
    servo1.write(val);
    delay(15);
    }
    for(int i=180; i>=0; i--){
    val = i;
    servo1.write(val);
    delay(15);
    }
}

 

プログラムのポイント

過去記事でやったプログラムと比べ少し複雑に感じるかもしれない

前回はservo1.write(…)+delay(…)で行っていた処理を今回はfor文のループで処理するようにしている

for文はどんなことをしているかというと、ループ一回につき1度 サーボの角度を変更している

1度の変更ごとにdelay(15);をいれているため、ゆっくり動いているように感じる

 

ちなみにdelay(5~10)のほうがより早く動く

 

将来、歩行ロボットをつくるとしたら、メインループ(void loop())に今回やったようなfor文を書くことはしないと思う

サーボが増えてきた場合に今回の処理を行うと行数が無駄に増えてしまう

 

その際使おうと考えているのが関数だ、

自分でサーボ制御用の関数をつくってそれで制御する

その辺の話は複数のサーボ制御の回にでもしようと思う

 

実際の動作

 

おわり