Я использую Adafruit Feather 32u4 RFM95 Lora Radio в качестве MCU для дистанционного датчика и переключателя.Я использую библиотеку RadioHead для взаимодействия с радиомодулем.
Моя цель - заставить мое перо отправлять данные датчика через регулярные промежутки времени.Я также хочу, чтобы он мог получать команды удаленно, которые включают и выключают подключенные устройства.Я подключил его к аккумулятору и солнечной панели.Решение, которое у меня есть до сих пор, это
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;
}
}
. Есть несколько проблем с этим.Первая и самая большая проблема заключается в том, что я могу легко потерять входящие данные.Во-вторых, процессор всегда работает, и я не могу уснуть из-за страха потерять входящие сообщения.Я хотел бы сохранить как можно больше энергии, позволяя ей спать как можно дольше.
Очевидное решение этой проблемы - запуск прерывания при появлении нового сообщения.Я не могу понять, как это сделать.В документации есть вывод № 7, в котором говорится, что это IRQ.Я попытался
#define RFM95_INT 7
attachInterrupt(digitalPinToInterrupt(RFM95_INT), handleRFInput, CHANGE);
, но когда я побежал, ничего не произошло.Данные датчика не были переданы или что-то еще.Что мне нужно сделать, чтобы получить прерывание при получении сообщения?