.. note:: こんにちは!SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebookコミュニティで、Raspberry Pi、Arduino、ESP32について深く学び、愛好者と交流しましょう。 **なぜ参加するべきか?** - **専門的なサポート**: 購入後の問題や技術的な課題を、コミュニティやサポートチームと一緒に解決できます。 - **学びと共有**: ヒントやチュートリアルを交換し、スキルを向上させましょう。 - **最新情報の先行公開**: 新製品の発表やプレビューにいち早くアクセスできます。 - **特別割引**: 最新製品を特別価格で購入できます。 - **イベントやプレゼント企画**: さまざまなキャンペーンやプレゼント企画に参加できます。 👉 さあ、一緒に学び、創造しましょう![|link_sf_facebook|] をクリックして、今すぐ参加! .. _py_ac_buz: 3.1 ブザーを鳴らそう! ========================== このレッスンでは、**Raspberry Pi Pico 2** を使用して **ブザー** を鳴らす方法を学びます。ブザーはLEDと同様に簡単に制御できるデジタル出力デバイスです。このプロジェクトでは、信号を送るだけで音を出せる **アクティブブザー** を使用します。 **アクティブブザーとは?** アクティブブザーには内部発振器が搭載されており、単純に信号を送るだけで音を鳴らすことができます。 **パッシブブザー** のように外部信号で周波数を制御する必要はありません。 |img_buzzer| **必要なもの** このプロジェクトでは、以下のコンポーネントを使用します。 すべての部品が揃った便利なキットはこちら: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - 名称 - キット内容 - リンク * - Newton Lab Kit - 450点以上 - |link_newton_lab_kit| 個別に購入する場合は、以下のリンクを利用してください。 .. list-table:: :widths: 5 20 5 20 :header-rows: 1 * - SN - コンポーネント - 数量 - リンク * - 1 - :ref:`cpn_pico_2` - 1 - |link_pico2_buy| * - 2 - Micro USBケーブル - 1 - * - 3 - :ref:`cpn_breadboard` - 1 - |link_breadboard_buy| * - 4 - :ref:`cpn_wire` - 数本 - |link_wires_buy| * - 5 - :ref:`cpn_transistor` - 1 (S8050) - |link_transistor_buy| * - 6 - :ref:`cpn_resistor` - 1 (1KΩ) - |link_resistor_buy| * - 7 - アクティブ :ref:`cpn_buzzer` - 1 - **回路図** |sch_buzzer| この回路では、ブザーは **S8050 NPNトランジスタ** を介して駆動されます。トランジスタを使用することで、Picoに直接接続した場合よりも大きな音を出すことができます。 動作の流れ: * **GP15** がHIGH信号を出力すると、トランジスタがONになります。 * トランジスタがONになると、ブザーに電流が流れ、音が鳴ります。 また、 **1kΩの抵抗** を使用してトランジスタを保護します。 **配線図** 必ず **アクティブブザー** を使用してください。パッシブブザーと区別するには、裏面を確認し、密閉されたケースのものがアクティブブザーです(PCBが露出しているものはパッシブブザー)。 |img_buzzer| |wiring_beep| **コードの記述** MicroPythonを使用して、ブザーを制御する簡単なプログラムを書きます。 .. note:: * ``3.1_beep.py`` を ``newton-lab-kit/micropython`` から開くか、Thonnyにコードをコピーし、「Run」をクリックするか、F5キーを押してください。 * インタプリタが **MicroPython (Raspberry Pi Pico) COMxx** に設定されていることを確認してください。 .. code-block:: python import machine import utime # ブザー用のピン(GP15)を初期化 buzzer = machine.Pin(15, machine.Pin.OUT) while True: # ブザーを4回鳴らす for i in range(4): buzzer.value(1) # ブザーON utime.sleep(0.3) # 0.3秒待機 buzzer.value(0) # ブザーOFF utime.sleep(0.3) # 0.3秒待機 utime.sleep(1) # 次のサイクルまで1秒待機 このコードを実行すると、以下のような動作になります。 * ブザーは0.3秒間隔で4回連続で鳴ります。 * 4回鳴った後、1秒の長めの休止があり、その後サイクルが繰り返されます。 **コードの解説** #. ブザーの初期化: * ``buzzer = machine.Pin(15, machine.Pin.OUT)``: GP15を出力ピンとして設定し、ブザーを制御。 #. メインループ: * ``while True`` ループにより、コードが無限に実行されるようになります。 * ループ内では、ブザーが4回オン( ``buzzer.value(1)`` )とオフ( ``buzzer.value(0)`` )を繰り返し、それぞれ0.3秒の間隔で動作します。 * 4回のビープ音の後、1秒間の休止が入り、その後サイクルが繰り返されます。 **さらなる実験** * **ビープ音の長さを変更**: ``utime.sleep(0.3)`` の値を変更し、ビープ音の長さを調整。 * **ビープ回数を変更**: ループの回数を変更し、異なる回数でブザーを鳴らす。 * **ボタン制御を追加**: GP14にボタンを接続し、ボタンを押したときにのみブザーが鳴るようにコードを変更。 **まとめ** このレッスンでは、トランジスタとRaspberry Pi Pico 2を使用してアクティブブザーを制御する方法を学びました。デジタル出力デバイスを使用して、プロジェクトで音を出す方法を理解しました。同じ原理を応用すれば、LEDやモーターなど、他のデバイスの制御にも活用できます。