2020.03.09 Mon
富士宮教室

【休校中のプログラミング】その2IchigoJamで電流イライラ棒を作って遊ぶ

教室内の衛生管理を強化し、体験会を再開いたします。
詳細は下記リンクをご参照下さい。
https://tamiya-robotschool.com/school/detail.html?id=1051
原則火曜夜間、土曜夕方に開催いたします。
1組ずつ体験会を行いたく思います。
その他の時間帯も遠慮なくご相談下さい。

さて、臨時休校中のプログラミング学習のふたつめは、「電流イライラ棒(もどき)」の製作です。
まずはシステム全景。

針金で作ったコースを金属製の輪っかを通して、それぞれが接触したらアウトというバラエティ番組でおなじみのアレと似たようなものです。

ものすごく単純な構成としては、針金コースを0.6mm径の針金で作成し、これをBTN端子に直接差し込み、コースを通す輪っかをGND端子に差し込む方法もあります。
プログラムはたったの2行。
「10 IF BTN() BEEP
20 GOTO 10」
これだけでも輪っかが針金に触れるとピーと鳴って知らせてくれるので、まぁまぁ遊べるようになります。

さて、最初の写真のコースに戻ります。
こちらの作例では、ゴールに着いたら所要時間を表示し、コースに針金が接触していた時間をペナルティとして加算するようにプログラムします。
この場合、輪っかをVCC端子につなぎ、針金をIN1、ゴールをIN2に接続します。
ただし、これでは輪っかが各接点に触れた時に「ショート」と同じ状態になるので、適当な負荷(ここでは1kΩの抵抗)を経由してGNDに向かう線も併設しています。

配線ができたら、プログラミングです。
まずは、輪っかとコースが接触した時にブザーを鳴らし、そうでない場合は最初に戻る、というプログラムを作ります。

これだけなら、こちらもたったの2行。
これで、とりあえずは遊べます。
上で紹介した「単純な構成」と同じ状態ですね。

そして、それだけでは物足りないので、ゴールに達したのを検知するようにプログラムします。

20行目の手前に15行目を加え、さらに30行目を追加しました。
これで、ゴールに輪っかが到達すると、「パパーン♪」と鳴ってゲーム終了になります。
だんだんゲームらしくなってきましたね。

せっかくなので、時間を測れるようにしてみましょうか。

ついでに、プログラムのタイトルも付けておきましょう。
これでプログラムを実行すると、マイコンの時計がリセットされ、ゲームスタート時点からの時間を測ってくれるようになります。
そして、1行目。
「’」の記号を付けてあげると、この記号の後ろに何が書いてあってもマイコンは無視してくれます。
プログラム中にメモ書きなどをしたい時に使えます。
さらに、輪っかがコースに触れたらペナルティを加算するようにします。
そのために10行目を下記のように書き換えます。
「10 IF BTN() BEEP:P=P+1」

さぁ、仕上げです。

このプログラムを追加することで、ゴール到達時に所要時間とペナルティ、これらを加算した総合タイムが表示されるようになりました。
ここでプログラムを保存しましょう。

あとは、作ったコースとプログラムで遊ぶだけです。
自分との戦いを続けるもよし、家族でタイムを競うのもよし、遊び方は人それぞれ。
楽しくやりましょう。

タミヤロボットスクールの応用クラスを進めていくと、このような電子工作を織り交ぜたプログラミングを学習することができます。
昨日と本日の投稿は、体験会でも展示いたします。
ぜひ実際に手に取って遊んでみましょう。
お待ちしております。