.. note:: こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebookへようこそ!Raspberry Pi、Arduino、ESP32を愛好する仲間たちと一緒に、これらの技術を深く探求しましょう。 **参加する理由** - **専門家のサポート**: コミュニティやチームの助けを借りて、購入後の問題や技術的な課題を解決します。 - **学びと共有**: スキルを向上させるためのヒントやチュートリアルを交換します。 - **独占プレビュー**: 新製品の発表やプレビューに早期アクセスできます。 - **特別割引**: 最新の製品に対する独占割引を楽しめます。 - **フェスティブプロモーションとギブアウェイ**: ギブアウェイやフェスティブプロモーションに参加できます。 👉 私たちと一緒に探索と創造を始める準備はできましたか?[|link_sf_facebook|]をクリックして、今日参加しましょう! 2.1.3 傾きスイッチ ==================== イントロダクション ------------------ これは金属球が内部にあるボール傾きスイッチです。小角度の傾きを検出するために使用されます。 コンポーネント -------------- .. image:: ../img/list_2.1.3_tilt_switch.png 回路図 ----------------- .. image:: ../img/image307.png .. image:: ../img/image308.png 実験手順 ----------------------- **ステップ1:** 回路を構築します。 .. image:: ../img/image169.png **ステップ2:** コードのフォルダに移動します。 .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/nodejs/ **ステップ3:** コードを実行します。 .. raw:: html .. code-block:: sudo node tilt_switch.js 傾きを垂直に置くと、緑色のLEDが点灯します。 傾けると赤色のLEDが点灯します。 再び垂直に置くと、再び緑色のLEDが点灯します。 **コード** .. raw:: html .. code-block:: js const Gpio = require('pigpio').Gpio; const led1 = new Gpio(22, { mode: Gpio.OUTPUT }); const led2 = new Gpio(27, { mode: Gpio.OUTPUT }); const tilt = new Gpio(17, { mode: Gpio.INPUT, pullUpDown: Gpio.PUD_DOWN, edge: Gpio.EITHER_EDGE }); tilt.on('interrupt', (level) => { if (level) { console.log("Horizontally"); } else { console.log("Vertically"); } led1.digitalWrite(level); led2.digitalWrite(!level); }); **コードの説明** .. code-block:: js const Gpio = require('pigpio').Gpio; const led1 = new Gpio(22, { mode: Gpio.OUTPUT }); const led2 = new Gpio(27, { mode: Gpio.OUTPUT }); const tilt = new Gpio(17, { mode: Gpio.INPUT, pullUpDown: Gpio.PUD_DOWN, edge: Gpio.EITHER_EDGE }); pigpioモジュールをインポートし、3つのオブジェクトled1、led2、tiltを作成します。 tiltのIOポートのレベルを読み取ることで、led1とled2のオンとオフを制御します。 .. code-block:: js const tilt = new Gpio(17, { mode: Gpio.INPUT, pullUpDown: Gpio.PUD_DOWN, edge: Gpio.EITHER_EDGE }); tiltオブジェクトを作成し、Gpio17ポートを制御します。これを入力モードに設定し、プルダウン抵抗(初期状態で低レベル)を設定します。 そして、割り込み関数を設定します。このモードはEITHER_EDGEであり、上昇エッジと下降エッジの両方が割り込み関数をトリガーします。 .. code-block:: js tilt.on('interrupt', (level) => { if (level) { console.log("Horizontally"); } else { console.log("Vertically"); } led1.digitalWrite(level); led2.digitalWrite(!level); }); 割り込みがトリガーされると、led1には同じレベルを書き込み、led2には逆のレベルを書き込みます。 tiltのIOポートが高レベルのとき、端末には「水平」と表示されます。 tiltのIOポートが低レベルのとき、端末には「垂直」と表示されます。 現象の写真 ------------------ .. image:: ../img/image170.jpeg