Utilize digitalPinToInterrupt in examples
The examples used hard-coded values or defines to convert digital pin number to interrupt in calls to attachInterrupt and sleep. This has confused several people, most recently in https://forum.mysensors.org/topic/3880/gw-sleep-on-battery-powered-magnet-door-switch/ Let digitalPinToInterrupt handle this work instead.
This commit is contained in:
@@ -48,7 +48,6 @@
|
|||||||
#define PULSE_FACTOR 1000 // Nummber of blinks per KWH of your meeter
|
#define PULSE_FACTOR 1000 // Nummber of blinks per KWH of your meeter
|
||||||
#define SLEEP_MODE false // Watt-value can only be reported when sleep mode is false.
|
#define SLEEP_MODE false // Watt-value can only be reported when sleep mode is false.
|
||||||
#define MAX_WATT 10000 // Max watt value to report. This filetrs outliers.
|
#define MAX_WATT 10000 // Max watt value to report. This filetrs outliers.
|
||||||
#define INTERRUPT DIGITAL_INPUT_SENSOR-2 // Usually the interrupt = pin -2 (on uno/nano anyway)
|
|
||||||
#define CHILD_ID 1 // Id of the sensor child
|
#define CHILD_ID 1 // Id of the sensor child
|
||||||
|
|
||||||
unsigned long SEND_FREQUENCY = 20000; // Minimum time between send (in milliseconds). We don't wnat to spam the gateway.
|
unsigned long SEND_FREQUENCY = 20000; // Minimum time between send (in milliseconds). We don't wnat to spam the gateway.
|
||||||
@@ -75,7 +74,7 @@ void setup()
|
|||||||
// If no pullup is used, the reported usage will be too high because of the floating pin
|
// If no pullup is used, the reported usage will be too high because of the floating pin
|
||||||
pinMode(DIGITAL_INPUT_SENSOR,INPUT_PULLUP);
|
pinMode(DIGITAL_INPUT_SENSOR,INPUT_PULLUP);
|
||||||
|
|
||||||
attachInterrupt(INTERRUPT, onPulse, RISING);
|
attachInterrupt(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), onPulse, RISING);
|
||||||
lastSend=millis();
|
lastSend=millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ void setup()
|
|||||||
pinMode(ledPin, OUTPUT);
|
pinMode(ledPin, OUTPUT);
|
||||||
pinMode(waterButtonPin, INPUT_PULLUP);
|
pinMode(waterButtonPin, INPUT_PULLUP);
|
||||||
//pinMode(waterButtonPin, INPUT);
|
//pinMode(waterButtonPin, INPUT);
|
||||||
attachInterrupt(1, PushButton, RISING); //May need to change for your Arduino model
|
attachInterrupt(digitalPinToInterrupt(waterButtonPin), PushButton, RISING); //May need to change for your Arduino model
|
||||||
digitalWrite (ledPin, HIGH);
|
digitalWrite (ledPin, HIGH);
|
||||||
DEBUG_PRINTLN(F("Turning All Valves Off..."));
|
DEBUG_PRINTLN(F("Turning All Valves Off..."));
|
||||||
updateRelays(ALL_VALVES_OFF);
|
updateRelays(ALL_VALVES_OFF);
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
// setup CS pins used for the connection with the lightning sensor
|
// setup CS pins used for the connection with the lightning sensor
|
||||||
// other connections are controlled by the SPI library)
|
// other connections are controlled by the SPI library)
|
||||||
int8_t CS_PIN = 8;
|
#define CS_PIN 8
|
||||||
int8_t SI_PIN = 7;
|
#define SI_PIN 7
|
||||||
int8_t IRQ_PIN = 3;
|
#define IRQ_PIN 3
|
||||||
volatile int8_t AS3935_ISR_Trig = 0;
|
volatile int8_t AS3935_ISR_Trig = 0;
|
||||||
|
|
||||||
// #defines
|
// #defines
|
||||||
@@ -60,7 +60,7 @@ void setup()
|
|||||||
// function also powers up the chip
|
// function also powers up the chip
|
||||||
|
|
||||||
// enable interrupt (hook IRQ pin to Arduino Uno/Mega interrupt input: 1 -> pin 3 )
|
// enable interrupt (hook IRQ pin to Arduino Uno/Mega interrupt input: 1 -> pin 3 )
|
||||||
attachInterrupt(1, AS3935_ISR, RISING);
|
attachInterrupt(digitalPinToInterrupt(IRQ_PIN), AS3935_ISR, RISING);
|
||||||
// dump the registry data to the serial port for troubleshooting purposes
|
// dump the registry data to the serial port for troubleshooting purposes
|
||||||
lightning0.AS3935_PrintAllRegs();
|
lightning0.AS3935_PrintAllRegs();
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,6 @@
|
|||||||
|
|
||||||
unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
|
unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
|
||||||
#define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!)
|
#define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!)
|
||||||
#define INTERRUPT DIGITAL_INPUT_SENSOR-2 // Usually the interrupt = pin -2 (on uno/nano anyway)
|
|
||||||
#define CHILD_ID 1 // Id of the sensor child
|
#define CHILD_ID 1 // Id of the sensor child
|
||||||
|
|
||||||
// Initialize motion message
|
// Initialize motion message
|
||||||
@@ -67,7 +66,7 @@ void loop()
|
|||||||
send(msg.set(tripped?"1":"0")); // Send tripped value to gw
|
send(msg.set(tripped?"1":"0")); // Send tripped value to gw
|
||||||
|
|
||||||
// Sleep until interrupt comes in on motion sensor. Send update every two minute.
|
// Sleep until interrupt comes in on motion sensor. Send update every two minute.
|
||||||
sleep(INTERRUPT,CHANGE, SLEEP_TIME);
|
sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,6 @@
|
|||||||
|
|
||||||
unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
|
unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
|
||||||
#define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!)
|
#define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!)
|
||||||
#define INTERRUPT DIGITAL_INPUT_SENSOR-2 // Usually the interrupt = pin -2 (on uno/nano anyway)
|
|
||||||
#define CHILD_ID 1 // Id of the sensor child
|
#define CHILD_ID 1 // Id of the sensor child
|
||||||
|
|
||||||
// Initialize motion message
|
// Initialize motion message
|
||||||
@@ -86,7 +85,7 @@ void loop()
|
|||||||
send(msg.set(tripped?"1":"0")); // Send tripped value to gw
|
send(msg.set(tripped?"1":"0")); // Send tripped value to gw
|
||||||
|
|
||||||
// Sleep until interrupt comes in on motion sensor. Send update every two minute.
|
// Sleep until interrupt comes in on motion sensor. Send update every two minute.
|
||||||
sleep(INTERRUPT,CHANGE, SLEEP_TIME);
|
sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,8 @@
|
|||||||
#define LUX_ON // uncomment out this line to enable BH1750 sensor
|
#define LUX_ON // uncomment out this line to enable BH1750 sensor
|
||||||
//#define USE_DAILY // displays each time segment as an accumulation of prior periods inclusive. Comment out to display individual daily rainfall totals in the variables sent to your controller.
|
//#define USE_DAILY // displays each time segment as an accumulation of prior periods inclusive. Comment out to display individual daily rainfall totals in the variables sent to your controller.
|
||||||
|
|
||||||
|
#define TIP_SENSOR_PIN 3
|
||||||
|
|
||||||
#define CALIBRATE_FACTOR 60 // amount of rain per rain bucket tip e.g. 5 is .05mm
|
#define CALIBRATE_FACTOR 60 // amount of rain per rain bucket tip e.g. 5 is .05mm
|
||||||
#define DHT_LUX_DELAY 300000 //Delay in milliseconds that the DHT and LUX sensors will wait before sending data
|
#define DHT_LUX_DELAY 300000 //Delay in milliseconds that the DHT and LUX sensors will wait before sending data
|
||||||
|
|
||||||
@@ -116,7 +118,6 @@ MyMessage msgTrippedVar2(CHILD_ID_TRIPPED_INDICATOR, V_VAR2);
|
|||||||
#endif
|
#endif
|
||||||
unsigned long sensorPreviousMillis;
|
unsigned long sensorPreviousMillis;
|
||||||
int eepromIndex;
|
int eepromIndex;
|
||||||
int tipSensorPin = 3; // Pin the tipping bucket is connected to. Must be interrupt capable pin
|
|
||||||
int ledPin = 5; // Pin the LED is connected to. PWM capable pin required
|
int ledPin = 5; // Pin the LED is connected to. PWM capable pin required
|
||||||
unsigned long dataMillis;
|
unsigned long dataMillis;
|
||||||
unsigned long serialInterval = 600000UL;
|
unsigned long serialInterval = 600000UL;
|
||||||
@@ -141,8 +142,8 @@ void setup()
|
|||||||
SERIAL_START(115200);
|
SERIAL_START(115200);
|
||||||
//
|
//
|
||||||
// Set up the IO
|
// Set up the IO
|
||||||
pinMode(tipSensorPin, INPUT_PULLUP);
|
pinMode(TIP_SENSOR_PIN, INPUT_PULLUP);
|
||||||
attachInterrupt (1, sensorTipped, FALLING); // depending on location of the hall effect sensor may need CHANGE
|
attachInterrupt (digitalPinToInterrupt(TIP_SENSOR_PIN), sensorTipped, FALLING); // depending on location of the hall effect sensor may need CHANGE
|
||||||
pinMode(ledPin, OUTPUT);
|
pinMode(ledPin, OUTPUT);
|
||||||
digitalWrite(ledPin, HIGH);
|
digitalWrite(ledPin, HIGH);
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ MyMessage vibrationMsg(CHILD_ID_VIBRATION, V_LEVEL);
|
|||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
pinMode(VIBRATION_SENSOR_DIGITAL_PIN, INPUT);
|
pinMode(VIBRATION_SENSOR_DIGITAL_PIN, INPUT);
|
||||||
attachInterrupt(1, blink, FALLING);// Trigger the blink function when the falling edge is detected
|
attachInterrupt(digitalPinToInterrupt(VIBRATION_SENSOR_DIGITAL_PIN), blink, FALLING); // Trigger the blink function when the falling edge is detected
|
||||||
pinMode(SensorLED, OUTPUT);
|
pinMode(SensorLED, OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,6 @@
|
|||||||
#include <MySensor.h>
|
#include <MySensor.h>
|
||||||
|
|
||||||
#define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your sensor. (Only 2 and 3 generates interrupt!)
|
#define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your sensor. (Only 2 and 3 generates interrupt!)
|
||||||
#define SENSOR_INTERRUPT DIGITAL_INPUT_SENSOR-2 // Usually the interrupt = pin -2 (on uno/nano anyway)
|
|
||||||
|
|
||||||
#define PULSE_FACTOR 1000 // Nummber of blinks per m3 of your meter (One rotation/liter)
|
#define PULSE_FACTOR 1000 // Nummber of blinks per m3 of your meter (One rotation/liter)
|
||||||
|
|
||||||
@@ -87,7 +86,7 @@ void setup()
|
|||||||
|
|
||||||
lastSend = lastPulse = millis();
|
lastSend = lastPulse = millis();
|
||||||
|
|
||||||
attachInterrupt(SENSOR_INTERRUPT, onPulse, FALLING);
|
attachInterrupt(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), onPulse, FALLING);
|
||||||
}
|
}
|
||||||
|
|
||||||
void presentation() {
|
void presentation() {
|
||||||
|
|||||||
Reference in New Issue
Block a user