レビューメディア「ジグソー」

よし。受けは取れた。


ラジコン用サーボモータ。Galileo&Arduinoで動かします。
サーボモータですので、角度を指定して制御できます。
初サーボなのでまずはお試しを。
でも動作テストだからってただ動かすだけじゃ味気無いよね・・・
テスト基盤と
テスト基盤と

ミクを用意して
ミクを用意して


【追記】2014/02/23 Galileoで動いたよ。


遂にGalileoでミクにネギを振らせることができました。
スケッチはとても見にくいifとforのみで構成されていますが・・・
Galileoが割り込みに対応してない?(上手く動作させられません・・・)ようなのでムリヤリです。
尚、一定時間(回数?)腕を振らせると固まります。
動作確認用LEDは光るので、サーボの処理が固まる?
何はともあれ、一先ずの成功。



/*Galileo用スケッチ
#include <Wire.h>
#include <Servo.h>
Servo serv1;
Servo serv2;
int pos1 = 0; // 腕1角度
int pos2 = 0; // 腕2角度

void setup()
{
serv1.attach(9); // サーボ1を9ピンに
serv2.attach(10); // サーボ2を10ピンに
pinMode(12,OUTPUT); //LED1 12ピン
pinMode(13,OUTPUT); //LED2 13ピン
pinMode(2,INPUT); //ボタン1 2ピン
pinMode(3,INPUT); //ボタン2 3ピン
}

void loop()
{
if(digitalRead(2)==HIGH){ //2ピンのボタンが押されたら
digitalWrite(12,HIGH); //動作確認用LED点灯
delay(100);
digitalWrite(12,LOW); //LED消灯
if(pos1>=45){ //手が上がっている時
for(pos1 = 90; pos1>=1; pos1-=1) //90°に直してから徐々に下げる
{
serv1.write(pos1);
delay(1);
}
}else{ //手が下がってる時
for(pos1 = 0; pos1 < 90; pos1 += 1) //0度に直してから徐々に上げる
{
serv1.write(pos1);
delay(1);
}
}
}

if(digitalRead(3)==HIGH){ //3ピンのボタンが押されたら
digitalWrite(13,HIGH); //動作確認用LED点灯
delay(100);
digitalWrite(13,LOW); //LED消灯
if(pos2>=45){ //手が上がっている時
for(pos2 = 90; pos2>=1; pos2-=1) //90°に直してから徐々に下げる
{
serv2.write(pos2);
delay(1);
}
}else{
for(pos2 = 0; pos2 < 90; pos2 += 1) //0度に直してから徐々に上げる
{
serv2.write(pos2);
delay(1);
}
}
}
}

//////////////////////////////////////////////////////




簡単に遊べるねー。
子供には受けた。無駄に絵を描いた元は取れた。よし十分だ。

本来はGalileoで動かすつもりでしたが、
結局Arduino dueで動かしました・・・
動かない原因はいまだ不明・・・心が折れそうです。




付属品: ホーン3種類(各1個)、ホーン用ビス1本、本体用ビス2本
コネクター: 3端子(爪なしタイプ)
外寸: 22mm×11.5mm×27mm, 重さ 9g
トルク: 1.6kg/cm (4.8Vのとき)
回転速度:0.12秒/60度 (4.8Vのとき)

//ボタンを押すと割り込みが入って手の角度が0度⇔90度変わるスケッチ
//チャタリングは未対策。調べるの面倒・・・
/*   以下スケッチ   */
#include <Wire.h>
#include <Servo.h>
Servo serv1;//サーボのインスタンス
Servo serv2;//サーボのインスタンス
volatile int state1 = false;
volatile int state2 = false;

void setup(){
serv1.attach(8); //デジピン8をサーボ1
serv2.attach(9); //デジピン9をサーボ2
attachInterrupt(0,pressed0,RISING); //デジピン2を割り込み0押したとき処理
attachInterrupt(1,pressed1,RISING); //デジピン3を割り込み1押したとき処理
Serial.begin(9600);
}

void loop(){
serv1.write(state1*90);//0度か90度か
serv2.write(state2*90);//0度か90度か
}

void pressed0(){
state1=!state1;//サーボ1の位相反転
Serial.print(state1,DEC);
}
void pressed1(){
state2=!state2;//サーボ1の位相反転
Serial.print(state2,DEC);
}
  • 購入金額

    0円

  • 購入日

    2014年02月22日

  • 購入場所

31人がこのレビューをCOOLしました!

コメント (0)

ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。

YouTube の動画を挿入

YouTube の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ニコニコ動画の動画を挿入

ニコニコ動画の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ZIGSOWリンク挿入

検索対象とキーワードを入力してください

    外部リンクを挿入

    リンク先の URL とタイトルを入力してください

    URL を正しく入力してください。

    画像を挿入(最大サイズ20MB)

    画像を選択してください

    ファイルサイズが20MBを超えています

    別の画像を追加

    ZIGSOW にログイン

    ZIGSOW会員登録(無料)はこちらから