Учебник по Node.js

ГЛАВНАЯ СТРАНИЦА Node.js Введение в Node.js Node.js Начало работы Модули Node.js HTTP-модуль Node.js Файловая система Node.js URL-модуль Node.js Node.js NPM События Node.js Загрузить файлы Node.js Электронная почта Node.js

Node.js MySQL

Начать работу с MySQL MySQL Создать базу данных MySQL Создать таблицу MySQL вставить в MySQL выбрать из MySQL Где Порядок MySQL MySQL Удалить Таблица удаления MySQL Обновление MySQL Лимит MySQL MySQL присоединиться

Node.js MongoDB

Начать работу с MongoDB MongoDB Создать базу данных MongoDB Создать коллекцию Вставка MongoDB MongoDB Найти Запрос MongoDB Сортировка MongoDB MongoDB Удалить Коллекция MongoDB Drop Обновление MongoDB Лимит MongoDB Присоединиться к MongoDB

Малиновый Пи

Начать работу с RasPi Введение в RasPi GPIO Мигающий светодиод RasPi Светодиод RasPi и кнопка Проточные светодиоды RasPi Веб-сокет RasPi Веб-сокет со светодиодной подсветкой RasPi RGB Компоненты RasPi

Справочник по Node.js

Встроенные модули

Node.js Raspberry Pi GPIO — плавные светодиоды


Использование массива с выходом для создания плавных светодиодов

В этой главе мы будем использовать несколько выводов GPIO для создания эффекта «перетекания», последовательно включая и выключая их.


Что нам нужно?

Для этого вам нужно:

Примечание . Резистор, который вам нужен, может отличаться от того, который мы используем, в зависимости от типа используемых вами светодиодов. Большинству маленьких светодиодов нужен только небольшой резистор, около 200-500 Ом. Как правило, не критично, какой именно номинал вы используете, но чем меньше номинал резистора, тем ярче будет светить светодиод.

Щелкните ссылки в списке выше, чтобы просмотреть описания различных компонентов.


Создание схемы

Теперь пришло время построить схему на нашей макетной плате.

Если вы новичок в электронике, мы рекомендуем вам отключить питание Raspberry Pi. И используйте антистатический коврик или заземляющий браслет, чтобы не повредить его.

Правильно выключите Raspberry Pi с помощью команды:

pi@w3demopi:~ $ sudo shutdown -h now

После того, как светодиоды перестанут мигать на Raspberry Pi, вытащите вилку питания из Raspberry Pi (или поверните удлинитель, к которому он подключен).

Простое выдергивание вилки из розетки без надлежащего выключения может привести к повреждению карты памяти.

Raspberry Pi 3 с макетной платой.  Схема проточных светодиодов

Посмотрите на приведенную выше иллюстрацию схемы.

  1. На Raspberry Pi подключите гнездо перемычки к контакту GND . В нашем примере мы использовали физический контакт 6 ( GND , строка 3, правый столбец).
  2. На макетной плате подключите штекер перемычки, подключенной к источнику питания GND , к шине заземления с правой стороны. Весь этот столбец вашего макета связан, поэтому не имеет значения, какая строка. В нашем примере мы прикрепили его к строке 1
  3. Для каждого светодиода: подключите светодиод так, чтобы он соединился с 2 рядами соединительных точек. В нашем примере мы подключили:
    1. LED1 к строкам 5 (катод) и 6 (анод) столбца J
    2. LED2 к строкам 8 (катод) и 9 (анод) столбца J
    3. LED3 to rows 11 (cathode) & 12 (anode) column J
    4. LED4 to rows 14 (cathode) & 15 (anode) column J
    5. LED5 to rows 17 (cathode) & 18 (anode) column J
    6. LED6 to rows 20 (cathode) & 21 (anode) column J
    7. LED7 to rows 23 (cathode) & 24 (anode) column J
    8. LED8 to rows 26 (cathode) & 27 (anode) column J
  4. For each LED: Connect one of the legs of a 220 ohm resistor from the the Ground Bus column on the right side, and the other leg to the right side Tie-Point row where it connects to the cathode leg of the LED. In our example we connected:
    1. LED1 to row 5 column I
    2. LED2 to row 8 column I
    3. LED3 to row 11 column I
    4. LED4 to row 14 column I
    5. LED5 to row 17 column I
    6. LED6 to row 20 column I
    7. LED7 to row 23 column I
    8. LED8 to row 26 column I
  5. For each LED: Connect the female leg of a jumper wire to a GPIO pin on the Raspberry Pi, and the male leg of the jumper wire to the right side Tie-Point row where it connects to the anode leg of the LED. In our example we connected:
    1. LED1 from Physical Pin 7 (GPIO 4, row 4, left column) to Tie-point row 6 column F
    2. LED2 from Physical Pin 11 (GPIO 17, row 6, left column) to Tie-point row 9 column F
    3. LED3 from Physical Pin 13 (GPIO 27, row 7, left column) to Tie-point row 12 column F
    4. LED4 from Physical Pin 15 (GPIO 22, row 8, left column) to Tie-point row 15 column F
    5. LED5 from Physical Pin 12 (GPIO 18, row 6, right column) to Tie-point row 18 column F
    6. LED6 from Physical Pin 16 (GPIO 23, row 8, right column) to Tie-point row 21 column F
    7. LED7 from Physical Pin 18 (GPIO 24, row 9, right column) to Tie-point row 24 column F
    8. LED8 from Physical Pin 22 (GPIO 25, row 11, right column) to Tie-point row 27 column F

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 Flowing LEDs Script

Go to the "nodetest" directory, and create a new file called "flowingleds.js":

pi@w3demopi:~ $ nano flowingleds.js

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

Write, or paste the following:

flowingleds.js

var Gpio = require('onoff').Gpio; //include onoff to interact with the GPIO
var LED04 = new Gpio(4, 'out'), //use declare variables for all the GPIO output pins
  LED17 = new Gpio(17, 'out'),
  LED27 = new Gpio(27, 'out'),
  LED22 = new Gpio(22, 'out'),
  LED18 = new Gpio(18, 'out'),
  LED23 = new Gpio(23, 'out'),
  LED24 = new Gpio(24, 'out'),
  LED25 = new Gpio(25, 'out');

//Put all the LED variables in an array
var leds = [LED04, LED17, LED27, LED22, LED18, LED23, LED24, LED25];
var indexCount = 0; //a counter
dir = "up"; //variable for flowing direction

var flowInterval = setInterval(flowingLeds, 100); //run the flowingLeds function every 100ms

function flowingLeds() { //function for flowing Leds
  leds.forEach(function(currentValue) { //for each item in array
    currentValue.writeSync(0); //turn off LED
  });
  if (indexCount == 0) dir = "up"; //set flow direction to "up" if the count reaches zero
  if (indexCount >= leds.length) dir = "down"; //set flow direction to "down" if the count reaches 7
  if (dir == "down") indexCount--; //count downwards if direction is down
  leds[indexCount].writeSync(1); //turn on LED that where array index matches count
  if (dir == "up") indexCount++ //count upwards if direction is up
};

function unexportOnClose() { //function to run when exiting program
  clearInterval(flowInterval); //stop flow interwal
  leds.forEach(function(currentValue) { //for each LED
    currentValue.writeSync(0); //turn off LED
    currentValue.unexport(); //unexport GPIO
  });
};

process.on('SIGINT', unexportOnClose); //function to run when user closes using ctrl+cc

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

Run the code:

pi@w3demopi:~ $ node flowingleds.js

Now the LEDs should turn on and off in sequence, creating a flowing effect.

End the program with Ctrl+c.