« 「誰でもわかるマイコン入門」フォトMOSリレーをマイコンで操作 | トップページ | 「理想のポタ赤を作る」コマンドリファレンス完成 »

2015年1月31日 (土)

「誰でもわかるマイコン入門」時間差シャッター分配器

さて、前回は、簡単なインターバルタイマーを作成しました。今日は、本来の目的であるシャッター分配器で改造します。まずシャッター入力用のコネクタを追加します。

1501311
一方をP5に、もう一方を3.3V Regulated Outにつなげます。これで、シャッターONのとき、マイコンに1が入力されます。

プログラムは以下にアップしました。

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

プログラム解説です。

DigitalOut Camera1(p30);
p30をデジタル出力として使う、名前をCamera1と名づける

DigitalOut Camera2(p29);
p29をデジタル出力として使う、名前をCamera2と名づける
 
 
 

DigitalIn  Input(p5);
p5をデジタル入力として使う、名前をInputと名づける

int main() {
    Input.mode(PullDown);
Inputをプルダウンする(0Vにつなげる)これにスイッチが解放の場合、0になる

    int PreInput = 0;
整数型の変数をメモリからもらいPreInputと名づける。そして0に初期化する。

ここで変数という新しい概念が出てきました。プログラムでは入力したデータや計算したデータを保存したいことがよくあります。そのときメモリ領域からもらうメモリを変数といいます。変数の名前はプログラマが自由に付けられます。intは整数型を表します。他には小数点型のfloatなどもあります。また上記のようにある値で初期化することもできます。

PreInputという変数ですが、これは、定期的にスイッチの状態を入力するのですが、一回前の入力を保存しておくために使用します。なぜ、前の状態を保存するかと言うと、スイッチの変化を感知したいからです。

    int NowInput;
整数型の変数をメモリからもらいNowInputと名づける。NowInputが前回ではなく現在のスイッチ状態を保存しておきます。

    Camera1 = 0;
カメラ1のシャッターをOFFにします。

    Camera2 = 0;
カメラ2のシャッターをOFFにします。

    while(1) {
無限ループ繰り返し

        NowInput = Input;
スイッチの状態を入力します。

        if (NowInput != PreInput) {
もし、スイッチが前回とい違うならつまりOFF->ON、またはON->OFFなら次の処理をします。

            Camera1 = NowInput;
カメラ1のシャッターをONまたはOFFします。

            wait(1);
1秒待ちます。(時間差シャッター)

            Camera2 = NowInput;
カメラ2のシャッターをONまたはOFFします。

        }
if条件文はここで終わり

       PreInput = NowInput;
現在のスイッチの状態をPreInputに保存、次回のif条件判定で利用する
       

wait(0.1);
0.1秒まつ。あまり頻繁にスイッチの状態を連続して読み込みすると、スイッチの状態が変化したときのバタツキ(ON/OFFを頻繁に繰り返すこと)まで読み込んでしまうため、0.1秒間隔でスイッチの状態を読み込めば十分。
    }
}

さて、次回からは応用編に入ります。手始めにTFT液晶をつけてみます。お楽しみに。

|

« 「誰でもわかるマイコン入門」フォトMOSリレーをマイコンで操作 | トップページ | 「理想のポタ赤を作る」コマンドリファレンス完成 »

コメント

コメントを書く



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




« 「誰でもわかるマイコン入門」フォトMOSリレーをマイコンで操作 | トップページ | 「理想のポタ赤を作る」コマンドリファレンス完成 »