我试图用firmata.js来控制Tinkerkit的braccio(https://store.arduino.cc/tinkerkit-braccio)。我有一个Arduino UNO并上传了StandardFirmata。
braccio由6个舵机组成,配有防护罩。
问题是尝试用firmata.js控制伺服器没有任何效果,即使引脚设置正确到SERVO模式也是如此。我用示波器检查,当我开始在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);
});
});
答案 0 :(得分:2)
继续使用Braccio屏蔽但将引脚12设置为数字输出,然后将其设置为高电平。
虽然我找不到Braccio盾牌的任何文档,但是如果你看一下Braccio库的源代码,你会看到他们做了些什么"奇怪的"在void _Braccio::_softStart()
。这似乎与"软启动"舵机,但据我所知,它只是位于脉冲引脚12高/低2到6发送,然后将其设置为高。我不知道这是如何实现一个软启动的,因为舵机在发生这种情况时没有被控制。
无论如何,该功能使PIN 12保持高电平。如果它很低,舵机不会响应。