我正在尝试使用firmata.js控制Tinkerkit的braccio(https://store.arduino.cc/tinkerkit-braccio)。我有一个Arduino UNO,并在上面上传了StandardFirmata。

Braccio由6个伺服器组成,并带有一个防护罩。

问题在于,即使将引脚正确设置为SERVO模式,尝试使用firmata.js控制伺服器也无效。我检查了示波器,发现在Arduino上开始运行StandardFirmata时,屏蔽板上的电源引脚不保持5V。 PWM信号很好。

我应该尝试在没有屏蔽的情况下直接在Arduino上直接连接舵机吗?

当我在仅使用braccio库的Arduino上运行脚本时,它运行良好,电源引脚始终为5V。因此,我认为这与盾牌无关,但是我也没有在Firmata的图书馆中发现此问题的迹象。所以我已经没有想法了。

有没有人遇到过这样的事情?

不知道它是否有帮助,但是这里有一段代码。它仍然是非常基本的:

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);
  });
});

最佳答案

继续将Braccio防护罩BUT设置引脚12用作数字输出,然后将其设置为HIGH。

尽管我找不到有关Braccio防护板的任何文档,但是如果您查看Braccio库的源代码,您会发现它们在void _Braccio::_softStart()中做了一些“奇怪”的事情。这似乎与“软启动”伺服器有关,但据我所知,它只是坐在那里,将引脚12的高/低脉冲发送2至6次发送,然后将其设置为高。我看不到如何实现软启动,因为在这种情况下没有对伺服器进行控制。

无论如何,该功能使PIN 12保持高电平。如果它为低,则伺服将不响应。

10-06 07:23