「’w’」の場合には、54行目で「ClearButtonInfo()」という関数が呼び出されますね。マイクロビットに記録されたボタンの情報をクリアする。button_b.was_pressed()これを説明するため、上で説明した関数「UserInput_CheckA()」および「UserInput_CheckB()」をもう一度見てみよう。AボタンとBボタンが同時に押されたかどうかを調べるやつでしたね。Aボタンが押されたとき、Bボタンが押されているかどうかを調べる。‘a’この中で、「is_pressed()」を使っているのだが、「is_pressed()」では、「was_pressed()」の戻り値に関係する「以前ボタンが押されたかどうか」の記録がFalseに戻らないようなのだ。(「is_pressed()」と「was_pressed()」の違いについては、以下をご覧ください。新しいタブで開きます。)【マイクロビット入門】(12)AボタンとBボタンの使い方すると、どうなるのですか?AボタンとBボタンの同時押しで時間が0となった後、「ボタンが押された」と判定されて設定値が0から増えてしまったのだ。なんてこった!これを回避するため、AボタンとBボタンが同時に押された後、改めて「ボタンが押された」と判定されないようにするため、「was_pressed()」を呼び出して、ボタンが押されたかどうかの記録を「押されていない」に戻しておくようにしたのだ。それで、AボタンとBボタンの両方で「was_pressed()」を呼び出すのですね。マイクロビットに記録されたボタンの情報をクリアする。button_b.was_pressed()Cボタンの説明がないのですが・・・Cボタンが押された場合は、「カウントダウンの状態」に状態が変化する。グローバル変数「s」の値はそのまま変化しない。次はカウントダウンの状態について説明しよう。ここで「utime」を使用しているのだ。HAPPYのイメージを表示して開始音を鳴らす。現在時刻が終了時刻より前の間はループする。ボタンが押されたかどうかを調べる。Cボタンが押された場合は中止する。nextState63行目に「utime」が出てきますね。これは、何を行っているのですか?現在の時刻に、「設定の状態」で設定した秒数を追加して、アラームをならす時刻を求めているのだ。ええと、「utime」で用意されている関数は以前調べましたね。secondsで指定された秒の間、何もしないで待つ。msで指定されたミリ秒の間、何もしないで待つ。usで指定されたマイクロ秒の間、何もしないで待つ。現在をミリ秒であらわす値(ticks)を得る。現在をマイクロ秒であらわす値(ticks)を得る。ticksにdeltaを足す。2つのticksの差を計算する。現在の時刻を「utime.ticks_ms()」で取得して、「utime.ticks_add()」「s」秒を足すことで、アラームを鳴らす時刻を求めている。これをローカル変数「deadLine」に格納しているのだ。1000)「s」は秒単位なので、1000倍してミリ秒として使用しているですね?ウム、その通りだ。「deadLine」は一度設定したら変化しない。そのため、68行目の「while」のループ文より前に設定しておく必要があるのだ。現在時刻が終了時刻より前の間はループする。ボタンが押されたかどうかを調べる。Cボタンが押された場合は中止する。nextState「utime.ticks_diff()」により、現在の時刻とアラームを鳴らす時刻の差を求めている。この差が0以下になるまでループするようになっているのだ。差が0以下になるとどうなるのですか?ループが終了して、「カウントダウンの状態」の関数が終了し、次の状態(スタート/ストッブボタンが押されていなければ「アラームの状態」、押されていれば「設定の状態」)の関数が呼び出されるのだ。「while」文のループの中(69行目から75行目までのブロック)にもプログラムが書かれていますが・・・69行目は、残り時間をマイクロビットのLED表示部分にスクロール表示している。1000)そして、71行目以降は、Cボタンが押されたかどうかを調べて、押された場合はカウントダウンを中止する機能が実現されているのだ。ボタンが押されたかどうかを調べる。Cボタンが押された場合は中止する。nextStateそうか、カウントダウンの時に「スタート/ストッブボタン:Cボタン」が押されたら、「設定の状態」に変化するのでしたね。アラームの状態アラームの状態では、どのような動きをするのですか?サウンドを三回ならして、同時に追加した回路のLEDも三回光らせているのだ。マイクロビットのLED表示部分にはイメージを表示している。LEDを両方とも点灯サウンドは三回とも「Sound.SPRING」なのですね?まぁ、最初のバージョンなので、すでに用意されているサウンドを利用したのだ。今後の改良で、オリジナルなサウンドも作ってみたいネ。どんなサウンドができるのか、楽しみですね!今回のまとめ今回は、キッチンタイマーのプログラムの最初のバージョンを作ったのですね。時間の設定と、カウントダウン動作、そして、設定した時間をリセットする機能を実現したのだ。時間の表示方法を改良しないといけないのだ。オリジナルのサウンドも作らないといけないですね。プラモの飛行機のプロペラ(5)チャンネル指定、双方向通信マイクロビット、パイソンのプログラミング応用編です。マイクロビットの無線のライブラリより、config関数を用いてチャンネルの指定を行ってみました。ライブラリ「utime」を用いて一定間隔でプロペラの状態をリモコンに送る機能を組み込んでみました。マイクロビット【マイクロビット入門】(2)パイソンエディターを使ってみよう。教育用マイコンボード「マイクロビット」のプログラミングを解説します。実際にプログラムを作る前に、そのための道具「パイソンエディター」の説明を行います。パイソンエディターを使って、マイクロビットのプログラムを作ろう。マイクロビット【マイクロビット】保存したプログラムを整理しよう。マイクロビットのパイソンエディターでSaveを実行すると、ダウンロードフォルダーに番号付きでファイルが保存されていきます。このままでは、どのファイルがどういう内容化が分からなくなってしまいます。パソコン初心者の方向けに、別にフォルダーを用意して移動し、ファイル名を変更する方法を解説しました。マイクロビット【マイクロビット応用】[8.2]キッチンタイマーの回路:追加した押しボタンスイッチ回路についてマイクロビット、パイソンのプログラミング応用編で、プルアップ抵抗を利用した押しボタンスイッチ回路を追加しました。この回路の動作について、オームの法則、抵抗分圧などの説明を交えつつ解説します。マイクロビット【マイクロビット入門】(14)配列の要素とインデックス教育用マイコンボード「マイクロビット」のプログラミングを解説します。使用言語はパイソンです。前回に引き続き、今回も配列について説明します。配列を用いてマイクロビットのLED表示部で時計の針を一回転させます。配列をより深く理解しよう。プラモの飛行機のプロペラ(4)無線で操作できるように改造マイクロビット、パイソンのプログラミング応用編です。今回は無線機能についてです。これまで作ってきた模型飛行機のプロペラを回すプログラムに無線機能を追加しました。コメントをキャンセルメールアドレスが公開されることはありません。※サイト上に表示された文字を入力してください。映画などを見て、登場する乗り物をプラモで作ります。マイクロビットという教育用マイコンを使ったプログラミング入門の記事も書いていきます。青木鳥をフォローする無断転載を禁止します。道具ホーム検索トップサイドバータイトルとURLをコピーしました。