问题标签 [firmata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1333 浏览

java - SerialPortEventListener 实现

我正在使用 Firmata 协议,它允许您通过串行协议控制 Arduino。我正在使用侦听 DATA_AVAILABLE 事件的 SerialPortEventListener 读取传感器值。但是我注意到我的应用程序注册更新的传感器值需要一秒钟的延迟,协议以 57600 的波特率运行。我的问题是事件侦听器是在单独的线程上运行还是我的应用程序和侦听器在同一个线程中运行,我的应用程序减慢了速度。

编辑:为了让我自己清楚,我只是在理论上问在单独的线程中读取串行传输或使用事件侦听器会更快吗?

0 投票
2 回答
1299 浏览

python - Python PyQt 定时器固件

我对 python 很陌生,并且正在使用firmata 我正在尝试使用 arduino 。

这是我想要发生的事情:

  • 使用 LED 将 arduino 设置为数字输出
  • 将电位器设置为模拟 0

  • 设置 PyQt 定时器以更新
    应用程序中的电位器位置

  • 在 PyQt 中设置一个阈值来打开 LED(模拟输入具有 1024 位分辨率,所以说 800 作为
    阈值)

我正在使用这个固件库:链接

这是我遇到问题的代码:

从 PyQt4 导入 sys 导入 QtCore,从 Firmata 导入 QtGui *

我收到错误消息:

Traceback(最近一次调用最后):文件“D:\Programming\Eclipse\IO Demo\src\control.py”,第 138 行,在 myapp = MainWindow() 文件“D:\Programming\Eclipse\IO Demo\src\ control.py”,第 56 行,在init self.appTimer.event(self.updateAppTimer()) 文件“D:\Programming\Eclipse\IO Demo\src\control.py”,第 60 行,在 updateAppTimer self.analogPosition = self.a.analog_read(self, 0) TypeError:analog_read() 正好需要 2 个参数(给定 3 个)

如果我取出“self”,我会收到相同的错误消息,但只给出了 1 个参数

python 隐含地做了什么我不知道的事情?

块引用

0 投票
4 回答
5093 浏览

bluetooth - Arduino上的蓝牙固件?

我有 Firmata 在 Arduino Uno 上工作正常,通过电缆 USB 与 Processing 通信。

我想摆脱电缆,并通过蓝牙传输(使用 BlueSMIRF 模块)运行连接。我不清楚我需要对 Firmata 做什么来告诉它使用 BT 模块而不是(未连接的)USB 电缆接口。特别是,我是否需要破解 Firmata 本身来添加初始化代码

  1. 特定于我正在使用的 BT 模块,或
  2. 更一般地说,需要告诉 Firmata 使用有线 USB 以外的端口吗?

谢谢

D

0 投票
1 回答
1894 浏览

file-io - 带有 Arduino Mega 1280 的固件,无法读取所有输入引脚

我有一个 Arduino Mega 1280,想通过 Firmata 与它通信。这听起来很容易...

所以我的问题:如果我使用 Arduino 1.0 中包含的 StandardFirmata 固件,我可以设置输出引脚,并向它们发送信号((突出显示引脚 24 上的 LED):

但我无法从我的 Mega 读取任何数字输入。我发现,有些人在读取高于 13 的端口时遇到问题。我无法验证,我的输入信号从端口 23 开始。例如:

现在我在我的 Mega 上安装了 AllInputsFirmata,它也预装在 Arduino 1.0 中。现在从数字输入读取没有问题:示例:

但这一次,我无法发出任何信号。

那么发生了什么?

(是的,我用 FirmataTest 软件对其进行了测试,一切正常!)

0 投票
0 回答
998 浏览

c# - Firmata over nRF24

I'm having some technical problems... I'm trying to use Firmata for arduino but over nrf24, not over Serial interface. I have tested nRF24 communication and it's fine. I have also tested Firmata over Serial and it works.

Base device is simple "serial relay". When it has data available on Serial, read it and send it over nRF24 network. If there is data available from network, read it and send it through Serial.

Node device is a bit complex. It has custom Standard Firmata where I have just added write and read override.

Diagram

Read override id handeled in loop method in this way:

Firmata processInputOverrride is little changed method of processInput where processInput reads data directly from FirmataSerial, and in this method we pass data down to method from network. This was tested and it should work fine.

Write method is overloaded in a different way. In Firmata.cpp I have added an method pointer that can be set to a custom method and used to send data using that custom method. I have then added custom method call after each of the FirmataSerial.write() call:

I have then set the overrided write method to a custom method that just writes byte to network instead of Serial.

Everything seems to be working fine, it's just that some data seems to be inverted or something. I'm using sharpduino (C#) to do some simple digital pin toggle. Here's how output looks like: (< came from BASE, > sent to BASE)

That last line came inverted. So i tough that I only need to invert received bytes. And it worked for that first command. But then something happens and communication stops again.

So what could be the problem here? It seems that communication with Firmata works but something isn't right...

-- EDIT --

I solved that issue. The problem was that I didn't see Serial.write() calls in sysex callback. Now that that is solved, I came up to another problem... All stages pass right (I guess) and then I dont get any response from Node when I request pin states

There is no response. Any ideas why would that happen? Node receive all messages correctly and code for handling pin states exist.

0 投票
2 回答
1638 浏览

arduino - 处理找不到Arduino?

我在Processing中使用 Arduino 库。但是所有示例草图都不起作用。我尝试使用Arduino.list[0]and更改串行端口Arduino.list[1]。如果我选择任何更高的数字,它会引发错误,所以我假设它只看到两个串行设备。

我的 Arduino 已连接并正常工作。我通过 Arduino 应用程序使用它没有问题。

还有哪些其他可能的问题?

在Arduino 和 Processing页面上有一个示例草图,我一直在使用它来进行故障排除。

0 投票
1 回答
2648 浏览

python - Python- Firmata 和 Arduino,影响firmata 的脚本结构

当使用此脚本使 pin12 上的 LED 闪烁时,脚本将不会越过 pin12 设置为高的 line27。没有错误信息。

如何构建此脚本以便 Firmata/Serial 在每个循环上工作?我有兴趣了解为什么上面的脚本根本不起作用,但下面的 LED 示例会起作用。

Arduino 正在运行 oldStandardFirmata

0 投票
1 回答
2897 浏览

controls - Firmata伺服控制

我被困在我的项目的最后一部分,它通过读取 xml 提要来控制伺服,并根据它应该转动几度的值。我正在使用雅虎的天气 xml 提要,它显示了不同的风速属性,如速度、方向等。我正在做的是我只使用风向和速度,以便用 LED 和箭头来显示它的方向。LED 灯一切正常,但说到伺服,我不太确定该怎么做。它适用于 Arduino 全面示例,但我使用 Firmata,我猜它的代码有点不同。首先,我使用标准 Firmata 来控制 LED,但它对伺服器不好,所以现在我使用 2 个 arduino,一个带有标准 Firmata 用于 LED,一个带有 Servo Firmata 用于伺服,没有分配在不同的 COM 端口上。不幸的是,当我尝试对伺服进行编程时,它只会变得更快或更慢,而无法控制它的角度以及何时停止。在 arduino 中,它适用于他们的示例,但在 Firmata 中,我似乎无法对其进行调整,因此它在使用 Firmata 进行处理时也类似。我已经坚持了 2 天了,因为我必须在星期一之前完成它,所以任何帮助都将不胜感激

这是代码:

所有这些 prinLn(1-5) 显然只是代码检查器,以查看它是否有问题,但我想没有,只是我无法控制角度或除速度之外的任何其他特定控制,但是在我拔掉 USB 的大多数情况下,它不会停止旋转:)

我想我需要插入 arduino 示例的这一部分以使其正确移动:

但我不太确定,因为我试过了,但我可能没有正确编程。

谢谢!

0 投票
0 回答
585 浏览

node.js - 如何将URM37(测距仪)连接到Arduino并通过nodeJS读取数据

我买了这个测距仪http://www.dfrobot.com/wiki/index.php/URM37_V3.2_Ultrasonic_Sensor_(SKU:SEN0001)

现在我很难让它在 nodeJS 上运行。我的设置是使用“firmata”库的 Arduino UNO 和 nodeJs。

我尝试了什么: 1. 我用原生 Arduino IDE 测试了测距仪,它工作正常。2. 然后我从 Arduino IDE 将数据写入 EEPROM(代码示例如下):

  1. 我试图制作与手册中相同的代码以使其工作但在nodeJS中,但我失败了:

    });

请各位大侠帮帮我!

0 投票
1 回答
97 浏览

c++ - 编译未定义的参考 libfirmataplus 时遇到问题

我已经在我的 ubuntu 上安装了 libfirmataplus,但我无法使用它进行编译:

不幸的是,错误不是来自库中的我的代码.so

这是我尝试编译的代码:(取自示例)