micro:bit版 ラッチ&パルス、タイマーインターフェース


★ラッチモードのLEDの表示が「R」になっていますが間違いです。正しくは「L」(Latch) です!



   

以前浅田先生に分けていただいたATtiny4313で作ったスイッチインターフェースをmicro:bitに移植してみました。(
http://pain.on.coocan.jp/avr/pulse_ratch_timer_ATtiny4313_3/

回路は入出力端子への接続は半田付けができるだけ少なくなるように圧着端子とM3のボルトナットを使用し、出力にはアマゾンの中国製のリレーモジュールを使用しました。 またATtiny4313では設定の切り替えをディップスイッチで行っていましたが、Bボタンの長押し・短押しとLEDの表示で設定を切り替えるようにしました。

今回も浅田先生の書かれた「初めての方へのmicro:bit基礎講座」が非常に参考になりました。micro:bit に興味を 持たれた方はこの冊子を手に入れられることを強くおススメします。
http://www.ne.jp/asahi/ja/asd/jaera/microbit/microbit.htm

(設定メニュー)

 


(回路)

 

  

 入力
  Aボタン:micro:bit本体についている
  Bボタン:    〃
  P1:外部スイッチ

 出力
  P0:リレー出力(外部出力、BDアダプタ等へ)


(プログラム)

  [最初だけ]
    各変数の定義とLEDの初期表示の設定

  [ずっと]
    関数[pressB]の呼び出し(Bボタンを押したときの処理)
    各モードに応じて関数呼び出し
     初期値orモード1のとき → 関数[direct]の呼び出し(ダイレクトモードの処理)
     モード2のとき → 関数[ratch]の呼び出し(ラッチモードの処理)
     モード3のとき → 関数[pulse]の呼び出し(パルスモードの処理)
     モード4のとき → 関数[timer]の呼び出し(タイマーモードの処理)

  [pressB](Bボタンを押したときの処理)
    Bボタン短押しのとき → 関数[shortMode]の呼び出し(Bボタン短押しの処理)
    Bボタン長押しのとき → 関数[longMode]の呼び出し(Bボタン長押しの処理)

  [longMode](Bボタン長押し時の処理)
    Bボタンを長押しごとにモードと表示を変更
     モード1(ダイレクトモード)
      → モード2(ラッチモード)
       → モード3(パルスモード)
        → モード4(タイマーモード) → モード1 へ戻る

  [shortMode](Bボタン短押し時の処理)
    Bボタンを短押しごとに
     モード3のとき(パルスモード)
      ONパルスモード
       → ON・OFFパルスモード → ONパルスモード へ戻る
     モード4のとき(タイマーモード)
      1秒 → 2秒 →・・・→ 10秒 → 15秒 →・・・→ 30秒 → 1秒 へ戻る

  [direct](ダイレクトモードの処理)

  [ratch](ラッチモードの処理)

  [pulse](パルスモードの処理)

  [timer](タイマーモードの処理)

  hexファイルのダウンロード (右クリック→名前を付けてリンク先を保存(K))