読者です 読者をやめる 読者になる 読者になる

いそぷろのブログ

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

【Arduino電子工作】サーボを0~180度動かす

目的

単純な角度変更

 

今回使うもの

  • Arduino Micro(USBケーブルも)
  • ブレッドボード
  • ジャンパーワイヤ
  • 長めのピンヘッダ
  • サーボモータ(SG90)

購入先参考は記事下部に書いておきます

 

設計・計算

サーボを単純に動かすとなった場合、特に計算の必要はない

今回は軽いサーボを一個動かすだけなので、Arduinoの5Vピンから電流をとる

大きな負荷をかける、複数個のサーボを同時に動かすなどの場合は別電源を用意しよう

 

今回つかうもので長めのピンヘッダを挙げている理由について

通常?のピンヘッダをブレッドボードにさして、さらにサーボモータのコネクタを挿そうとするとどうしても長さが足りない

【Arduino電子工作】サーボを0~180度動かす

写真の中央のピンヘッダの長さだとブレッドボードに挿しても余裕があり使いやすい

 

回路

実際の回路と、fritzingで描いたブレッドボード図と回路図

【Arduino電子工作】サーボを0~180度動かす

【Arduino電子工作】サーボを0~180度動かす

【Arduino電子工作】サーボを0~180度動かす

サーボの信号線をArduinoのD4ピンにつなげる

 

プログラム

/*
目的:サーボの角度を0度から180度へ単純に変更
http://www.isopro91.com
2015/6/3
*/

#include<Servo.h>

Servo servo1;

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

void loop() {
    servo1.write(0);
    delay(1000);
    servo1.write(180);
    delay(1000);
}

 

プログラムのポイント

今回のプログラムはとてもシンプル

servo1.write(…);という処理をし

delay(1000);1秒待つ

の繰り返し

 

なぜ1秒も待つのかというと(もっと短くてもよい)

プログラムの処理とハード側の処理(サーボモータの回転速度)に大きな差があるためだ

プログラムを早く処理しても、サーボモータの回転が間に合わない事態がおきるのを防ぐために1秒待っている(多分0.5秒でも大丈夫だとおもう)

 

歩行ロボットのモーションを作成する際、このような単純なやり方でやる人もいる

しかし、キビキビしすぎてぎこちない動きになってしまうため、わたしはおすすめしない

おすすめはfor文で制御することだが、それについては次回

 

実際の動作

 

購入先参考

Arduino、ブレッドボード関係は下記記事の購入先参考を参照のこと

【Arduino電子工作】LED点滅 - いそっぷ3DCAD塾

 

1×40 両方長いピンヘッダ - スイッチサイエンス

 

サーボモータ(SG90)についてはAmazonがおすすめだが現在在庫切れのようです(15/6/6時点)

【Amazon】マイクロサーボ SG90(10個セット)

【Amazon】マイクロサーボ SG92R

マイクロサーボ9g SG−90: サーボ 秋月電子通商 電子部品 ネット通販

 

おわり