サーボを動かそうの最近のブログ記事

 ジャイロの動作は安定してきましたか? 表示を工夫して見やすくしましょう。

課題4
 ジャイロ1の出力を角度だけではなく、”*”を使って視覚的に表示しましょう。課題3までは角度を数値で表示していましたが、*を左右に動かして、視覚的に表示します。

mbedプログラミング
・目盛りの表示
 lcd.printf("--------+--------"); //角度からLCD桁への変換
  gy1_lc=(gy1_sgm-5)/10+9; //桁(0~19の20桁)のはみ出し処理
  if(gy1_lc >20){
      gy1_lc=19;
  }
  if(gy1_lc <0){
      gy1_lc=0;
  } //”*”の表示 一つ前の場所の*を消して、次を書くことを繰り返します。
 
lcd.locate(gy1_lc_old,3);
  lcd.printf(" ");
  lcd.locate(gy1_lc,3);
  lcd.printf("*");
  gy1_lc_old=gy1_lc;


■■次のURLでPublishしています。
  http://mbed.org/users/takeuchi/programs/2bk0819_Gyro_test04/lxsxaq
課題4
 サーボを動かすパルスの幅1.0ms~2.0msに合わせて’*’を左右に動かすプログラムを作成しましょう。課題3の応用課題です。

mbedプログラミング
・'*'のカーソル位置はvr_dataより下記の式で計算します。結果はマイナスになることがあります。locate()はマイナス値ではプログラムが強制終了してしまうので、次行のif()にて修正します。
  i=vr_data*10000-1;

■■下記URLでPublishしています。
  http://mbed.org/users/takeuchi/programs/2bk0817_servo_test04/lw5y3f
課題3
 サーボを動かすパルスの幅1.0ms~2.0msに合わせて’*’を棒グラフとして表示するプログラムを作成しましょう。課題2と同じmbedハードウェアのソフトウェアを工夫して、視覚に訴えるプログラムを作成します。

mbedプログラミング
・vr_dataよりfor()文にて'*'を出力します。C言語を習い始めたときの例題でこんなような内容をよく見かけました。
     for(i=0;i<vr_data*10000-1;i++){
        lcd.printf("*");
      }

■■下記のURLでPublishしています。
  http://mbed.org/users/takeuchi/programs/2bk0817_servo_test03/lw46x8
 ラジコン用サーボはうまく動きましたか? 少し発展させます。

課題2
 mbedに接続した10kΩボリュームを回転するとサーボのアームが左右に動くプログラムを作成しましょう。

回路図
 課題1のmbedシステムのp15に10kΩボリュームを接続します。

13_AS000521.GIF
 mbedには簡単な設定で動作するPWM出力が装備されています。このPWMを使ってパルスを出力し、サーボモータを動かしましょう。

課題1
 mbedに接続したラジコン用サーボに1.0ms~2.0msのパルスを順次送信し、アームを左右に動かすプログラムを作成しましょう。送信周期は20ms=50Hzとします。

使用するサーボ
 ラジコン用として販売されているサーボであればほとんどのサーボが利用可能です。ただし、デジタル・サーボは使用できません。作例ではプチロボで使っているE-Sky製小型サーボを使用しています。

  サーボ例:http://eleshop.jp/shop/g/g490001/

 サーボ接続線は電源とシグナルの3本で構成されているのが普通です。写真のサーボの配線は次のとおりです。

  白:信号線、赤:電源(+)、黒:共通グラウンド
 ほとんどのサーボは電源が赤・黒または赤・茶です。シグナルが白や橙です。

1_P1220495.jpg





2011年12月: 月別アーカイブ

カテゴリ


Copyright (C) 2006-2015 CQ Publishing Co.,Ltd. All Rights Reserved.