+1 голос
Здравствуйте
Подключил светодиодную панель через драйвер WS2812 и через Troyka Slot Shield как показано здесь http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:troyka-dc-dc-ws2812
У меня IskraJS. Пробовал загружать программу от сюда http://wiki.amperka.ru/js:led-strip.
Но как я понимаю драйвер подключен через S-V-G контакты в моём случае, а программа написана для SPI. Т.к. питание идёт на светодиодную панель, а потом уже на плату - подключить по другому  не знаю как.
Питание доходит, т.к. горит синий светодиод на плате.
Между светодиодами и драйвером по линии данных (D0) впаян резистор 220 Ом (пробовал и без него - результат такой же).
В итоге при включении питания загорается рандомное количество светодиодов на панели и ничего не происходит. Панель на 5V. Источник питания 2A на 256 светодиодов - понятно что мало, но чтобы загорелся один светодиод должно быть достаточно.

Возникает вопрос - как это может работать и как правильно подключить и написать программу?
Есть где-нибудь полный пример подключения?

P.S. Это тоже пробовал - http://forum.amperka.ru/threads/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%BE-iskrajs-%D0%B8-%D1%81%D0%B2%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F-%D0%BB%D0%B5%D0%BD%D1%82%D0%B0-ws2812b.17855/
Не работает.
(6 баллов) 2

1 Ответ

0 голосов
 
Лучший ответ

Ваш драйвер светодиодных лишь передаёт информацию с платы на ленту и подаёт на него питание. Никаких логических функций он не выполняет.

В примере подключения лента подключается к 4 пину. Но библиотека использует SPI2, который находится только отдельно. Следовательно, ничего работать и не должно. Посмотрите на распиновку платы, чтоб узнать, где SPI2.

SPI2 - красный, а SPI1 - зеленый.

Если поменять SPI2 на SPI1, то можно будет подключить светодиодную ленту к 3 пину. 

Пример с SPI1: 

SPI1.setup({baud:3200000, mosi:A7, sck:A5, miso:A6});
var length = 16;
var ledStrip = require('@amperka/led-strip').connect(SPI1, length, 'BGR');
// гасим все светодиоды
ledStrip.clear();
 
setInterval(function() {
  for (var i = 0; i < length; i++) {
    // выбираем произвольную интенсивность красного цвета
    var redTone = Math.random();
    // устанавливаем цвет светодиода
    ledStrip.putColor(i, [redTone, 0, 0]);
  }
  // применяем изменения
  ledStrip.apply();
}, 1000);

К сожалению, на slot шилде 3 пин выведен не удобно, так что использовать и драйвер, и шилд одновременно с этой библиотекой будет трудно.

Как вариант, можно использовать библиотеку neopixel, которая работает на любом пине.

Например, следующий код зажжет первые 3 светодиода, если лента подключена к 4 пину.

require("neopixel").write(P4, [255,0,0, 0,255,0, 0,0,255]);

Подробнее про библиотеку neopixel

(917 баллов) 4 49 102
выбран
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. parovoZZ

    18 балл(ов)

  2. sser

    12 балл(ов)

  3. Тигрыч

    8 балл(ов)

  4. Un_ka

    8 балл(ов)

  5. artalex

    6 балл(ов)

  6. Vitalii_Mashinkin

    2 балл(ов)

Награды месяца
1-е место: Teensy 3.6
2-е место: Teensy 3.5
3-е место: Teensy 3.2

...