.. note::

    こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ！Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

    **参加する理由は？**

    - **エキスパートサポート**：コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
    - **学び＆共有**：ヒントやチュートリアルを交換してスキルを向上させましょう。
    - **独占的なプレビュー**：新製品の発表や先行プレビューに早期アクセスしましょう。
    - **特別割引**：最新製品の独占割引をお楽しみください。
    - **祭りのプロモーションとギフト**：ギフトや祝日のプロモーションに参加しましょう。

    👉 私たちと一緒に探索し、創造する準備はできていますか？[|link_sf_facebook|]をクリックして今すぐ参加しましょう！

.. _3.1.3_py:

3.1.3 オーディオモジュール
==============================

はじめに
-----------------

このプロジェクトでは、オーディオパワーアンプモジュール、8オーム/2Wのスピーカー、そして3.5mmオーディオケーブルを使用してDIYステレオを作りましょう。

必要な部品
------------------------------

このプロジェクトには、以下の部品が必要です。

.. image:: ../img/audio2.png
  :width: 700
  :align: center

一式をまとめて購入するのが便利です。リンクはこちら：

.. list-table::
    :widths: 20 20 20
    :header-rows: 1

    *   - 名前
        - このキットのアイテム
        - リンク
    *   - Raphael Kit
        - 337
        - |link_Raphael_kit|

以下のリンクから各部品を個別に購入することも可能です。

.. list-table::
    :widths: 30 20
    :header-rows: 1

    *   - コンポーネントの紹介
        - 購入リンク
    *   - :ref:`cpn_gpio_board`
        - |link_gpio_board_buy|
    *   - :ref:`cpn_breadboard`
        - |link_breadboard_buy|
    *   - :ref:`cpn_audio_speaker`
        - \-

実験手順
------------------------------

**ステップ1:** 回路を組み立てます。

.. image:: ../img/4.1.4fritzing.png
    :width: 800
    :align: center

上記の図に従って回路を組み立てた後、オーディオケーブルをRaspberry Piの3.5mmオーディオジャックに接続します。

.. image:: ../img/audio4.png
    :width: 400
    :align: center

**ステップ2:** コードのフォルダに移動します。

.. raw:: html

   <run></run>

.. code-block::

    cd ~/raphael-kit/python/

**ステップ3:** 実行します。

.. raw:: html

   <run></run>

.. code-block::

    python3 3.1.3_AudioModule.py

コードが実行されたら、音楽を楽しめます。

.. note::

    スピーカーから音が出ない場合、Raspberry Piが誤って別のオーディオ出力（デフォルトはHDMI）を選択している可能性があります。その場合は、 :ref:`オーディオ出力の変更` でヘッドフォンに切り替える必要があります。

    スピーカーの音量が低すぎると感じる場合は、 :ref:`音量調整` で調整できます。

**コード**

.. note::
    以下のコードは **修正/リセット/コピー/実行/停止** が可能ですが、それ以前に、ソースコードのパス（例： ``raphael-kit/python`` ）に移動する必要があります。コードの修正後、そのまま実行して効果を確認できます。

.. raw:: html

    <run></run>

.. code-block:: python

    from pygame import mixer
    import os
    user = os.getlogin()
    user_home = os.path.expanduser(f'~{user}')

    mixer.init()
    
    def main():
        mixer.music.load(f'{user_home}/raphael-kit/music/my_music.mp3')
        mixer.music.set_volume(0.7)
        mixer.music.play()
        while True:
            pass# Don't do anything.
    
    def destroy():
        mixer.music.stop()
    
    if __name__ == '__main__':
        try:
            main()
        except KeyboardInterrupt:
            destroy()

**コード説明**

.. code-block:: python

    from pygame import mixer

    mixer.init()

このコードは ``pygame`` ライブラリ内の ``mixer`` メソッドをインポートし、メソッドを初期化します。

.. code-block:: python

    mixer.music.load(f'{user_home}/raphael-kit/music/my_music.mp3')
    mixer.music.set_volume(0.7)
    mixer.music.play()

このコードは ``~/raphael-kit/music`` ディレクトリにある ``my_music.mp3`` ファイルを読み込み、音量を0.7に設定します（範囲は0~1）。
``mixer.music.play()`` が呼び出されると、Raspberry Piはオーディオの再生を開始します。

.. note::

    Raspberry Piに他の音楽ファイルをアップロードすることも可能です。詳細なチュートリアルは、 :ref:`Filezilla Software` を参照してください。

.. code-block:: python

    mixer.music.stop()

``mixer.music.stop()`` を呼び出すと、オーディオの再生が停止します。
さらに、 ``mixer.music.pause()`` で一時停止、 ``mixer.music.unpause()`` で再開も可能です。

現象の画像
------------------------

.. image:: ../img/3.1.3audio.JPG
   :align: center
