При работе с 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 ВЫСОКИМ. Если он НИЗКИЙ, сервоприводы не будут отвечать.

Другие вопросы по тегам