.. note::
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebookへようこそ!ラズベリーパイ、Arduino、ESP32について、他の愛好者と一緒に深く探求しましょう。
**参加する理由**
- **専門家のサポート**:購入後の問題や技術的な課題を、コミュニティとチームの助けを借りて解決します。
- **学習と共有**:スキルを向上させるためのヒントやチュートリアルを交換します。
- **独占プレビュー**:新製品の発表やプレビューに早期アクセスできます。
- **特別割引**:最新製品に対する独占割引を楽しめます。
- **フェスティブプロモーションとギブアウェイ**:ギブアウェイやフェスティブプロモーションに参加できます。
👉 私たちと一緒に探索と創造を始める準備はできていますか?[|link_sf_facebook|]をクリックして、今日参加しましょう!
1.1.1 点滅するLED
====================
イントロダクション
-------------------
このプロジェクトでは、プログラミングによって点滅するLEDを作成する方法を学びます。設定を通じて、LEDが一連の興味深い現象を生み出すことができます。さあ、始めましょう。
コンポーネント
----------------
.. image:: img/blinking_led_list.png
:width: 800
:align: center
回路図
---------
この実験では、220Ωの抵抗をLEDのアノード(長いピン)に接続し、その後抵抗を3.3Vに接続し、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 ~/davinci-kit-for-raspberry-pi/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 `_
.. 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の動作状態を変更します。
* `setInterval `_
``gpio.digitalWrite(level)`` メソッドは、gpioレベルを1または0に設定します。
.. code-block:: js
var led_state = 0;
setInterval(() => {
led.digitalWrite(led_state);
led_state = !led_state;
}, 300);
コードをアロー関数として書き換えて、コードを短くします。
* `アロー関数 `_
現象の写真
------------
.. image:: img/image54.jpeg
:width: 800
:align: center