「誰でもわかるマイコン入門」オートガイド対応
前回は、スライドスイッチを付けて、逆転、0.5倍速モードを追加しました。今回はプッシュスイッチを2個付けて、プッシュスイッチを押している間だけ、速度を倍速または停止に変化させます。
つまり、西側プッシュスイッチを押している間だけ、速度を倍。東側プッシュスイッチを押している間だけ、モーターを停止することにします。
これにより、赤経一軸のオートガイド対応にできます。
それでは、まず工作です。ハード的にはスライドスイッチの場合とまったく同じです。
西側プッシュスイッチの片方を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分