.. note::
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie tiefer in Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten ein.
**Warum beitreten?**
- **Expertenunterstützung**: Lösen Sie nach dem Kauf auftretende Probleme und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.
- **Lernen & Teilen**: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.
- **Exklusive Vorschauen**: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und Vorschauen.
- **Spezielle Rabatte**: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
- **Festliche Aktionen und Gewinnspiele**: Nehmen Sie an Gewinnspielen und festlichen Aktionen teil.
👉 Bereit, mit uns zu entdecken und zu kreieren? Klicken Sie auf [|link_sf_facebook|] und treten Sie noch heute bei!
2.2.4 PIR
=========
Einführung
------------
In diesem Projekt werden wir ein Gerät mit einem passiven Infrarot-Bewegungssensor (PIR) bauen. Wenn sich jemand der LED nähert, wird sie automatisch eingeschaltet. Andernfalls wird das Licht ausgeschaltet. Dieser Infrarot-Bewegungssensor kann die von Menschen und Tieren abgegebene Infrarotstrahlung erkennen.
Komponenten
--------------------
.. image:: ../img/list_2.2.4_pir2.png
Schaltplan
-----------------
.. image:: ../img/image327.png
Experimentelle Vorgehensweise
-------------------------------------
**Schritt 1:** Bauen Sie die Schaltung auf.
.. image:: ../img/image214.png
**Schritt 2:** Gehen Sie zum Ordner des Codes.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
**Schritt 3:** Führen Sie den Code aus.
.. raw:: html
.. code-block::
sudo node pir.js
Nachdem der Code ausgeführt wurde, erkennt der PIR die Umgebung und lässt die RGB-LED gelb leuchten, wenn er jemanden in der Nähe erkennt. Es gibt zwei Potentiometer auf dem PIR-Modul: eines zur Einstellung der Empfindlichkeit und das andere zur Einstellung der Erkennungsentfernung. Um das PIR-Modul optimal zu nutzen, müssen Sie diese beiden Potentiometer anpassen.
**Code**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const pirPin = new Gpio(17, {
mode: Gpio.INPUT,
pullUpDown: Gpio.PUD_DOWN,
edge: Gpio.EITHER_EDGE
}) // der PIR ist mit Pin 17 verbunden
const redPin = new Gpio(18, { mode: Gpio.OUTPUT, })
const greenPin = new Gpio(27, { mode: Gpio.OUTPUT, })
const bluePin = new Gpio(22, { mode: Gpio.OUTPUT, })
//'Rot':18, 'Grün':27, 'Blau':22
var p_R, p_G, p_B
// Setze alle LEDs als PWM-Kanäle und die Frequenz auf 2 kHz
p_R = redPin.pwmFrequency(2000)
p_G = greenPin.pwmFrequency(2000)
p_B = bluePin.pwmFrequency(2000)
// Initialisiere alle LEDs mit dem Wert 0
p_R.pwmWrite(0)
p_G.pwmWrite(0)
p_B.pwmWrite(0)
// Definiere eine MAP-Funktion zum Zuordnen von Werten, z.B. von 0~255 auf 0~100
function MAP(x, in_min, in_max, out_min, out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
}
// Definiere eine Funktion zur Farbauswahl
function setColor(color) {
// konfiguriert die Helligkeit der drei LEDs mit dem übergebenen Farbwert.
// Unterteile die Farben aus der Variable 'color'
R_val = (color & 0xFF0000) >> 16
G_val = (color & 0x00FF00) >> 8
B_val = (color & 0x0000FF) >> 0
// Ordne die Farbwerte von 0~255 auf 0~100 zu
R_val = MAP(R_val, 0, 255, 0, 100)
G_val = MAP(G_val, 0, 255, 0, 100)
B_val = MAP(B_val, 0, 255, 0, 100)
// Weise den zugeordneten Tastverhältniswert dem entsprechenden PWM-Kanal zu, um die Helligkeit zu ändern.
p_R.pwmWrite(R_val)
p_G.pwmWrite(G_val)
p_B.pwmWrite(B_val)
//print ("color_msg: R_val = %s, G_val = %s, B_val = %s"%(R_val, G_val, B_val))
}
pirPin.on('interrupt', (level) => {
if (level) {
setColor(0xFFFF00)
}else{
setColor(0x0000FF)
}
});
process.on('SIGINT', function () {
p_R.pwmWrite(0)
p_G.pwmWrite(0)
p_B.pwmWrite(0)
process.exit();
})
**Code Erklärung**
Der Code für dieses Beispiel ist eine Kombination aus :ref:`2.1.1_button_nodejs` und :ref:`1.1.2_rgb_nodejs`, daher sind keine weiteren Details erforderlich.
Phänomenbild
------------------
.. image:: ../img/image215.jpeg