Arduinoのプロジェクトをさがす
初級から上級まで、回路図・コード・動画付きのプロジェクトを数百件収録しています。自分のレベルに合ったところから始められます。

Raspberry Pi Picoで2個のボタンから2個のLEDを個別に制御(GP12-13 + GP4-5)
2個のボタンと2個のLEDが、それぞれ独立して動作します!各ボタンが対応するLEDを制御し、BTN1を押すと赤色LED、BTN2を押すと緑色LEDが点灯します。両方を同時に押すと、2個とも点灯します(並列動作)。**複数のPinオブジェクトの管理**(複数の入出力を同時に扱う方法)、**三項演算子**(`1 if x else 0`というPythonの簡潔なif-else)、**独立したI/O制御**(並列動作の仕組み)、**GPIOの割り当て**(GP12/13をLED出力、GP4/5をボタン入力に分ける基本的な構成)を学びます。

Raspberry Pi Picoで信号機の4モードをボタンで切り替え(ステートマシン、GP11-13 + GP4)
1個のボタンで信号機の4つのモードを切り替えます!押すたびに、**通常サイクル**(赤→黄→緑の順に点灯)、**赤のみ**(停止)、**黄色点滅**(注意・夜間モード)、**消灯**(メンテナンス)へ切り替わります。**ステートマシン**(`mode`変数で実行する動作を決定)、**剰余演算によるモードの循環**(`(mode + 1) % 4`で0→1→2→3→0を繰り返す)、**処理を止めない時間管理**(`time.ticks_ms()` + `time.ticks_diff()`でLEDの各段階の時間を管理)を学びます。ただし、モード切り替え時には待ち時間があります。

Raspberry Pi Picoのボタンのチャタリング対策:IRQとソフトウェアポーリングの比較(GP5 + GP4)
ボタンを1回押しただけで、コードでは3~4回と数えられますか?原因は**チャタリング**です。金属接点がマイクロ秒単位で振動します!シリアルモニタで、2つのカウント方法を並べて比較します。**未処理のポーリング**は振動も検出して多く数え、**IRQとソフトウェアによるチャタリング対策**は正確に数えます。接点が振動する仕組み、ソフトウェアによる対策(`ticks_diff() > 50ms`)、**Pin.irq()**による割り込みの登録、**IRQ_FALLING**トリガー、ISRハンドラー、`global`とISRの安全な扱い方を学びます。IRQでLEDを切り替え、動作を目で確認できます。シリアルモニタには押すたびに両方のカウントが表示されます。

Raspberry Pi PicoのPWMでLEDをフェード(呼吸のような明滅、GP14)
LEDを単に点滅させるだけでなく、呼吸するように明滅させます!Raspberry Pi Picoの**PWM**(パルス幅変調)を使い、スリープ中のMacBookのランプのように、明るさをゆっくり上げてからゆっくり下げます。**machine.PWMクラス**、**duty_u16()**(0–65535の16ビットの明るさ)、**PWM周波数**(`freq(1000)`で1秒間に1000回オン・オフし、ちらつきを感じさせない)、**range()による段階的なループ**(増加と減少)、デジタルピンからの**アナログのような出力**を学びます。PWMはRGBの混色やモーターなどに使われる、組み込み開発の基本技術です。

Raspberry Pi PicoでRGB LEDの色を順に切り替える(3チャンネルPWM、GP11-13)
1つのLEDで何百万もの色を表現できます!RGB LEDには、実は**赤、緑、青**の3つのLEDが入っています。それぞれをPicoの個別の**PWM**チャンネルで制御すると、赤+緑=黄、緑+青=シアン、3色すべて=白のように色を混ぜられます。このプロジェクトでは、LEDの色を8色に順番に切り替えます。**複数のPWMチャンネル**、**関数の定義**(`def set_color(...)`)、**RGBの混色**(画面やスマート電球の仕組み)、**8ビットから16ビットへの変換**(`x257`で0–255を0–65535に変換)、LEDの**カソードコモンとアノードコモンの違い**を学びます。

Arduinoミニレーダー(サーボモーター+HC-SR04+OLEDディスプレイ)
距離センサーとサーボモーターで、映画のようなレーダーを作ります!**SG90サーボモーター**が**HC-SR04**を0度から180度まで動かして走査し、**0.96インチOLED**に回転する走査線と、検出した物体を示す点を描きます。範囲内に物体が入ると**パッシブブザー**が短く鳴り、物体が近づくほど音が高くなります。サーボモーターの制御、超音波による測定、三角関数を使った描画、`tone()`による音の出力を1つのプロジェクトで学べます。

Arduinoで傾けると流れるデジタル砂(MPU-6050+8x8 NeoPixelマトリクス)
回路を傾けた方向に流れるLEDの砂を作ります!**MPU-6050**加速度センサーが傾きを測り、**8x8 NeoPixelマトリクス**上の24個の粒が重力の方向に落ちて、本物の砂のように端に積もります。**テーマボタン**で砂、水、溶岩、虹の色に切り替えられます。ライブラリを使わないI2Cの読み取り、傾きからの重力方向の算出、砂の落下を再現するシンプルなアルゴリズムを1つのプロジェクトで学べます。

Arduinoお絵描きタブレット(ポテンショメーター2個+OLEDディスプレイ)
昔ながらのお絵描きタブレットをArduinoで再現します!左の**ポテンショメーター**でペンを横に、右のポテンショメーターで縦に動かすと、**0.96インチOLED**に途切れない線が描かれます。**ペン**ボタンでペンを上げ下げし、**消去**ボタンで消しゴムのアニメーションと**ブザー**音とともに画面を消去します。アナログ入力、揺らぎのフィルタリング、ディスプレイへの描画を楽しく学べる初級プロジェクトです。

Arduino超音波テルミン(HC-SR04+NeoPixelリング+ブザー)
触れずに空中で手を動かすだけで演奏できる楽器を作ります!手を**HC-SR04**に近づけるほど**パッシブブザー**の音が高くなり、**24個のLEDを備えたNeoPixelリング**が色と点灯する割合で音程を示します。ボタンで2つのモードを切り替えられます。**SCALE**モードでは距離に応じて五音音階の音に合わせ、**GLIDE**モードでは昔のSF映画のように音が滑らかに変化します。メロディーを生み出すのは、用意されたコードではなく手の動きです。

ESP32ロボットの目(OLEDディスプレイ+TTP223タッチセンサー)
感情を表現する卓上ロボットを作ります!**ESP32**が**0.96インチOLED**に2つの目を描き、自動で周りを見たり、まばたきしたりします。**TTP223タッチセンサー**に触れると喜び、長く触れると目がハートになり、何度も続けて触れると怒り、20秒間何もしないと眠ります。**パッシブブザー**がそれぞれの気分に合った音を鳴らします。状態マシン、図形によるアニメーション、他の処理を止めない音の出力を1つのプロジェクトで学べます。

ESP32ポモドーロタイマー(NeoPixelリング+ボタン+ブザー)
勉強中にスマートフォンを見ずに済む、光る卓上タイマーです!**24個のLEDを備えたNeoPixelリング**が、時計の文字盤のように残り時間を表示します。作業中は**赤**、短い休憩は**緑**、4回の作業ごとに取る長い休憩は**青**です。最後の5秒間はリングが点滅し、**パッシブブザー**がカチカチと鳴ります。各時間が終わると虹色の光で知らせます。1つの**ボタン**で開始、一時停止、リセットができ、`delay()`を一切使わずに**ESP32**で動作します。

Raspberry Pi PicoのLED綱引きゲーム(NeoPixelテープ+ボタン2個+ブザー)
2人でボタンを連打して対戦するゲームです!**Raspberry Pi Pico**が、30個のLEDを備えた**WS2812B NeoPixelテープ**を綱に変えます。左が赤のプレイヤー、右が青のプレイヤーです。ボタンを押すたびに自分の色がLED1個分進み、テープ全体を自分の色にするとそのラウンドの勝ちです。先に3ラウンド取ると試合に勝ちます。カウントダウン中に早く押すと押し戻され、**パッシブブザー**はプレイヤーごとに異なるクリック音を鳴らします。試合の最後は虹色の光で締めくくります。MicroPythonの`neopixel`、チャタリング対策、処理を止めない音の再生を1つのプロジェクトで学べます。
