« 「誰でもわかるマイコン入門」スイッチをつける | トップページ | 「理想のポタ赤を作る」自動導入対応しました »

2015年1月11日 (日)

「誰でもわかるマイコン入門」オートガイド対応

前回は、スライドスイッチを付けて、逆転、0.5倍速モードを追加しました。今回はプッシュスイッチを2個付けて、プッシュスイッチを押している間だけ、速度を倍速または停止に変化させます。

つまり、西側プッシュスイッチを押している間だけ、速度を倍。東側プッシュスイッチを押している間だけ、モーターを停止することにします。

これにより、赤経一軸のオートガイド対応にできます。

それでは、まず工作です。ハード的にはスライドスイッチの場合とまったく同じです。

1501111
西側プッシュスイッチの片方をP8に接続し、もう片方をGNDに接続します。

東側プッシュスイッチの片方をP9に接続し、もう片方をGNDに接続します。

これで工作終了です。ちなみに、スイッチを押していない場合は状態は1です。押された場合はGNDにつながれるので0になります。これは覚えておいてください。

次にプログラムです。

さて、今回は押している間だけという制約がつきます。前回はスイッチの状態が0か1かだけが重要でした。しかし、今回は、状態だけではなく、スイッチの変化にも対応しなければなりません。つまり、いつ押されたか、いつ離されたかが重要なのです。

このような場合は、常にスイッチの状態を監視していなければなりません。そこで前回説明した無限ループの中で、スイッチの状態を読み込むことにします。そして、前回のスイッチの状態と常に比較し、変化がないか監視します。

while (1) {
 if  (西側スイッチの状態が前回と違う) {
    速度を変える
 }

 
if  (東側スイッチの状態が前回と違う) {
    速度を変える
 }

}

プログラムはだいたいこのような構造になります。さらに詳しく分類します。スイッチの状態が変化した場合ですが、それが1->0に変化したのか、0->1に変化したのか、つまり押されたのか、離されたのかで処理が異なります。そこでさらに条件判定を追加して次のような構造にします。

while (1) {
 
if  (西側スイッチの状態が前回と違う) {
    
if  (現在のスイッチの状態が0の時) {
 
     倍速にする
    }

   
else {
     ノーマルに戻す
    }
 }
 
if  (東側スイッチの状態が前回と違う) {
   
if  (現在のスイッチの状態が0の時) {
      停止する
    }

   
else {
     ノーマルに戻す
    }
 
}
}

実際のプログラムはここにアップロードしました。上記の構造を良く理解して読んでください。各行の詳しい説明はまた今度します。

http://developer.mbed.org/users/Honmaka/code/PulseMotor3/

 
 

|

« 「誰でもわかるマイコン入門」スイッチをつける | トップページ | 「理想のポタ赤を作る」自動導入対応しました »

コメント

ほんまかさん、はじめまして!
Mr.JDISと申します。
デジタル観測をはじめて1年が経ちます。望遠鏡での星雲星団撮影もいいですが、最近ポタ赤での手軽な観測にも関心があります。
ほんまかさんのポタ赤期待してます(^^)

投稿: Mr.JDIS | 2015年1月13日 (火) 13時08分

Mr.JDISさん、はじめまして。
経験一年と言って、めちゃくちゃ凄い写真撮ってるじゃないですか。脱帽。
私は、どんどん時代に取り残されていくな。

ポタ赤期待して頂いてありがとうございます。やる気が出ます。もうじきできますので、お楽しみに。

投稿: ほんまか | 2015年1月13日 (火) 17時53分

ほんまかさん
お褒めいただきありがとうございます。
でも、ほんまかさんの受賞歴からすればまだまだです(^^;
デジタル観測に出遅れた分結構大変です(笑)
遠征先でお会いしましたら、よろしくお願いします(^^)

投稿: Mr.JDIS | 2015年1月14日 (水) 21時51分

Mr.JDIS さん、
私の受賞暦はもう過去のものですから、

でも最近はみんなレベルが高いから大変ですね。

投稿: ほんまか | 2015年1月17日 (土) 11時26分

コメントを書く



(ウェブ上には掲載しません)




« 「誰でもわかるマイコン入門」スイッチをつける | トップページ | 「理想のポタ赤を作る」自動導入対応しました »