教育・子育て

【プログラミング教育研究-11】ふりこカウンター:明るさ受取とカウント

やねこ🐈UGOK's icon'
  • やねこ🐈UGOK
  • 2019/12/02 07:49

 

Content image

 

皆さんこんにちは。もはやお馴染みUGOKのやねこ🐈です。

日付を見て11月が死んだことを知り軽く絶望しました。なぜ死んだ

失っても失っても生きていくしかないので、己を鼓舞しながら研究頑張ります……!(息をするように鬼滅ネタ)

 

さて、今回は前回書いた「ふりこカウンター」について、全体の設計計画と

今進めているプログラムについて記していこうと思います。

(前回の記事はこちら↓)

 

 

◎ふりこカウンター全体図

 

ふりこカウンターの全体図として、今考えているものを簡単に図にしました。↓

Content image
定規使えよ( ˘ω˘ )

用意するものは、

・micro:bit 2台
・サーボモーター 1台
・電池
・ふりこ

micro:bit①は、明るさセンサーとしてだけ使用し、明るさの変化を感知したとき、

micro:bit②に無線を送ります。

micro:bit②は、カウント用として使用し、micro:bit①からの無線を受け取ったとき、

カウントを1増やします。

また、スムーズに繰り返しカウントできるよう、Bボタンを押したときカウントが0に戻るプログラムにします。

さらに、サーボモーターに対し、「カウントが1以上かつ10以下」のとき回転

そうでなければ停止というプログラムを行います。(※カウント10のとき5往復)

サーボモーターについてはまだ具体的にどう学びに結び付けるか思案中なので、

仮に「回転」「停止」だけのプログラムとしています。

 

ちなみに明るさの変化を感知し、カウントするだけならmicro:bit1台でも十分可能です。

しかし明るさセンサーで実装が上手くできない場合、他のセンサーに代替して試作しなければなりません。

研究をスムーズにすため、また実験の可能性を広くするため、今回は「センサー用」と

「カウント用」で2つのmicro:bitに分けた設計にしました。

サーボモーターをmicro:bit①(センサー用)ではなくmicro:bit②(カウント用)に接続するのも同じ理由です。

 

 

◎明るさ読み取り用のプログラム(micro:bit①)

 

micro:bit①(明るさ読み取り用)のプログラムとして、私はまず

「スタート時の明るさの値を変数に入れ、その変数と常時の明るさとの差異を調べる」

というプログラムを考えました。

例えばスタート時の周囲の明るさが120だった場合、変数には「120」が代入され、

「周囲の明るさがスタート時(120)より5以上暗くなった場合」無線を送信する、という流れです。

以下のようなプログラムにしました。

Content image

<備考>

※赤の「明るさ」(変数)→[明るさ]と表記
※紫の「明るさ」(入力)→【明るさ】と表記(=周囲の明るさを示す)

○最初に「変数[明るさ]を【明るさ】にする」というプログラムにすると、0に近しい値が代入されてしまい、正常にカウントできない

変数[明るさ]の最初の値は0とし、「ゆさぶられたときに、変数[明るさ]に周囲の明るさの値を代入」というプログラムに変更

○プログラムの処理が速いためバグが生じる、変化を読み取れない

→「無線で数値を送信」のあとに「0.5秒一時停止」のプログラムを追加

 

<問題点>

●「最初の明るさ」との違いを感知するので、ずっと暗い状態になったときでも反応し、カウントしてしまう(柔軟に“明るさの変化”を読み取ることができない)

●「最初だけ」しか基準の値を取らないので、最初が極端に明るい場所であったりすると、感知に誤差が生じる

 

以上の点を踏まえ、さらにプログラムを改良しました。↓

Content image

このプログラムでは、「最初だけ」でなく「ずっと」周囲の明るさの値を変数に代入する手法を取りました。

変数を[明るさ1][明るさ2]の2つ用意し、[明るさ1]には常時の周囲の明るさの値を、

その0.1秒後に[明るさ2]に周囲の明るさの値を代入します。

すなわち、「今その瞬間の明るさ」と「次の瞬間の明るさ」の値が変数で取れることになります。

この2つの変数の値の差異を調べることで、より柔軟に「明るさの変化」を感知できます。

常に変数の値を更新するので、ずっと暗い状態になったとしてもカウントはされません。

 

 

◎カウント用のプログラム(micro:bit②)

 

カウント用プログラムは、それほど難しい処理をしていません。

Content image

最初に変数[カウンター]を0とし、無線を受信したとき1だけ増やすというプログラムです。

この処理をカウンターが10になるまで繰り返します。

Bボタンを押すと変数[カウンター]は0となり、初めからカウントできます。

まだサーボモーターのプログラムを組み込んでいないので、micro:bit②のプログラムは現在途中段階といったところです。

 

 

◎今後の課題

 

●サーボモーターのプログラムを追加する

●一瞬で通り過ぎると変化を認識できないことがあるので、プログラムやセンサーの位置を工夫する

●「カウンター」の数値を表示させることによるタイムラグが生じる

●できればふりこを製作し、カウンターが実際に使えるか試す

 

 

今回はここまで。引き続き、プログラムの試作を重ねていきます。

お読み下さった皆様、誠にありがとうございました!!

 

*****

【リンク】

やねこ🐈Twitterアカウント(・ω・)っ【https://twitter.com/ugok_yaneko

UGOKTwitterアカウント(・ω・)っ【https://twitter.com/ugok_girls

 

 

Article tip 0人がサポートしています
獲得ALIS: Article like 10.89 ALIS Article tip 0.00 ALIS
やねこ🐈UGOK's icon'
  • やねこ🐈UGOK
  • @ugok-yaneko
UGOKのやねこ🐈です。プログラミング教育について研究中。漫画が好きなのでその感想や雑談などものんびりと。

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
他カテゴリ

機械学習を体験してみよう!(難易度低)

Like token Tip token
69.82 ALIS
Eye catch
他カテゴリ

ALISのシステム概観

Like token Tip token
5.00 ALIS
Eye catch
クリプト

スーパーコンピュータ「京」でマイニングしたら

Like token Tip token
1.06k ALIS
Eye catch
他カテゴリ

BCAAは本当に必要なのか?徹底的調査

Like token Tip token
1.20 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
クリプト

続・NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
6.37 ALIS
Eye catch
クリプト

「ハッシュ」とは何なのか、必ず理解させます

Like token Tip token
0.10 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
教育・子育て

【科学】アリストテレスにデカルトにニュートンに…みな光に取り憑かれた~光学の発展~

Like token Tip token
22.75 ALIS
Eye catch
他カテゴリ

防犯意識 マーキング 下書き供養④

Like token Tip token
24.07 ALIS
Eye catch
教育・子育て

【科学(化学)】進化に必要だった猛毒のガス~酸素~

Like token Tip token
25.63 ALIS
Eye catch
ビジネス

海外企業と契約するフリーランス広報になった経緯をセルフインタビューで明かす!

Like token Tip token
16.10 ALIS