我正在尝试使用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保持高电平。如果它为低,则伺服将不响应。