スクラッチでロボットを音に反応させる!条件付きループでスマートなプログラムを作る方法
プログラミング学習において、センサーを使った「外部環境への反応」は非常にエキサイティングな要素です。今回は、教育用ロボット「クムクム」とスクラッチ(Scratch)を組み合わせて、マイクで音を検知し、ロボットに特定のアクションをさせる方法を詳しく解説します。
単に音に反応し続けるだけでなく、特定の条件を満たしたときにプログラムを美しく終了させる「条件付きループ」のテクニックについても深く掘り下げていきましょう。初心者から一歩抜け出し、より実践的な制御構造を学びたい方に最適な内容です。
1. 学ぶ内容の概要:マイクセンサーと条件制御の基本
このチュートリアルでは、主に以下の3つのポイントを学習します。
- マイクレベルの取得: 周囲の音の大きさを0から100の数値として捉える方法。
- ずっと動くプログラム(無限ループ): 常に音を監視し、反応し続ける基本的な構造。
- 条件付きループ(~まで繰り返す): 特定の音量に達した瞬間にアクションを起こし、プログラムを終了させる高度な制御。
特に「条件付きループ」を使いこなせるようになると、ロボットを「音を合図に起動させる」「一度だけ驚いて止まる」といった、目的を持ったスマートな動作が実現できるようになります。
2. 詳細解説:音検知プログラムの構築ステップ
具体的なプログラムの作り方を、ステップバイステップで見ていきましょう。
マイクレベルの確認と閾値(しきいち)の設定
まず、スクラッチのステージ上で「音の大きさ」の値を表示させ、現在の環境音がどの程度の数値なのかを確認します。動画では、音を検知するコマンドを使用し、数値がどのように変化するかをモニタリングしています。
次に、反応させる基準となる「しきい値」を決めます。動画の例では、音量が50を超えたら反応するように設定しています。静かな部屋では低めに、騒がしい場所では高めに設定するのがコツです。
「ずっと」ループによる常時監視
基本形として、制御ブロックの「ずっと」の中に「もし~なら」を組み込みます。 「もし音の大きさが50より大きければ、LEDを光らせる」というコードを作成すると、ロボットは音を検知するたびに何度でもLEDを光らせます。このとき、プログラムがビジー状態(過負荷)にならないよう、0.1秒程度の短い待ち時間を入れることが推奨されています。
「~まで繰り返す」を使ったスマートな終了
今回のメインテーマである、1回のアクションで終わらせる方法です。 「音の大きさが50になるまで繰り返す」というブロックを使います。このブロックの中には何も入れず、ループを抜けた(=音が50を超えた)直後に「万歳をする」「喋る」といったアクションを配置します。これにより、音が鳴るまでロボットは待機し、音が鳴った瞬間に動いてプログラムが終了するという、非常に洗練された流れが完成します。
3. 重要な注意点:確実な動作のために
センサーを使ったプログラミングには、ソフトウェア上の論理だけでは解決できない「物理的な要因」が関わってきます。以下の点に注意してください。
環境音への配慮
マイクは非常に敏感です。パソコンのファンの音や、話し声などのノイズを拾ってしまうことがあります。プログラムを動かす前に、必ず現在の「音の大きさ」の平均値を確認し、誤作動しないしきい値を設定しましょう。
「空読み」によるリセット
動画内で非常に重要なテクニックとして紹介されているのが「空読み」です。プログラム開始直後にマイクの値が残っていると、意図せず即座に反応してしまうことがあります。プログラムを開始する前に、マイクの値を一度読み取って0になるのを確認してから本番のループをスタートさせることで、動作の精度が格段に向上します。
4. 応用への道:音センサーで広がる可能性
この技術を習得すると、ロボットプログラミングの幅が大きく広がります。いくつか応用例を考えてみましょう。
- 目覚ましロボット: 朝、アラームの音を検知してロボットが激しく踊り出す。
- 防犯システム: ドアが開く音や足音を検知して「誰か来たぞ!」と喋らせる。
- インタラクティブ・アート: 手拍子の数に合わせて、ロボットの動きを変える(例:1回なら右、2回なら左)。
「条件付きループ」は、音だけでなく光センサーや距離センサーにも応用可能です。「暗くなったらライトをつける」「障害物が見つかるまで前進する」といった制御も、全く同じ論理で作ることができます。今回のマイク制御を入り口に、様々なセンサーとの対話を楽しみましょう!



コメント