.. note::
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebookへようこそ!Raspberry Pi、Arduino、ESP32を愛好する仲間たちと一緒に、これらの技術を深く探求しましょう。
**参加する理由**
- **専門家のサポート**: コミュニティやチームの助けを借りて、購入後の問題や技術的な課題を解決します。
- **学びと共有**: スキルを向上させるためのヒントやチュートリアルを交換します。
- **独占プレビュー**: 新製品の発表やプレビューに早期アクセスできます。
- **特別割引**: 最新の製品に対する独占割引を楽しめます。
- **フェスティブプロモーションとギブアウェイ**: ギブアウェイやフェスティブプロモーションに参加できます。
👉 私たちと一緒に探索と創造を始める準備はできましたか?[|link_sf_facebook|]をクリックして、今日参加しましょう!
.. _2.1.4_potentiometer_nodejs:
2.1.4 ポテンショメータ
=========================
.. note::
.. image:: ../img/mcp3008_and_adc0834.jpg
:width: 25%
:align: left
お使いのキットの種類によって、 **ADC0834** か **MCP3008** のどちらかをご確認のうえ、それぞれの説明に進んでください。
イントロダクション
---------------------
ADC機能を使用してアナログ信号をデジタル信号に変換することができます。この実験では、ADC0834を使用してADC機能を実現します。ここでは、ポテンショメータを使用してこのプロセスを実装します。ポテンショメータは物理量である電圧を変化させ、ADC機能によってそれが変換されます。
コンポーネント
-----------------
.. image:: ../img/list_2.1.4_potentiometer.png
回路図
-----------------
.. image:: ../img/image311.png
.. image:: ../img/image312.png
実験手順
-----------------------
**ステップ1:** 回路を構築します。
.. image:: ../img/image180.png
.. note::
チップを配置する際は、写真に描かれている対応する位置を参照してください。チップの溝が左側にあるように配置することに注意してください。
**ステップ2:** コードのフォルダに移動します。
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
**ステップ3:** コードを実行します。
.. raw:: html
.. code-block::
sudo node potentiometer.js
コードが実行された後、ポテンショメータのノブを回すと、LEDの明るさがそれに応じて変化します。
**コード**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const ADC0834 = require('./adc0834.js').ADC0834;
const adc = new ADC0834(17, 18, 27);
const led = new Gpio(22, {mode: Gpio.OUTPUT});
setInterval(() => {
adc.read(0).then((value) => {
console.log(`現在のアナログ値: ${value}\n`);
led.pwmWrite(value);
}, (error)=>{
console.log("エラー: " + error);
});
}, 100);
**コードの説明**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
``pigpio`` モジュールをインポートします。
.. code-block:: js
const ADC0834 = require('./adc0834.js').ADC0834;
``adc0834`` モジュールを使用するために ``ADC0834`` コンストラクタをインポートします。
.. code-block:: js
const adc = new ADC0834(17, 18, 27);
ADC0834オブジェクトをインスタンス化し、3つのパラメータはその3つのピンです。
これはプロミスオブジェクトです。以下のリンクからコンセプトを理解する必要があります。
* `Promise `_
.. code-block:: js
setInterval(() => {
adc.read(0).then((value) => {
console.log(`現在のアナログ値: ${value}\n`);
led.pwmWrite(value);
}, (error)=>{
console.log("エラー: " + error);
});
}, 100);
100msごとにADC0834チャネル0(チャネル0はポテンショメータに接続されています)の値を読み取り、その値を ``value`` に格納します。
``value`` を印刷し、それを使用してLEDの明るさを制御します。これで、ポテンショメータの値に応じてLEDの明るさが変化する様子が確認できます。
現象の写真
------------------
.. image:: ../img/image181.jpeg