.. note::
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
**参加する理由は?**
- **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
- **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。
- **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。
- **特別割引**:最新製品の独占割引をお楽しみください。
- **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう!
.. _1.1.1_js:
1.1.1 LEDの点滅
=========================
はじめに
-----------------
このプロジェクトでは、プログラミングによってLEDを点滅させる方法を学びます。
あなたの設定により、LEDが一連の面白い現象を生み出すことができます。さあ、始めましょう。
必要な部品
------------------------------
このプロジェクトには、以下の部品が必要です。
.. image:: img/blinking_led_list.png
:width: 800
: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_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_led`
- |link_led_buy|
回路図
---------------------
この実験では、LEDのアノード(LEDの長いピン)に220Ωの抵抗を接続し、抵抗を3.3 Vに、LEDのカソード(短いピン)をRaspberry PiのGPIO17に接続します。したがって、LEDを点灯させるには、GPIO17を低(0V)レベルにする必要があります。これはプログラムで実現できます。
.. image:: img/image48.png
:width: 800
:align: center
実験手順
-----------------------------
**ステップ1:** 回路を作成します。
.. image:: img/image49.png
:width: 800
:align: center
**ステップ2:** コードのフォルダに移動します。
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
.. note::
``cd`` を使用して、この実験のコードのパスにディレクトリを変更します。
**ステップ3:** コードを実行します
.. raw:: html
.. code-block::
sudo node blink.js
.. note::
ここでのsudoはsuperuser doを意味し、pythonはPythonでファイルを実行することを意味します。
コードを実行すると、LEDが点滅するのがわかります。
**ステップ4:** コードファイルblink.jsを編集したい場合は、 ``Ctrl + C`` を押してコードの実行を停止します。次に、blink.jsを開くための以下のコマンドを入力します:
.. raw:: html
.. code-block::
nano blink.js
.. note::
nanoはテキストエディタツールです。このコマンドは、このツールで
コードファイルblink.jsを開くために使用されます。
``Ctrl+X`` を押して終了します。コードを変更した場合、変更を保存するかどうかを尋ねるプロンプトが表示されます。 ``Y`` (保存する)または ``N`` (保存しない)を入力します。
次に ``Enter`` を押して終了します。再度nano blink.jsを入力して、変更後の効果を確認します。
**コード**
以下はプログラムコードです:
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17,{mode: Gpio.OUTPUT});
var led_state = 0;
function blink_led(){
led.digitalWrite(led_state);
led_state = !led_state;
}
setInterval(blink_led,300);
また、コードをjs特有のアロー関数として書くこともできます:
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17,{mode: Gpio.OUTPUT});
var led_state = 0;
setInterval(() => {
led.digitalWrite(led_state);
led_state = !led_state;
}, 300);
**コード説明**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
この方法でpigpioパッケージのGpioコンストラクタをインポートし、
そのコンストラクタを表す定数 ``Gpio`` を定義します。
さまざまなコンストラクタを使用すると、jsで電子機器を制御できます。
``pigpio`` は、高速GPIO、PWM、サーボ制御、状態変更通知、および割り込み処理を実装するために使用できます。
* `pigpio - github `_
.. Raspberry Pi Zero, 1, 2, 3, 4での高速GPIO, PWM, サーボ制御,
.. 状態変更通知および割り込み処理をJSで可能にするpigpio Cライブラリのラッパーです。
.. code-block:: js
const led = new Gpio(17,{mode: Gpio.OUTPUT});
``new`` キーワードは、クラスのインスタンス化されたオブジェクトを構築するために使用されます。
LEDをT字型拡張ボードのGPIO17に接続し、LedPinモードを出力に設定し、定数 ``led`` に割り当てます。
すなわち、GPIO17オブジェクト ``led`` を構築し、そのモードは出力モードです。
Raspberry PiのIOピンに番号を付ける方法は2つあります:
BOARD番号とBCM番号。私たちのプロジェクトでは、BCM番号を使用しています。
使用する各チャネルを入力または出力として設定する必要があります。
.. code-block:: js
function blink_led(){
led.digitalWrite(led_state);
led_state = !led_state;
}
setInterval(blink_led,300);
``setInterval()`` メソッドは、指定された期間(ミリ秒単位)で関数を呼び出したり、式を計算したりすることができます。
ここでは、300msの期間でLEDの動作状態を変更します。
* `setInerval `_
``gpio.digitalWrite(level)`` メソッドは、gpioレベルを1または0に設定します。
.. code-block:: js
var led_state = 0;
setInterval(() => {
led.digitalWrite(led_state);
led_state = !led_state;
}, 300);
コードをアロー関数として書き直して、コードを短くします。
* `Arrow Functions `_
現象の画像
-------------------------
.. image:: img/image54.jpeg
:width: 800
:align: center