【问题标题】:Raspberry GPIO pins to activate ISR on arduino在 arduino 上激活 ISR 的覆盆子 GPIO 引脚
【发布时间】:2018-05-07 05:39:49
【问题描述】:

我正在做一个项目,理想情况下我想用 Raspberru PI 启动和停止 Arduino 的循环。想法是从 Raspberry PI GPIO 引脚向 Arduino 引脚发送信号并触发和 ISR,如下所示:

volatile bool start = false;

void start(){
  start = true;
}
void stop(){
  start = false;
}

void setup(){
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), start, RISING)
  pinMode(3, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(3), stop, RISING)
}

void loop() {
  if (start) {
    //Do my stuff here...   
    }
 } 

任何关于如何从带有参数(开始或停止,1 或 0)的 C++ 应用程序中完成此操作的帮助?或者也许使用 Python?

我故意选择设置两个不同的引脚。我知道我们可以只设置一个引脚并使用“start =!start”功能使其作为触发器工作,但是这样我将有一个引脚,而不是总是启动(或继续)arduino,另一个停止(或确保 arduino 已停止)。

我的一个主要问题是我不知道如何设置两块板之间的连接(每对引脚使用一根电缆,还是我们还需要接地?)。 哪种类型的冲动更适合从树莓派发送? 我也知道 Arduino 在 5V 上工作,而树莓派在 3.3V 上工作。我们是否应该串联一个电阻以避免任何过电流?

感谢您提供的任何建议或参考书目, 亚历克西斯

【问题讨论】:

  • 我投票结束这个问题,因为它是关于硬件接线,而不是编程。
  • 好吧,您将 pinMode 设置为 INPUT_PULLUP,因此未激活时输入为高电平。而是使用从输入到 GND 的电阻器 (10K) 并删除 pinMode 声明中的 _PULLUP

标签: arduino raspberry-pi communication gpio isr


【解决方案1】:

关于您对电压问题的担忧:我会先解决这个问题,因为必须先确定这一点,然后才能进行其他任何操作。

确实,Raspberry Pi 上的电压是 3.3 伏,通常 Arduino 是 5.0 伏 逻辑。有可用的电压电平转换器可以转换 3.3。到 5.0 并返回。您可以从 Adafruit 或 Sparkfun 等常见来源获得这些信息。具体名称是

**4 通道 I2C 安全双向逻辑电平转换器 - BSS138 $4.00 **

您可以使用这个简单的设备连接两个设备之间的通信。 (显示的是 Sparkfun 版本)。

另外一种可能更简单的方法是购买一个可以在 3.3 伏特下运行的 Arduino。这些可以在 eBay 上从中国购买,并且有一个开关,允许 arduino i/o 为 5V 或 3.3V。

可能使用电阻来管理电平转换。如果您具备设计此解决方案的技能,您可能需要考虑该解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多