У меня есть два Arduino Unos, прошитых стандартным StandardFirmata, и я пробую демонстрацию нескольких плат с простым проектом узла (пакет npm johnny-five). Обе ардуины работают, когда я пробую их по отдельности. со следующим кодом:
var five = require("johnny-five");
var boardOne = new five.Board({ id: "A", port: "/dev/cu.usbmodem1d1141" });
boardOne.on("ready", function(){
var led = new five.Led({
pin: 13,
board: this
});
led.on();
});
node index.js
1418288836782 Connected /dev/cu.usbmodem1d1141
1418288836784 Repl Initialized
>>
При попытке использовать пример с несколькими платами я получаю: Ошибка устройства или прошивки При подключении к плате истекло время ожидания. Убедитесь, что вы правильно прошили плату правильной прошивкой.
var five = require("johnny-five");
var ports = [
{ id: "A", port: "/dev/cu.usbmodem1d1141" },
{ id: "B", port: "/dev/cu.usbmodem1d1131" }
];
new five.Boards(ports).on("ready", function(){
var led = new five.Led({
pin: 13,
board: this[0]
});
led.on();
});
Обновление №1:
Из любопытства я попытался переключить USB-кабели и получил несколько разных результатов:
1) Подключается только одна ардуино:
1418318698635 Device(s) /dev/cu.usbmodem1a1231,/dev/cu.usbmodem1a1241
1418318698642 Device(s) /dev/cu.usbmodem1a1241
1418318701849 Connected /dev/cu.usbmodem1a1231
1418318701850 Board ID: A
или 2) я получаю сообщение об ошибке:
.../johnny-five-master/node_modules/firmata/lib/firmata.js:246
board.pins[pin].analogChannel = currentValue;
^
TypeError: Cannot set property 'analogChannel' of undefined
at Object.SYSEX_RESPONSE.(anonymous function) [as 106]
(.../johnny-five-master/node_modules/firmata/lib/firmata.js:246:35)
Обновление №2:
Я провел вышеуказанный тест с cylon.js и получил те же результаты. До сих пор не знаю, как это исправить :( Один Arduino работает нормально, несколько ничего не делают. (Может быть, проблема, связанная с OSX?)
Обновление №3:
Я добавил несколько журналов в код johnny-five, и это определенно проблема с подключением (я думаю!?). Второй Arduino никогда не отвечает. Я поменял порядок Arduino и получил тот же результат (сначала один подключается, другой не отвечает). Соединение асинхронное, поэтому, возможно, оно где-то заблокировано. Индикаторы на обоих Arduino определенно показывают, что происходит какое-то действие.
node index.js
err: undefined --- type: connect --- io: /dev/tty.usbmodem1d1111
err: undefined --- type: connect --- io: /dev/tty.usbmodem1d1121
err: undefined --- type: ready --- io: /dev/tty.usbmodem1d1111
1418467187527 Connected /dev/tty.usbmodem1d1111
1418467187527 Board ID: A
1418467284327 Device or Firmware Error A timeout occurred while connecting to the Board.
Please check that you've properly flashed the board with the correct firmware.