使用firmata.js

时间:2018-04-12 15:03:35

标签: javascript arduino servo firmata

我试图用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);
  });
});

1 个答案:

答案 0 :(得分:2)

继续使用Braccio屏蔽但将引脚12设置为数字输出,然后将其设置为高电平。

虽然我找不到Braccio盾牌的任何文档,但是如果你看一下Braccio库的源代码,你会看到他们做了些什么"奇怪的"在void _Braccio::_softStart()。这似乎与"软启动"舵机,但据我所知,它只是位于脉冲引脚12高/低2到6发送,然后将其设置为高。我不知道这是如何实现一个软启动的,因为舵机在发生这种情况时没有被控制。

无论如何,该功能使PIN 12保持高电平。如果它很低,舵机不会响应。