标签: arduino

Bash,串行I/O和Arduino

所以,我有点过头了,我觉得我非常接近解决方案,但它还没有完成.这是我的情况:

我正在使用Arduino微控制器,我正在尝试编写两个Bash脚本(现在在Mac OS X 10.6中运行),它将(a)将来自Arduino单元的所有串行数据打印到标准输出,并且(b)允许我将序列数据发送到Arduino单元.然后将使用Adobe AIR的NativeProcess API调用这些脚本,以允许Arduino单元和Flex Adobe AIR应用程序之间的紧密集成.

我的两个脚本非常简单 -

这是我的WriteToSerial.sh脚本:

echo $1 > $2
Run Code Online (Sandbox Code Playgroud)

($ 1显然是我的字符串,$ 2是串口的位置 - 目前是/dev/tty.usbserial-A800eIUj)

这是我的ReadSerialOutput.sh脚本:

tail -f $1
Run Code Online (Sandbox Code Playgroud)

(1美元是我的串口的位置,目前是/dev/tty.usbserial-A800eIUj)

当我打电话或者这些脚本的(或者哪怕我只是直接键入命令到Bash的控制台),我的电脑只是挂起-我可以输入文字,但没有任何反应,直到我Ctrl+ C出来的过程.

但是,如果我打开Arduino IDE并打开串行监视器,然后tail -f打开端口,关闭串行监视器,然后回显"测试">串口,一切正常.

这告诉我,在Arduino IDE中打开串行监视器是以某种方式初始化串口,这反过来允许我拖延它没有问题.这反过来告诉我,我只是没有输入某种初始化命令.但是,我一直在高低搜索,似乎无法找到解决这个问题的任何东西.

解决办法是什么?

bash command-line serial-port arduino

25
推荐指数
2
解决办法
6万
查看次数

如何编程Arduino与标准C不同?

我有编程嵌入式系统的背景(TI MSP430,Atmel ATxmega).如何编程Arduino不同于那些?我可以用什么知识来编写Arduino?

c c++ arduino

25
推荐指数
2
解决办法
3万
查看次数

如何在支持蓝牙的Arduino微控制器上将Android应用程序正确连接到RFCOMM插槽?

我正在和我大学的一些学生一起开发一个简单的蓝牙Android应用程序,该应用程序将用于连接到蓝牙模块的Arduino微控制器的串行通信(RFCOMM).

据我所知,我正在使用正确的蓝牙地址和UUID RFCOMM/SPP 00001101-0000-1000-8000-00805F9B34FB.我的应用程序启动一个尝试使用连接到设备的线程BluetoothDevice.createRfcommSocketToServiceRecord(UUID).但由于某种原因,我们没有看到成功的联系.在调用来自上面的调用connect()的结果时BluetoothSocket,操作总是失败.

当我在运行HTC的Gingerbread变种的HTC Evo上进行测试时,通常会失败并显示"服务发现无法启动"的异常消息.我做了一些阅读,发现有人说HTC在蓝牙堆栈中对RFCOMM的实现是错误的,所以我们决定在另一个学生的三星Galaxy S上试用它.代码第一次运行时,一切都运行良好.Arduino微控制器连接到一个小电动机,开始按预期工作.我没有排除问题是否可能出在微控制器方面.connect()

随后在Samsung设备上使用该应用程序失败,现在显示"Service Discovery Failed"消息.对我来说,似乎设备端的蓝牙模块可能认为RFCOMM服务仍在使用中.但是我们重新启动了微控制器并且仍然看到了相同的结果.

我刚刚列出了线程代码,因为它是真正相关的.我已经读过使用反射这些问题有一个非常常见的解决方法(hack).我对它的尝试也失败了但是在那里并且被注释掉了.希望有人能引导我朝着正确的方向前进.另请注意,我确实在清单中启用了必要的权限,在这两种情况下,设备都使用Android的用户界面成功与Arduino配对.

private class ClientThread extends Thread {

    private String _btAddress;

    /**
     * A handle to the local device's Bluetooth adapter hardware.
     */
    private BluetoothAdapter _btAdapter = BluetoothAdapter.getDefaultAdapter();

    /**
     * A handle to the remote device Bluetooth context.
     */
    private BluetoothDevice _btRemoteDevice;

    /**
     * A handle to the Bluetooth serial socket.
     */
    private BluetoothSocket _btSocket;

    /**
     * …
Run Code Online (Sandbox Code Playgroud)

android bluetooth arduino

25
推荐指数
1
解决办法
1万
查看次数

for循环括号内的两个分号

我定制了一个我在互联网上找到的代码(这是adafruit的推文收据).我无法理解代码的许多部分,但最令我困惑的是括号内有两个分号的for循环

boolean jsonParse(int depth, byte endChar) {
  int c, i;
  boolean readName = true;

  for(;;) {  //<---------
    while(isspace(c = timedRead())); // Scan past whitespace
    if(c < 0) return false; // Timeout
    if(c == endChar) return true; // EOD

    if(c == '{') { // Object follows
      if(!jsonParse(depth + 1, '}')) return false;
      if(!depth) return true; // End of file
      if(depth == resultsDepth) { // End of object in results list
Run Code Online (Sandbox Code Playgroud)

什么是对(;;)是什么意思?(这是一个arduino程序所以我猜它在C中)

c syntax parsing for-loop arduino

25
推荐指数
2
解决办法
2万
查看次数

如何使用C++编写arduino

最近我一直在玩我的arduino,我想知道是否有某种方法可以用c ++编写arduino.我一直在做的是使用vim中的c ++ /处理语言编程并使用makefile编译并上传到arduino.但我的目标是能够使用类和所有优秀的C++特性(或至少总和)来编程.最终我甚至喜欢用原始c编程,我只是在找到如何做的麻烦.如果有人能指出我正确的方向或帮助我,那将是很棒的.谢谢!〜迈克尔

c c++ arduino

25
推荐指数
2
解决办法
8万
查看次数

avrdude:stk500v2_ReceiveMessage():超时

这是我尝试运行ARDUINO程序时遇到的主要错误.完整的错误列表如下:

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

int led=13;
void setup()
{
    pinMode(13,OUTPUT);
}

void loop()
{
    digitalWrite(13,HIGH);
    delay(1000);
    digitalWrite(13,LOW);
    delay(1000);
}
Run Code Online (Sandbox Code Playgroud)

我尝试更新驱动程序(它们已完全更新)并下载一些程序.我有Windows 7,而我的arduino是MEGA 2560.它显示在设备管理器中,我的所有连接都是正确的.绿色PWR灯亮,闪烁的L灯也亮.更新时,RX和TX指示灯会闪烁.我几乎尝试了网上的所有内容.问题是什么?

arduino

25
推荐指数
4
解决办法
11万
查看次数

蓝牙网状网络?

我有一个想法,我想知道是否有可能.我用谷歌搜索它似乎找不到任何现有的解决方案.我在考虑使用蓝牙网状网络.我希望实现的布局是有一个中心站(带有蓝牙加密狗的PC),然后是一堆蓝牙模块(最好是这些),它们都会形成一个网状网络,周围有模块.并非所有这些都在"中心站"的范围内,而是需要通过其他节点与之通信.蓝牙模块将与ATtiny85芯片连接起来,如果它有任何区别的话.如果你有问题,就问吧.

  1. 这可能吗?
  2. 是否可以使用上述蓝牙模块?
  3. 它们都必须单独设置还是可以进行某种邻居发现?
  4. 会有安全隐患吗?
  5. 对网络规模的限制是什么?
  6. 我应该从哪里开始?

network-programming bluetooth arduino network-protocols mesh-network

24
推荐指数
1
解决办法
2万
查看次数

启动程序时 Arduino IDE (Win10) 崩溃

我的 Arduino IDE(Win10 上的 1.8.12 版)在启动时崩溃。运行arduino_debug.exe我收到此错误消息。

C:\Program Files (x86)\Arduino>arduino_debug.exe
Set log4j store directory C:\Users\volke\AppData\Local\Arduino15
Loading configuration...
Initializing packages...
java.lang.NullPointerException
        at cc.arduino.contributions.packages.ContributionsIndexer.parseIndex(ContributionsIndexer.java:134)
        at processing.app.BaseNoGui.initPackages(BaseNoGui.java:483)
        at processing.app.Base.<init>(Base.java:273)
        at processing.app.Base.main(Base.java:150)

C:\Program Files (x86)\Arduino>
Run Code Online (Sandbox Code Playgroud)

任何解决方案?我试图删除配置文件package_index.jsonpackage_esp32_index.json但没有任何运气。

windows crash arduino arduino-ide windows-10

24
推荐指数
2
解决办法
6050
查看次数

无法将minicom的输出保存到文件中

当我使用Minicom从串口捕获数据时,我需要将大数据保存到一个名为的文件中minicom.cap.但是,如果我按Ctrl + A和L来捕获文件,则失败.没有创建文件(minicom.cap事先不存在).我的下载目录已正确创建.我的操作系统是Mint,我从Arduino nano v3.0读取数据

serial-port arduino

23
推荐指数
2
解决办法
5万
查看次数

在struct c ++/arduino中打包位

我有一个结构:

typedef struct {
  uint8_t month;  // 1..12 [4 bits]
  uint8_t date;   // 1..31 [5 bits]
  uint8_t hour;   // 00..23 [5 bits]
  uint8_t minute; // 00..59 [6 bits]
  uint8_t second; // 00..59 [6 bits]
} TimeStamp;
Run Code Online (Sandbox Code Playgroud)

但我想打包它所以它只消耗4个字节而不是5个字节.

有没有办法改变位以创建更严格的结构?

它可能看起来不多,但是它会进入EEPROM,因此在4Kb页面中保存1个字节是额外的512个字节(我可以使用剩下的6个额外的其他东西).

c++ struct arduino

23
推荐指数
3
解决办法
2182
查看次数