当使用Adafruit Feather 32u4 Lora收到消息时,如何从无线电模块生成中断

时间:2018-11-29 04:27:24

标签: arduino interrupt iot adafruit lora

我将Adafruit Feather 32u4 RFM95 Lora Radio用作远程传感器和开关的MCU。我正在使用RadioHead库与无线电模块进行交互。

我的目标是让Feather定期发送传感器数据。我还希望它能够远程接收命令,以打开和关闭连接的设备。我已将其连接到电池和太阳能电池板。到目前为止,我的解决方案是

void loop()
{

    if (rf95.available())
    {   
        handleRFInput();
    }

    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis >= TIME_BETWEEN_PACKETS)
    {
        // Sends the data
        sendSensorData();

        // save the last time data was sent
        previousMillis = currentMillis;
    }
} 

这有一些问题。第一个也是最大的问题是我很容易丢失传入的数据。第二个问题是处理器始终处于运行状态,而我担心丢失传入消息而无法使其入睡。我想通过让它尽可能长时间地睡眠来保留尽可能多的能量。

此问题的明显解决方案是在有新消息可用时触发中断。我不知道该怎么做。 documentation中有一个针脚#7,表示它是IRQ。我尝试过

#define RFM95_INT 7

attachInterrupt(digitalPinToInterrupt(RFM95_INT), handleRFInput, CHANGE);

但是当我运行它时,什么也没发生。没有传输传感器数据或任何东西。我该怎么办才能在消息到达时得到中断?

0 个答案:

没有答案