我在NOOBS Raspbian PI 发行版上安装了wiringpi2和wiringpi2 python 包装器。Adafruit 4 通道逻辑电平转换器使 PI 免受 5v 的影响,并且在 PI 端向 Arduino 发送数据就像这样简单:
import wiringpi2
wiringpi2.wiringPiSPISetup(1,5000)
wiringpi2.wiringPiSPIDataRW(1,'HELLO WORLD\n')
以及相应的 Arduino 代码[3]。
编辑:道歉 - 从现在开始,我不能再发布我精心添加的链接,以显示我的工作、源代码和示例代码。你必须谷歌它并感谢 2-link 规则。
所以,我知道接线工作。但这不是我真正想要的方式——我想从 Arduino 读取一个引脚到 PI。
Arduino SPI 参考说明:
该库允许您与 SPI 设备通信,以 Arduino 作为主设备。
PI 必须是主设备。我以为我注定要失败,直到我阅读了 Nick Gammon 的关于 SPI 的优秀页面,该页面展示了 2 个 Arduinii 相互交谈。
此外,该SPI transfer()
命令会建议您可以从 Arduino 写入。
我现在处于谷歌前 4 个结果页面的所有链接都显示为“已关注”的阶段 - 所以这不是因为缺乏谷歌搜索!
理论上,如果我在 PI 端使用 READ 方法,这不应该工作吗?(注意:这只是众多尝试中的一种,而不是唯一一次!)
在 Arduino 上:
#include <SPI.h>
void setup (void)
{
SPI.begin();
pinMode(MISO, OUTPUT);
// turn on SPI in slave mode
SPCR |= _BV(SPE);
}
void loop (void) {
byte data[] = {0x00, 0x00, 0x00, 0x00}; // this is 24 bits (8bits/byte * 4 bytes)
// Transfer 24 bits of data
for (int i=0; i<4; i++) {
SPI.transfer(data[i]); // Send 8 bits
}
}
在 PI 结束时:
import wiringpi2
wiringpi2.wiringPiSPISetup(1,5000)
stuff = wiringpi2.wiringPiSPIDataRW(1,'\n')
print stuff
WiringPI 说传入的数据会覆盖我的数据,而 SPIDataRW 正好需要 2 个输入,所以我不应该得到“测试”吗?
我在这里想念什么?任何指针都非常感谢。