ガイド · 読了まで14分

ブロックプログラミングの授業計画:8週間のArduinoロボット講座

教師向けのブロックプログラミング授業計画です。無料のブロックプロジェクトを使った40分×8週間のArduino授業、24人分の教材リスト、授業例、ルーブリックを紹介します。

ロボットプログラミングとは、ボードが周りの状況を感じ取り、判断し、何かを動かせるようにするプログラムを書くことです。ボタンや光センサーが感じ取り、Arduinoが判断し、LED、ブザー、モーターが反応します。このサイクルを教室で教えるいちばん簡単な方法は、ブロックプログラミングから始め、生徒がロジックを理解したら同じプログラムの実際のコードに進むことです。この記事は、教師、ロボットクラブ、家庭でワークショップを開く保護者のための、すぐに使えるブロックプログラミングの授業計画です。8週間、週1回40分の授業で、毎回BlueGraysの無料ブロックプロジェクトを1つ中心に据えています。

この記事は「ブロックからコードへ」シリーズの第6回、最終回です。前回はブロックでセンサーを読み、PicoでMicroPythonに移行する方法を扱いました。シリーズを最初から読むならブロックプログラミングとは?に戻ってください。

計画の各週には、目標、BlueGraysの無料プロジェクト、その週に生徒が出会う新しいブロック、そして実際のコードでそれに当たるものがあります。そのあとに、24人のクラス向けの教材リスト、分刻みの授業例、評価用のルーブリック、進みの速いグループと遅いグループへの工夫、ハードウェアなしでシミュレーターを使う方法、安全上の注意が続きます。計画はArduino Unoを中心に組み立てており、Raspberry Pi PicoとMicroPythonの週を任意で追加できます。

ロボットプログラミングとは?なぜブロックから始めるのか

ロボット講座と聞くとすぐにロボットカーを思い浮かべがちですが、どのロボットも同じ3つの仕事の上に成り立っています。感じ取る、判断する、動かす、の3つです。ボタンを読むのが「感じ取る」、「ボタンは押されている?」と問うのが「判断する」、LEDを点けたりブザーを鳴らしたりするのが「動かす」です。LEDとボタンでこの3ステップを理解した生徒にとって、同じロジックをモーターや距離センサーに移すのは、ほとんど部品を入れ替えるだけの話です。そのためこの計画はモーターではなくLEDとボタンから始め、最終週にHC-SR04距離センサーでロボットの「目」にたどり着きます。

なぜブロックから始めるのでしょうか。10〜14歳の生徒にとって、最初の授業の最大の敵はセミコロン、波かっこ、大文字と小文字の区別です。生徒はプログラムが何をするかではなく、なぜコードがコンパイルできないのかを考えることになってしまいます。ブロックならこうしたエラーがなくなり、注意がまっすぐロジックに向かいます。ただし、ブロックにとどまることが目的ではありません。現実の世界では、ArduinoはC++で、PicoはMicroPythonでプログラムします。BlueGraysのブロックはまさにこの橋渡しのために作られています。各ブロックは、ボードに書き込まれる実際のコードの1行と1対1で対応しています。生徒はまずブロックを読み、次に同じプログラムのコードを見て、各ブロックを対応する行と結びつけます。すべてのブロックプロジェクトとその仕組みはブロックプログラミングのページで見られます。

8週間のブロックプログラミング授業計画

各授業は40分、2〜3人のグループを想定しています。表のプロジェクトはブロックもコードも含めてすべてBlueGraysで完全に無料なので、生徒にプレミアムは必要ありません。順番には意図があります。まず出力(LED)、次にタイミング、変数、繰り返し、続いて入力(ボタン)と条件、状態の保持、アナログセンサー、配列とループ、最後に音と距離です。毎週、前の週の内容に新しい考え方を1つだけ加えていきます。

週目標BlueGraysの無料プロジェクト新しいブロック・考え方実際のコード
1プログラムとは何か、デジタル出力LEDの点滅セットアップ(1回だけ実行)、ずっと繰り返す、ピン…を出力に設定、ピン…にHIGH / LOWを書き込む、… ms待つsetup()、loop()、pinMode()、digitalWrite()、delay()
2命令の順番とタイミング2個のLEDを点灯、信号機同じブロックを別のピンで順番に並べる、待ち時間を変える行の順番。2000 ms = 2秒
3変数と回数を決めた繰り返しLEDの警察車両風点滅グローバル変数(最初に宣言)、宣言:整数(int)delayTime = 60、「3回繰り返す」ブロックint delayTime = 60;、for (int i = 0; i < 3; i++)(3回繰り返す)
4入力と条件ボタンでLEDを点灯(押している間のみ)ピン…を入力に設定、ピン…を読み取る、「もし / そうでなければ」ブロック、=の比較pinMode(13, INPUT)、digitalRead()、if / else、==
5状態を覚える(トグル)ボタンでLEDの点灯・消灯を切り替え…に…を代入、≠の比較、ではない、50 ms待つledState = !ledState、!=、ボタンのチャタリング対策
6アナログセンサーとしきい値LDRで光の強さを測定、LDRで作る常夜灯「A0をアナログ読み取り」ブロック、シリアル開始と「シリアル出力」のブロック、<の比較analogRead(A0) 0〜1023、Serial.begin(9600)、Serial.println()、if (value < 50)
7配列とループ流れるLED、速度調整できる流れるLED「配列」ブロック(2 3 4 5 6 7)、「iを0から5まで1ずつ変えて数える」ループ、「ledPinsのi番目の要素」int ledPins[] = {2, 3, 4, 5, 6, 7};、for (int i = 0; i < 6; i++)(6回繰り返す)
8音と距離:ロボットの感覚ブザーの使い方、HC-SR04で距離を測定(シリアルモニタ表示)音を鳴らす・音を止めるブロック、マイクロ秒の待ち時間、パルス幅のブロック、「かつ」tone()、noTone()、delayMicroseconds(10)、pulseIn()、&&
任意PicoとMicroPythonPicoで外付けLEDを点灯(GP14)GP14を出力にする「ピンled:GP 14、出力」ブロック、「オンにする(on)」「オフにする(off)」ブロック、0.5秒待つPin(14, Pin.OUT)、led.on()、time.sleep(0.5)、while True:
「信号機」プロジェクトのブロック:セットアップでピン2、3、4を出力に設定し、「ずっと繰り返す」の中にHIGH/LOWを書き込むブロックと待つブロックがある
第2週:信号機。生徒はブロックから赤2000 ms、黄300 ms、青(緑のLED)2000 msの時間を読み取り、コードのdelay()の行と照らし合わせます。

計画を進めるときは、授業の最後に生徒が値を1つ変えることをルールにしてください。第1週では、LEDの点滅の100 msの待ち時間を1000 msにするとLEDがゆっくりになるのを見ることで、最初の授業から「プログラムを動かしているのは自分だ」という感覚が得られます。第3週では、LEDの警察車両風点滅の変数delayTimeを60から200に上げると、1つの数値が6つのブロックに一度に影響することがわかります。変数がなぜ存在するのかを説明するいちばんの近道です。第6週では、LDRで作る常夜灯のしきい値50を教室の明るさに合わせて調整することで、センサーの値が環境によって変わることを学べます。第7週では、速度調整できる流れるLEDのために各グループに10 kΩのポテンショメーターを配ってください。LEDの速さを手で変える場面は、たいていその週でいちばん盛り上がる瞬間になります。

教室にRaspberry Pi Picoが何台かあるなら、第8週のあとにもう1回授業を追加しましょう。Raspberry Pi Picoで外付けLEDを点灯プロジェクトは、第1週のLED点滅のMicroPython版です。ブロックは同じロジック(「オンにする(on)」ブロック、「0.5秒待つ」ブロック)をもう一度示しますが、コードは今度はPythonです。Pin(14, Pin.OUT)、led.on()、time.sleep(0.5)となります。コードはThonnyに貼り付けて実行します。同じプログラムを2つの言語で見ることは、ロジックは同じままで書き方だけが変わるのだと生徒に示すいちばんわかりやすい方法です。

24人のクラス向けの教材リスト

24人の生徒を3人ずつに分けると8グループになります。予備1つを含めて9キット用意すれば十分です。2人組にする場合は、数を12グループ分に増やしてください。はんだ付けは一切不要で、どの部品もブレッドボードに差し込むだけです。部品を1つずつ買うより、市販のスターターキットの中身をこのリストと比べてみてください。一般的なキットに何が入っているかはArduinoスターターキットのガイドで紹介しています。

品目1グループあたりクラス全体(8グループ+予備1)使う週
Arduino Unoまたは互換ボード19全週
USBケーブル(UnoはUSB A-B)19全週
ブレッドボード(400穴または830穴)19全週
オス-オスのジャンパーワイヤー20約200全週
5 mm LED(赤・黄・緑・青の詰め合わせ)8約801〜7
220 Ωの抵抗8約801〜7
10 kΩの抵抗2約254〜6
押しボタン(4ピン)2約204〜5
LDR(光センサー)1106
ブザー(音の高さを変えられるパッシブタイプ)1108
HC-SR04超音波距離センサー1108
10 kΩのポテンショメーター(任意)1107
Raspberry Pi Pico+micro USBケーブル(任意)1数台Picoの週
授業の前に抵抗を別々の箱に分け、それぞれのふたに値を書いておきましょう。LED用は220 Ω(赤・赤・茶)、ボタンとLDR用は10 kΩ(茶・黒・橙)です。2つが混ざると、LEDがごく暗くしか光らなかったり、ボタンがまったく反応しなかったりして、原因探しで授業の半分がつぶれてしまいます。カラーコードは抵抗のカラーコードで生徒と一緒に確認でき、LEDに合った抵抗値はLED抵抗計算ツールで求められます。

授業例:第5週、ボタンでLEDを切り替える

以下は40分の授業の流れで、同じ骨組みを毎週使い回せます。ウォームアップ、ブロックをみんなで読む、予想、回路、実際のコード、値を1つ変える、まとめの質問、という流れです。例には第5週のプロジェクトボタンでLEDの点灯・消灯を切り替えを使います。「プログラムは何かを覚えておける」という考え方は、ロボットプログラミングの大きな転換点のひとつだからです。

時間段階内容
0〜5分ウォームアップ質問:照明のスイッチを1回押すと明かりが点き、もう1回押すと消えます。スイッチはどうやって覚えているのでしょう?いくつかの答えを黒板に書きます。
5〜12分ブロックをみんなで読む「ブロックで表示」をオンにしてプロジェクトをプロジェクターに映します。ブロックを上から下へ声に出して読み、変数ledStateとlastButtonが何を保持しているかを話し合います。
12〜15分予想各グループが書き出します:ボタンを押し続けるとLEDはどうなる?「50 ms待つ」ブロックがなかったら何が変わる?
15〜25分回路を組むボタンをD13へ、さらに10 kΩを通してGNDへ(プルダウン)、LEDを220 Ωを通してD7へつなぎます。役割:組み立て係、確認係、読み上げ係。
25〜32分実際のコードを書き込むスイッチをオフにしてコードをArduino IDEにコピーし、ボードに書き込みます。予想を確かめます。
32〜37分値を1つ変えるdelay(50)をまず0に、次に300に変え、すばやく押したときにLEDがどう反応するかを見ます。希望するグループは、コードと回路の両方でLEDのピンを変えてもかまいません。
37〜40分まとめの質問紙に1問:ledState = !ledStateの行は何をしていて、どのブロックに当たるでしょう?
「ボタンでLEDの点灯・消灯を切り替え」プロジェクトのブロック:グローバル変数、セットアップ、ずっと繰り返す、入れ子の「もし」ブロック、「ではない」、50 ms待つ
授業例でプロジェクターに映すもの:外側の「もし」はボタンの状態が変わったかを、内側の「もし」は押されているかを調べ、「ledStateではない」ブロックがLEDの状態を反転させます。
C++ (Arduino IDE)
1int ledState = 0;     // LED durumu: 0 = kapalı, 1 = açık / LED state: 0 = off, 1 = on
2int lastButton = 0;   // Önceki buton okuması / Previous button reading
3
4void setup() {
5  pinMode(13, INPUT);   // Buton girişi (harici pull-down) / Button input (external pull-down)
6  pinMode(7, OUTPUT);   // LED çıkışı / LED output
7}
8
9void loop() {
10  int button = digitalRead(13);   // Butonu oku / Read the button
11  if (button != lastButton) {     // Buton durumu değişti / Button state changed
12    if (button == 1) {            // Yalnız basış anında (LOW -> HIGH) / Only at the press (LOW -> HIGH)
13      ledState = !ledState;       // Durumu tersine çevir / Flip the state
14      digitalWrite(7, ledState);
15    }
16    delay(50);                    // Sıçramayı atlamak için kısa bekleme / Short wait to skip the bounce
17    lastButton = button;          // Bu okumayı sakla / Store this reading
18  }
19}
20

ブロックとコードを並べると、対応関係はとてもはっきりしています。「グローバル変数(最初に宣言)」の中にある2つの「宣言:整数(int)」ブロックがコードの最初の2行で、「セットアップ(1回だけ実行)」はsetup()に、「ずっと繰り返す」はloop()になります。「buttonに(ピン13を読み取る)を代入」ブロックはint button = digitalRead(13)の行、「≠」の比較は!=、「ledStateではない」は!ledStateです。予想の段階では、ほとんどのグループが「ボタンを押し続けるとLEDが点滅する」と答えます。ところが試してみると、LEDは1回しか変わりません。外側の「もし」はボタンの状態が変わったときにしか実行されないからです。間違った予想が正される瞬間こそ、授業でいちばん学びの多い1分間です。delay(50)を0にすると、押しても2回反転して何も起きなかったように見えることがあると気づきます。これはボタンのチャタリングを説明する絶好のきっかけになります。ボタンがなぜ10 kΩを通してGNDにつながっているのか気になるグループには、Arduinoに押しボタンをつなぐ方法のガイドを見せてあげてください。

授業でBlueGraysを使う方法

  • プロジェクトを開く:生徒は自分のスマートフォンやタブレットでその週のプロジェクトを開きます。プロジェクト一覧の「ブロック」バッジがブロックプロジェクトの目印で、絞り込みでブロックプロジェクトだけを表示することもできます。どのプロジェクトにも部品リストと回路図が付いています。
  • 「ブロックで表示」:コード欄でこのスイッチをオンにすると、コードが同じプログラムのブロックに置き換わります。画像をタップすると全画面で開くので、プロジェクターでみんなで読むのに最適です。ブロックはアプリの言語で表示されます。
  • 「ブロック解説」:このタブではプログラムをステップごとにたどり、各ステップのブロックとその働きだけを表示します。時間が必要なグループにとっては、指導補助のような役割を果たします。
  • 実際のコードに切り替える:スイッチをオフにすると、同じプログラムのコードが表示されます。生徒はそれをArduino IDE(PicoならThonny)にコピーしてボードに書き込みます。
  • 「コードガイド」:digitalWrite、if/else、forなどのコマンドの例がここにまとまっていて、どの例もブロックでも見られます。生徒はコマンドを忘れたとき、先生に聞く前にここで確認する習慣が身につきます。
  • 「今日のクイズ」:A1〜C2のレベル別に1日5問出題され、週間ランキングとバッジもあります。授業と授業の間に、1日数分の復習として勧めてみてください。
最初に期待値をはっきり伝えておきましょう。BlueGraysのブロックは、プログラムを読んで理解するためのものです。生徒がアプリの中で自分でブロックを並べてプログラムを書くことはできず、ブロックがボードに直接書き込まれることもありません。ボードに入るのは常にプロジェクトの実際のコードです。生徒が一からブロックプログラムを作る活動を計画しているなら、ブロックをドラッグしてプログラムを書くパソコン用のツールを使ってください。その方法はmBlockとArduinoのガイドで紹介しています。2つの方法はお互いをうまく補い合います。

ハードウェアがない?シミュレーターで教える

キットがまだ届いていない場合やオンラインで授業をする場合は、Tinkercad CircuitsやWokwiのようなブラウザで動くシミュレーターがよい代わりになります。どちらにもArduino Uno、ブレッドボード、LED、抵抗、ボタンのほか、さまざまなセンサーがそろっています。画面上で回路を組み、プロジェクトの実際のコードを貼り付けて動かします。流れは同じで、生徒はBlueGraysでブロックを読み、コードをシミュレーターに貼り付け、値を変えて結果を見ます。Tinkercadには独自のブロックエディターもあるので、最初の数週間をすべてそこで進める先生もいます。それでも、本物のLEDが点くのを見たり、ブレッドボードにワイヤーを差したりする体験はやる気を大きく高めます。シミュレーターはハードウェアの代わりではなく、ハードウェアの前段階として使うほうがうまくいきます。準備と最初の回路については、TinkercadでArduinoをシミュレーションとWokwiシミュレーションのガイドを参照してください。

評価:ブロックプログラミング授業のルーブリック

ロボットの授業では、結果と同じくらい過程が大切です。LEDを点けたグループと、なぜ点かないのかを突き止めたグループは、同じことを学んでいる可能性が十分にあります。下のルーブリックは、1回の授業で1つの観点に絞って使うと楽になります。8週間が終わるまでに、6つの観点それぞれについて全生徒を少なくとも1回ずつ観察できれば十分です。まとめの質問の答えも表に反映させます。

観点1 – 初期段階2 – 発展段階3 – 定着段階
回路を組む手助けがあれば組めるが、配線ミスが多い回路図を見て組み、1〜2個のミスを自分で見つける回路図をほとんど見ずに組み、クラスメイトのミスにも気づく
ブロックを読むブロック名は読めるが、順番を説明できないプログラムが全体として何をするかを説明できる各ブロックと、なぜその順番が大切なのかを説明できる
予想と検証予想も検証もしない予想を立てて結果を記録する予想が外れたときに理由を見つける
ブロックとコードの対応ブロックをコードの行と結びつけられないピン、出力、待ち時間のブロックをコードの中で見つけられるif、for、変数の行も対応づけられる
値を変える値を変えるが、その影響を説明できない値を変えて、その影響を説明できる変更を計画し、コンパイラのメッセージからエラーを見つける
チームワーク自分の役割をよく放り出す自分の役割を果たす役割を交代し、ほかのグループも手伝う

進みの速いグループと遅いグループへの工夫

  • 速いグループ、追加課題:信号機のコードに4つ目のフェーズ(たとえば赤と黄を同時に点灯。日本の信号機にはない表示です)を加えたり、実際の交差点に合わせてタイミングを計算し直したりします。Arduino IDEで自分でコードを変更し、ブロックは参考として使います。
  • 速いグループ、組み合わせ:第8週に、HC-SR04で距離を測定(シリアルモニタ表示)とブザーの使い方を1つのプログラムにまとめ、距離が20 cmを下回るとブザーが鳴る簡単な駐車センサーを作ってみましょう。これは、ブロックを読む段階から自分のコードを書く段階への最初の本格的な一歩です。
  • 速いグループ、プラットフォームの切り替え:PicoがあるグループはPicoで外付けLEDを点灯プロジェクトを開き、MicroPython版を第1週のC++のコードと比べます。
  • 遅いグループ、組み立て済みの回路:あらかじめ組んだ回路を配るか、回路図を大きく印刷して机に置きます。これらのグループは、ブロックを読むことと予想することに時間を使います。
  • 遅いグループ、ステップごとに:「ブロック解説」タブでプログラムをたどらせ、各ステップの最後に何が起きるかを1文で言ってもらいます。その日は値を1つ変えられれば、目標として十分です。
  • 組み合わせの工夫:どのグループにも少なくとも1人「読み上げ係」がいるようにします。配線は速いが読むのが遅い生徒と、その逆の生徒を組ませると、2人とも伸びます。

ブロックからテキストへ:いつ、どう移行するか

移行する週は決まっていません。適切なタイミングは、生徒がブロックを見て、実行する前にプログラムが何をするかを言えるようになったときです。この計画では、ほとんどのクラスが第4週か第5週にその段階に達します。とはいえ、コードとの出会いは初日から始まっています。毎回の授業で実際のコードをボードに書き込むので、生徒は第1週からsetup()、loop()、digitalWrite()の行を目にしているからです。移行は「ブロックを見て、コードを書き込む」から「コードを読み、必要ならブロックで確かめる」へと少しずつ進みます。次の手順を踏むと、この移行がスムーズになります。

  1. ブロックとコードを並べ、各ブロックに対応する行をみんなで探します(第1〜3週)。
  2. ブロックを隠してコードだけを読み、プログラムが何をするかを予想します。そのあと「ブロックで表示」で確かめます(第4〜5週)。
  3. コードの中だけで値を変えます。待ち時間、ピン番号、しきい値などです。コンパイルエラーが出たら、最初の行を読みます(第5〜6週)。
  4. 新しいコードを1行書きます。たとえば流れるLEDの配列にLEDを1つ追加し、ループの上限を6から7に上げます(第7週)。
  5. 2つのプロジェクトを組み合わせて、自分だけの小さなプログラムを作ります。行き詰まったら「コードガイド」の例とブロックを確認します(第8週以降)。

安全のためのヒント

この計画の回路はすべてUSBからの5 Vで動きます。追加の電池やACアダプターは不要なので、コンセントにつなぐものは使わないでください。回路を変えるときは、先にUSBケーブルを抜きます。5VピンをGNDに直接つなぐとショートします。ボードが熱くなり、パソコンがUSBポートを遮断することもあります。LEDは必ず220 Ωの抵抗を通してつなぎ、ピン同士を直接つないではいけません。部品が熱くなったり焦げたにおいがしたりしたら、すぐにUSBを抜いてください。部品のとがった足やジャンパーワイヤーの先端は、年少の子どもには注意が必要です。授業の終わりには、部品を数えながら箱に戻しましょう。

「ブロックからコードへ」シリーズのまとめ

これでシリーズは完結です。教室で始める前にもう一度ロジックを復習したい場合は、ブロックプログラミングとは?から読み直してください。計画にあるプロジェクトはすべて、BlueGraysアプリで回路図、部品リスト、コード付きで見られます。「ブロックで表示」で同じプログラムのブロック版に、「ブロック解説」でステップごとの解説に切り替えれば、プロジェクターを使って授業を楽に進められます。

よくある質問

ロボットプログラミングとは何ですか?

ロボットプログラミングとは、ボードがセンサーで周りの状況を感じ取り、判断し、LED、ブザー、モーターなどの部品で反応できるようにするプログラムを書くことです。学校では通常、Arduinoのようなボードとブロックプログラミングから始め、そのあとC++やMicroPythonのようなテキストベースの言語に進みます。

子どもは何歳からロボットプログラミングを始めればいいですか?

文字をすらすら読める9〜10歳以上の子どもなら、大人と一緒に始められます。この年齢では、ブロックプログラミングと、はんだ付けのいらないブレッドボードの回路が最適な出発点です。12歳ごろになると、ほとんどの生徒が実際のコードを読む準備ができています(日本では2020年度から小学校でプログラミング教育が必修化されています)。

ブロックプログラミングの授業計画はどう立てればいいですか?

各授業に新しい考え方を1つだけ設け、出力、タイミング、変数、入力、条件、センサー、ループの順に並べます。毎回同じ骨組みを保ちます。ウォームアップ、ブロックをみんなで読む、予想、回路、実際のコード、値を1つ変える、まとめの質問です。この記事の8週間の計画はこの構成に沿っています。

Arduinoの授業にはどんな教材が必要ですか?

1グループあたり、Arduino Unoまたは互換ボード、USBケーブル、ブレッドボード、ジャンパーワイヤー、LED、220 Ωと10 kΩの抵抗、ボタン、LDR、ブザー、HC-SR04距離センサーがあれば十分です。24人のクラスを3人ずつのグループに分けるなら、8キットと予備1キットを用意してください。

Arduinoがなくてもロボットプログラミングは教えられますか?

はい。Tinkercad CircuitsやWokwiのようなブラウザで動くシミュレーターなら、画面上で回路を組んでコードを動かせます。ただし本物のLEDを点けることは大きなやる気につながるので、シミュレーターはハードウェアの準備として使うのがいちばん効果的です。

生徒はいつブロックプログラミングからArduinoのコードに移ればいいですか?

生徒がブロックを見てプログラムが何をするかを言えるようになったら、そのときです。この計画では、ほとんどのクラスが第4週か第5週にその段階に達します。まずブロックとコードを並べて読み、次にコードの中だけで値を変え、最後に新しい行を書きます。

全プロジェクトを見る
LEDの点滅
#1初級

LEDの点滅

電子工作の第一歩は、1個のLEDを点けたり消したりすることです。Arduinoで短い間隔で点灯と消灯を繰り返すと、LEDが素早く点滅します。ボードが光を制御する仕組みを最もシンプルな形で確かめ、これから取り組むプロジェクトの基礎を身につけます。

4.6(188)
1127
信号機
#3初級

信号機

毎日道路で見かける信号機の小さな模型です。赤が2秒点灯し、黄が一瞬点灯した後、緑が2秒点灯します。その後、再び黄を経て赤に戻り、この動作を繰り返します。3個のLEDを順番に点けたり消したりしながら、タイミングの組み立て方を学びます。

4.8(131)
397
LEDの警察車両風点滅
#4初級

LEDの警察車両風点滅

警察車両の警光灯のように、赤いLEDが素早く3回点滅し、続いて青いLEDが3回点滅します。このパターンを途切れることなく繰り返します。Arduinoに2個のLEDと2個の抵抗をつなぐだけで、数分で組み立てられる、目を引く入門プロジェクトです。

4.7(103)
258
ボタンでLEDを点灯(押している間のみ)
#9初級

ボタンでLEDを点灯(押している間のみ)

呼び鈴のように、押している間は点灯し、離すと消灯します。Arduinoはボタンの状態を常に読み取り、押されている間はLEDを点灯させ、指を離した瞬間に消灯させます。このシンプルな回路で、ボードが外部からの操作を検知する仕組みを学べます。

4.8(113)
229
ボタンでLEDの点灯・消灯を切り替え
#10初級

ボタンでLEDの点灯・消灯を切り替え

部屋の照明スイッチのように、ボタンを1回押すと点灯し、もう1回押すと消灯します。Arduinoはボタンが押されるたびにLEDの状態を反転させます。ボタン内部の小さな接点の振動で誤動作しないよう、短い待ち時間も設けます。1つのボタンでオン・オフを切り替える、シンプルな仕組みです。

4.8(100)
167
LDRで作る常夜灯
#12初級

LDRで作る常夜灯

暗くなると自動で点灯し、朝になると消灯する小さな常夜灯です。光センサーが部屋の明るさを測定し、Arduinoが十分に暗くなったらLEDを点灯させ、明るくなったら消灯させます。街灯が夕方になると自動で点灯する仕組みも理解できます。

4.8(102)
205
流れるLED
#5中級

流れるLED

LEDが次々に点灯し、光が走るように進みます。Arduinoが6個のLEDを1個ずつ短く点灯して消灯させることで、光が端から端へと移動し、また最初に戻ります。この簡単なプロジェクトで、1つのパターンで複数の光を制御する方法を学びます。

4.6(85)
207
HC-SR04で距離を測定(シリアルモニタ表示)
#27初級

HC-SR04で距離を測定(シリアルモニタ表示)

HC-SR04センサーは、コウモリが暗闇で道を見つけるのと同じ仕組みで動作します。人には聞こえない音を出し、その反響を捉えて前方の物体までの距離を測ります。Arduinoは0.5秒ごとに距離をセンチメートル単位でコンピューターの画面に表示し、3〜100センチメートルの測定値を示します。駐車センサーや障害物を避けるロボットなどのプロジェクトの基礎になります。

4.6(46)
71