首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >树莓Pi主人,Arduino I2C奴隶。从其他服务将数据返回给主Raspberry Pi

树莓Pi主人,Arduino I2C奴隶。从其他服务将数据返回给主Raspberry Pi
EN

Stack Overflow用户
提问于 2018-02-10 18:51:22
回答 1查看 488关注 0票数 0

Raspberry Pi通过I2C从Arduino发送命令和读取数据。每件事都是这样做的:

  1. Raspberry向Arduino发送命令并读取响应。
  2. Arduino向dali电源发送命令(on或off)并得到响应。大约需要40毫秒。

在Raspberry Pi上,它没有得到更新的响应。如何等到loop()完成读取数据?然后送去树莓派?我等不及了,因为有些命令应该在100 ms以下重复。

这是我的代码:

代码语言:javascript
复制
#include <Wire.h>
#include "dali.h"

volatile bool state = false;
volatile uint8_t response = 0;
volatile bool newCommand = false;

void setup() 
{
dali.Init(A0, 7);
dali.busTest();
dali.transmit(BROADCAST, RECALL_MIN_LEVEL);
Wire.onReceive(ReceiveEvent);
Wire.onRequest(RequestEvent);
Wire.begin(10);
}
void loop() 
{
if (newCommand)
{
    Serial.println(state);
    response = dali.GetData(state);
    Serial.println(response);
    newCommand = false;
}
}

void ReceiveEvent(int howMany)
{
byte req;
while (Wire.available())
{
    req = Wire.read();
}
if (req == 97)
{
    state = !state;
    newCommand = true;
}
}
void RequestEvent()
{
Wire.write(response);
}
EN

回答 1

Stack Overflow用户

发布于 2018-02-11 11:41:30

您没有将Serial.begin()添加到安装程序中,然后尝试在循环中调用Serial.print(),这可能会冻结您的Arduino。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48724387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档