2011年2月19日土曜日

15分でサーボ動く


リセットボタンができたので、調子にのってサーボをつないでみる。
普通ならここで、ユニバーサル基板にサーボ用のピンを立てて・・・・となるから、
めんどくさいのだが、GEMMYはサーボ用にピンが立っている。
寝る前にもうひとつ進んでおこうと、気軽に行ける。

mbedのライブラリからservoで検索して、なにも考えす一番最初のをインポートする。
サンプルのコードからぺぺっと カットアンドペーストして、
この前作ったボタンテストのプログラムに足す。

とりあえずめんどうだから、USB給電でも負荷にならなそうな、
ちっちゃいサーボをつないだ。

コンパイルして実行~~~??? あれ 動かん。

オシロで信号ピンをあたると、パルスはちゃんと出ている。

しばし考えてサーボコネクターのプラス側をあたる。

おお、USBから給電してしまわないように出来てるぞ。
それは正しい!

で、一昨日作った間に合わせ電源をつないだら動いた。
めでたしめでたし。

ここまで、トラブルシュートいれて15分。
まあ、楽なもんですよ。

------------------
プログラムは、ボタンテストにちょっと足して、白、黒ボタンで、サーボが
いっぱいに切れる。赤ボタンでニュートラル。
即席サーボテスター出来上がり。

コードは、ほとんど変わりませんわ。

#include "mbed.h"
#include "TextLCD.h"
#include "Servo.h"

TextLCD lcd(p11, p12, p27, p28, p29, p30); // rs, e, d4-d7

DigitalIn swWhite(p13);
DigitalIn swRed(p14);
DigitalIn swBlack(p9);

Servo myservo(p26); //GEMMY C1 CONNECTOR



int main() {

lcd.printf("SERVO TEST");

swWhite.mode(PullUp);
swRed.mode(PullUp);
swBlack.mode(PullUp);

while(1){
if(swWhite==0){
lcd.cls();
lcd.printf("#### ---- ----");
myservo = 1.0;
}
else if(swRed==0){
lcd.cls();
lcd.printf("---- #### ----");
myservo = 0.5;
}
if(swBlack==0){
lcd.cls();
lcd.printf("---- ---- ####");
myservo = 0.0;
}

}
}