При работе с firmata.js происходит сбой электропитания braccio от Tinkerkit
Я пытаюсь контролировать брачио Тинкеркита ( https://store.arduino.cc/tinkerkit-braccio) с помощью firmata.js. У меня есть Arduino UNO и я загрузил на него StandardFirmata.
Braccio состоит из 6 сервоприводов и поставляется со щитом.
Проблема в том, что попытка управления сервоприводами с помощью firmata.js не имеет никакого эффекта, даже если контакты правильно установлены в режим SERVO. Я проверил с помощью осциллографа и увидел, что вывод питания на экране не держится при 5 В, когда я запускаю StandardFirmata на Arduino. Сигнал ШИМ в порядке.
Стоит ли пытаться подключить сервоприводы напрямую к Arduino без щита?
Когда я запустил скрипт на Arduino, который использовал только библиотеку braccio, он работал нормально, а вывод питания всегда был на 5В. По этой причине я не думаю, что это как-то связано со щитом, но я также не нашел указаний на эту проблему в библиотеке фирмы. Итак, у меня закончились идеи.
Кто-нибудь уже сталкивался с чем-то подобным?
Не знаю, полезно ли это, но вот фрагмент кода. Это все еще очень просто:
const Board = require('firmata');
const serialport = require('serialport');
Board.requestPort(function (error, port) {
if (error) {
console.log(error);
return;
}
board = new Board(port.comName, { samplingInterval: 1000 });
board.on('open', function () {
console.log(' board opened');
alert('board opened')
});
board.on('ready', function () {
console.log(' board ready');
board.pinMode(11,board.MODES.SERVO);
board.pinMode(10,board.MODES.SERVO);
board.pinMode(9, board.MODES.SERVO);
board.pinMode(6, board.MODES.SERVO);
board.pinMode(5, board.MODES.SERVO);
board.pinMode(3, board.MODES.SERVO);
board.servoWrite(11,60);
board.servoWrite(10,85);
board.servoWrite(9,85);
board.servoWrite(6,85);
board.servoWrite(5,85);
board.servoWrite(3,60);
});
});
1 ответ
Продолжайте использовать экран Braccio, НО установите вывод 12 в качестве цифрового ВЫХОДА, затем установите его ВЫСОКИЙ.
Хотя я не могу найти никакой документации для щита Браччо, если вы посмотрите на исходный код библиотеки Браччо, вы увидите, что они делают что-то "странное" в void _Braccio::_softStart()
, Похоже, что это связано с "мягким запуском" сервоприводов, но, насколько я вижу, он просто сидит на пульсирующем штыре 12 HIGH/LOW для 2-6 отправок, а затем устанавливает его в HIGH. Я не понимаю, как это обеспечивает плавный старт, поскольку сервоприводы не контролируются, пока это происходит.
В любом случае, эта функция оставляет PIN 12 ВЫСОКИМ. Если он НИЗКИЙ, сервоприводы не будут отвечать.