Node.js Raspberry Pi GPIO - ضوء LED وامض


استخدام GPIO للإخراج

في هذا الفصل سوف نستخدم Raspberry Pi و GPIO الخاص به لعمل وميض LED.

نستخدم Node.js مع الوحدة النمطية onoff للتحكم في GPIO.

لتشغيل ضوء LED ، نستخدم دبوس GPIO كـ "إخراج" ، وننشئ نصًا لتشغيله وإيقافه (يومض).


ماذا نحتاج؟

في هذا الفصل ، سننشئ مثالًا بسيطًا حيث نتحكم في مصباح LED.

لهذا تحتاج:

انقر فوق الارتباطات الموجودة في القائمة أعلاه للحصول على أوصاف للمكونات المختلفة.

ملاحظة: يمكن أن يكون المقاوم الذي تحتاجه مختلفًا عما نستخدمه اعتمادًا على نوع LED الذي تستخدمه. معظم المصابيح الصغيرة تحتاج فقط إلى مقاومة صغيرة ، حوالي 200-500 أوم. ليس من المهم بشكل عام القيمة الدقيقة التي تستخدمها ، ولكن كلما كانت قيمة المقاوم أصغر ، كلما كان مؤشر LED أكثر إشراقًا.


بناء الحلبة

حان الوقت الآن لبناء الدائرة على اللوح الخاص بنا.

إذا كنت جديدًا في مجال الإلكترونيات ، فننصحك بإيقاف تشغيل جهاز Raspberry Pi. واستخدم حصيرة مقاومة للكهرباء الساكنة أو شريط تأريض لتجنب إتلافها.

قم بإغلاق Raspberry Pi بشكل صحيح باستخدام الأمر:

pi@w3demopi:~ $ sudo shutdown -h now

بعد أن تتوقف مصابيح LED عن الوميض على Raspberry Pi ، ثم اسحب قابس الطاقة من Raspberry Pi (أو قم بإيقاف تشغيل قطاع الطاقة المتصل به).

قد يؤدي مجرد سحب القابس دون إيقاف التشغيل بشكل صحيح إلى تلف بطاقة الذاكرة.

Raspberry Pi 3 مع اللوح.  دارة LED بسيطة

انظر إلى الرسم التوضيحي أعلاه للدائرة.

  1. على Raspberry Pi ، قم بتوصيل الساق الأنثوية من سلك العبور الأول بالأرض . يمكنك استخدام أي دبوس GND . في هذا المثال ، استخدمنا الدبوس المادي 9 ( GND ، الصف 5 ، العمود الأيسر)
  2. في Breadboard ، قم بتوصيل الرجل من سلك العبور الأول بعمود الناقل الأرضي على اليمين. هذا العمود بأكمله من لوح التجارب متصل ، لذلك لا يهم أي صف. في هذا المثال قمنا بإرفاقه بالصف 1
  3. On the Raspberry Pi, connect the female leg of the second jumper cable to a GPIO pin. In this example we used Physical Pin 7 (GPIO 4, row 4, left column)
  4. On the Breadboard, connect the male leg of the second jumper wire to the Tie-Point row of your choice. In this example we connected it to row 5, column A
  5. On the Breadboard, connect one leg of the resistor to the Ground Bus column on the right side. That entire column of your breadboard is connected, so it doesn't matter which row. In this example we have attached it to row 5
  6. On the Breadboard, connect the other leg of the resistor to the right side Tie-Point row of your choice. In this example we have used row 5, column J
  7. On the Breadboard, connect the cathode leg (the shortest leg) of the LED to the same Tie-Point row that you connected the resistor from GND to. In this example we used row 5, column F
  8. On the Breadboard, connect the anode leg (the longest leg) of the LED to the same Tie-Point row that you connected the jumper from the GPIO pin to. In this example we used row 5, column E

Your circuit should now be complete, and your connections should look pretty similar to the illustration above.

Now it is time to boot up the Raspberry Pi, and write the Node.js script to interact with it.



Raspberry Pi and Node.js Blinking LED Script

Now that we have everything set up, we can write a script to turn the LED on and off.

Start by making a directory where we can keep our Node.js scripts:

pi@w3demopi:~ $ mkdir nodetest

Go to our new directory:

pi@w3demopi:~ $ cd nodetest

Now we will create a new file called "blink.js" using the Nano Editor:

pi@w3demopi:~ $ nano blink.js

The file is now open and can be edited with the built in Nano Editor.

Write, or paste the following code:

blink.js

var Gpio = require('onoff').Gpio; //include onoff to interact with the GPIO
var LED = new Gpio(4, 'out'); //use GPIO pin 4, and specify that it is output
var blinkInterval = setInterval(blinkLED, 250); //run the blinkLED function every 250ms

function blinkLED() { //function to start blinking
  if (LED.readSync() === 0) { //check the pin state, if the state is 0 (or off)
    LED.writeSync(1); //set pin state to 1 (turn LED on)
  } else {
    LED.writeSync(0); //set pin state to 0 (turn LED off)
  }
}

function endBlink() { //function to stop blinking
  clearInterval(blinkInterval); // Stop blink intervals
  LED.writeSync(0); // Turn LED off
  LED.unexport(); // Unexport GPIO to free resources
}

setTimeout(endBlink, 5000); //stop blinking after 5 seconds

Press "Ctrl+x" to save the code. Confirm with "y", and confirm the name with "Enter".

Run the code:

pi@w3demopi:~ $ node blink.js

Now the LED should blink for 5 seconds (10 times) before turning off again!