サーボモーターを動かしてみた
とりあえず作りたい物が無くなってしまった、というか作りたい物はいろいろあるのですが、やっている時間が取れません。
実はPlot Clockを作ってみたいと思っているのですが、判らないことだらけです。
Plot Clockについては今年の二月頃に、いしかわきょーすけさんのWebで知って、すごく面白いと思いました。
ということで、次のステージに進むためにサーボモーターを買ってみました。
Amazoneで2個セットで990円というのがあったので早速購入。
▼Tower Pro SG90
取説も何も無し。本体とホーンなどがビニール袋に2台分無造作に入っています。
私、ラジコンやったことが無いのでサーボを買ったのは初めて。もちろん触ったこともありません。このサーボのインターフェイスはデジタル。重さが9gなので詳しい人は9gサーボと言うようです。
実は安いのでアマゾンから二つ買ったのでサーボが4台あります。私の環境でこれをテストするには、ブレッドボード経由でArduino UNOに接続するしかないです。ちょっと面倒くさいなーと思っていたら、いいものがありました。それは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は完成しません。限られた道具とスキルしか持ち合わせていないのに作れるでしょうか。
- 関連記事
-
- アナログ時計を逆転させる方法の補足説明
- Plotclockを作ってみた
- サーボモーターを動かしてみた
- テキトーな動きをする時計を作ってみた
- 時計の秒針を正転/逆転させてみた