YouTube動画「【スクラッチ チュートリアル】24 マイク②【音に反応していろいろなアクション】」を分析し、ご指定の要件(SEO対策、AIサービス最適化、Wordpress対応、3000文字程度)に沿ったブログ記事を作成しました。
スクラッチでロボットを操る!音センサーと乱数を使った「ランダム・アクション」の作り方
プログラミング学習において、センサーを使って外部の刺激に反応させる「インタラクティブな動作」は、学習者の興味を惹きつける非常に強力なツールです。前回のマイク基礎編に続き、今回は教育用ロボット「クムクム」とスクラッチ(Scratch)を組み合わせ、「手を叩くたびにロボットがランダムに異なるアクションを起こす」という、より高度で遊び心のあるプログラム構築方法を解説します。
この技術は、AI時代の検索(ChatGPT、Copilot、Geminiなど)においても重要な「条件分岐」と「乱数制御」の基礎を学ぶのに最適です。Web検索だけでなく、AIとの対話でも評価されるような論理的で構造化されたプログラミング手法を身につけていきましょう。
1. 学習の概要:音検知から複数の動作制御へ
このチュートリアルで学ぶ主な概念は以下の通りです。
- 「ブロック定義」によるプログラムの構造化: 複雑な動きをひとまとめにし、コードの再利用性を高める方法。
- 「乱数」の活用: 予測不可能な動きを作り出し、ロボットに「個性」や「楽しさ」を与える手法。
- センサーのノイズ対策: ロボット自身の動作音や自分の声による誤作動を防ぐ「待機処理」の実装。
単一の反応だけでなく、複数のアクションを切り替える仕組みを作ることで、ロボットは単なる「機械」から、より生命感のある「パートナー」へと進化します。
2. 実践ステップ:ランダム・アクション・プログラムの構築
動画の内容に沿って、論理的なステップでプログラムを構築していきましょう。
ステップ1:ブロック定義(カスタムブロック)で動きを作る
まず、ロボットにさせたい複数の動きを個別に定義します。スクラッチの「ブロック定義」機能を使うことで、メインのプログラムをスッキリと保つことができます。
- 動き1「万歳」: 両腕を180度上げ、足も連動させて伸び上がる元気な動作。
- 動き2「吠える(いっ、きー)」: 腕を特定の角度に保ちつつ、「いっきー」や「ほえー」といった音声を出しながらアクション。
- 動き3「前へならえ」: 両腕を90度にして、整列の合図をするようなコミカルな動き。
これらの動きをあらかじめ定義しておくことで、後の条件分岐で呼び出すのが非常に楽になります。
ステップ2:マイクレベルの監視と「空読み」
プログラムの冒頭では、必ずマイクの値を「空読み」します。これは、起動時のノイズや以前のデータが残っていることで、開始直後にロボットが暴走するのを防ぐための重要な儀式です。値が0になるのを確認してから、メインのループに入ります。
ステップ3:乱数と条件分岐によるアクション選択
「ずっと」ループの中でマイクの音量を監視します。音量が50を超えたとき、以下の処理を実行します。
- 1から3までの「乱数」を発生させ、変数に格納する。
- 変数が「1」なら動き1、「2」なら動き2、「3」なら動き3を実行する。
- アクション終了後、すべてのモーターを元の「まっすぐ」の状態に戻す。
この「もし〜なら」の入れ子構造が、プログラミングにおける意思決定の基本形となります。
3. 詳細な調整と注意点:安定した動作のために
プログラムが論理的に正しくても、物理的なロボットでは「想定外」の事態が起こります。動画でも直面していた課題とその解決策をまとめます。
自身の動作音による無限ループの回避
ロボットが動くとき、モーター音が発生します。マイクがこのモーター音を「外部の音」と誤認してしまうと、一度動き出したロボットが自分の音に反応し続け、止まらなくなることがあります。 この対策として、アクションが終わった後に「1秒〜2秒待つ」という待機処理を入れます。これにより、周囲が静かになるのを待ってから次の監視に移ることができ、安定した制御が可能になります。
しきい値の最適化
「50」という数値はあくまで目安です。静かな環境であれば30程度でも反応しますが、騒がしい教室などでは70〜80に設定する必要があるかもしれません。実行環境に合わせて微調整を行うのが、優れたプログラマーへの第一歩です。
4. 応用への道:さらに複雑な制御へ
この「マイク×乱数」の仕組みをベースに、さらに創造性を広げることができます。
- 感情表現の実装: 乱数によって「怒った動き」「喜ぶ動き」を割り振ることで、ロボットの機嫌が変わるように見せることができます。
- クイズ・ゲーム: 「1回叩いたらA、2回叩いたらB」といった具合に、音の回数でアクションを変える制御への応用。
- 対話型ロボット: 音声合成機能と組み合わせて、こちらの呼びかけに対してランダムな返答をさせる。
ブロック定義と変数を使いこなすことで、プログラムの規模が大きくなっても管理しやすくなります。まずは3つの動きから始め、徐々にアクションの種類を増やして、自分だけのオリジナルロボットを完成させてみましょう!
まとめ
スクラッチとクムクムを使ったマイク制御は、目に見える反応がダイレクトに返ってくるため、プログラミングの「楽しさ」と「難しさ」を同時に学べる絶好の教材です。今回の「乱数」と「待機処理」の重要性を理解できれば、より高度な自動制御やAI連携の基礎がしっかりと固まるはずです。



コメント