google-site-verification: google3bd66dd162ef54c7.html
fc2ブログ

サーボモーターを動かしてみた

 とりあえず作りたい物が無くなってしまった、というか作りたい物はいろいろあるのですが、やっている時間が取れません。

 実はPlot Clockを作ってみたいと思っているのですが、判らないことだらけです。

 Plot Clockについては今年の二月頃に、いしかわきょーすけさんのWebで知って、すごく面白いと思いました。

 ということで、次のステージに進むためにサーボモーターを買ってみました。

 Amazoneで2個セットで990円というのがあったので早速購入。

▼Tower Pro SG90
サーボモーター9g SG90
 取説も何も無し。本体とホーンなどがビニール袋に2台分無造作に入っています。

 私、ラジコンやったことが無いのでサーボを買ったのは初めて。もちろん触ったこともありません。このサーボのインターフェイスはデジタル。重さが9gなので詳しい人は9gサーボと言うようです。

 実は安いのでアマゾンから二つ買ったのでサーボが4台あります。私の環境でこれをテストするには、ブレッドボード経由でArduino UNOに接続するしかないです。ちょっと面倒くさいなーと思っていたら、いいものがありました。それはLCD key padシールドです。

▼LCD Key padシールドでサーボモーターの動作テスト
LCD Key Padでサーボモーターを接続
 インターフェイスは何かの時に使えるだろう、と思って買っておいたLCD Key pad Sieldeです。秋月で買ったと思うのですが、DXだったかも知れません。(追記:その後調べてみると、DXで売っているlcd keypad shieldだったようです。)

 ミニマムの能力のサーボと言っても、私みたいな初心者から見ると、動作はキビキビしているしトルクも結構あります。
 
 なんでこんな場違いなシールドが便利に使えちゃうかというと、

▼サーボのコネクタがそのまま差せますw
本来はセンサーを接続するコネクタなんでしょうが
 このコネクタはA1からA5までのアナログ入力に信号を入力するためのもの。センサーなどへ電源を供給するためにGND、+5V、Sがセットになって並んでいます。でもこれ何とサーボの3Pinコネクタのピンアサインと一致しています。

 ということで電源が供給できるので、制御信号を出力することが出来ればサーボが動くはずです。

 ということで、setupの中でサーボのピンを定義。
 myservo1.attach(15); // servo1=pin 15

 loopの中で呼び出せばサーボがその位置に動いてめでたく動作確認成功です。
 myservo1.write(pos);
 ちなみに、デジタルの14~19ピンがA0~A5に対応しています。また、A0(デジタルの14ピン)はLCD Key pad シールドがキーを読むために使っているので、サーボを動かすのには使えません。というかコネクタのピンが出ていません。

 動作確認に使ったスケッチは下記です。
/* サーボモーターテスト
  接続には LCD key pad シールドを使う
*/

#include <Servo.h> 
#include <LiquidCrystal.h>

//LiquidCrystal lcd(12, 11, 5, 4, 3, 2);   // when normal LCD
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 
Servo myservo1;  // create servo object  
Servo myservo2; 
Servo myservo3; 
Servo myservo4;
 
int pos= 0;    // variable to store the servo position 
 
void setup() 
{ 
  lcd.begin(16, 2);
  myservo1.attach(15);  // servo1=pin 15 
  myservo2.attach(16);  // servo2=pin 16 
  myservo3.attach(17);  // servo3=pin 17   
  myservo4.attach(18);  // servo4=pin 18   
} 
void loop() 
{ 
  for(pos = 15; pos < 165; pos += 1)  // from 15 to 165 degrees 
  {                                   
    lcd.setCursor(0,0);
    lcd.print(pos);
    lcd.print("  ");
    myservo1.write(pos);              
    myservo2.write(pos);            
    myservo3.write(pos);        
    myservo4.write(pos);    
    delay(10);                       // waits 10ms for the servo to reach the position 
  } 
  for(pos = 165; pos>=15; pos-= 1)    // 165 degrees to 15 degrees 
  {                                
    lcd.setCursor(0,0);
    lcd.print(pos);
    lcd.print("  ");
    myservo1.write(pos);  
    myservo2.write(pos);  
    myservo3.write(pos);   
    myservo4.write(pos);   
    delay(10);                       // waits 10ms for the servo to reach the position 
  } 
} 
 4チャンネル同時に駆動しているので、電源が弱いとCPUにリセットがかかるかも知れません。とにかくこんなことも出来るということで参考になったら幸いです。

 で、PlotClockを作るために少し前進しました、回路とソフトは大丈夫みたいです。でも機械加工をやらないとPlotClockは完成しません。限られた道具とスキルしか持ち合わせていないのに作れるでしょうか。
カレンダー
07 | 2014/08 | 09
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。
記事の内容のご利用は読者の自己責任でお願いします。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード