注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebookへようこそ!Raspberry Pi、Arduino、ESP32を愛好する仲間たちと一緒に、これらの技術を深く探求しましょう。

参加する理由

  • 専門家のサポート: コミュニティやチームの助けを借りて、購入後の問題や技術的な課題を解決します。

  • 学びと共有: スキルを向上させるためのヒントやチュートリアルを交換します。

  • 独占プレビュー: 新製品の発表やプレビューに早期アクセスできます。

  • 特別割引: 最新の製品に対する独占割引を楽しめます。

  • フェスティブプロモーションとギブアウェイ: ギブアウェイやフェスティブプロモーションに参加できます。

👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今日参加しましょう!

2.1.3 傾きスイッチ

イントロダクション

これは金属球が内部にあるボール傾きスイッチです。小角度の傾きを検出するために使用されます。

コンポーネント

../_images/list_2.1.3_tilt_switch1.png

回路図

../_images/image3071.png ../_images/image3081.png

実験手順

ステップ1: 回路を構築します。

../_images/image1691.png

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

cd ~/davinci-kit-for-raspberry-pi/nodejs/

ステップ3: コードを実行します。

sudo node tilt_switch.js

傾きを垂直に置くと、緑色のLEDが点灯します。 傾けると赤色のLEDが点灯します。 再び垂直に置くと、再び緑色のLEDが点灯します。

コード

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);
});

コードの説明

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のオンとオフを制御します。

const tilt = new Gpio(17, {
    mode: Gpio.INPUT,
    pullUpDown: Gpio.PUD_DOWN,
    edge: Gpio.EITHER_EDGE
});

tiltオブジェクトを作成し、Gpio17ポートを制御します。これを入力モードに設定し、プルダウン抵抗(初期状態で低レベル)を設定します。 そして、割り込み関数を設定します。このモードはEITHER_EDGEであり、上昇エッジと下降エッジの両方が割り込み関数をトリガーします。

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ポートが低レベルのとき、端末には「垂直」と表示されます。

現象の写真

../_images/image1701.jpeg