|
|
|
|
@ -110,6 +110,40 @@ void callback(char *topic, byte *payload, unsigned int length)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TaskHandle_t FlashTask;
|
|
|
|
|
|
|
|
|
|
unsigned long previousFlashMillis = 0;
|
|
|
|
|
bool lastMotionState;
|
|
|
|
|
|
|
|
|
|
void FlashTaskCode(void *parameter)
|
|
|
|
|
{
|
|
|
|
|
while (true)
|
|
|
|
|
{
|
|
|
|
|
unsigned long currentMillis = millis();
|
|
|
|
|
|
|
|
|
|
if (currentMillis - previousFlashMillis >= 100 && flashTriggeredLed)
|
|
|
|
|
{
|
|
|
|
|
digitalWrite(led_pin, !flashStatus);
|
|
|
|
|
flashStatus = !flashStatus;
|
|
|
|
|
previousFlashMillis = currentMillis;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (currentMillis - previousFlashMillis >= 1000 && flashArmingLed && flashStatus == 0)
|
|
|
|
|
{
|
|
|
|
|
digitalWrite(led_pin, 0);
|
|
|
|
|
flashStatus = (flashStatus + 1) % 6;
|
|
|
|
|
previousFlashMillis = currentMillis;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (currentMillis - previousFlashMillis >= 100 && flashArmingLed && flashStatus > 0)
|
|
|
|
|
{
|
|
|
|
|
digitalWrite(led_pin, flashStatus % 2 == 0);
|
|
|
|
|
flashStatus = (flashStatus + 1) % 6;
|
|
|
|
|
previousFlashMillis = currentMillis;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setup()
|
|
|
|
|
{
|
|
|
|
|
Serial.begin(115200);
|
|
|
|
|
@ -125,6 +159,15 @@ void setup()
|
|
|
|
|
setup_wifi();
|
|
|
|
|
client.setServer(mqtt_server, 1883);
|
|
|
|
|
client.setCallback(callback);
|
|
|
|
|
|
|
|
|
|
xTaskCreatePinnedToCore(
|
|
|
|
|
FlashTaskCode, /* Function to implement the task */
|
|
|
|
|
"FlashTask", /* Name of the task */
|
|
|
|
|
10000, /* Stack size in words */
|
|
|
|
|
NULL, /* Task input parameter */
|
|
|
|
|
0, /* Priority of the task */
|
|
|
|
|
&FlashTask, /* Task handle. */
|
|
|
|
|
0); /* Core where the task should run */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#define SOUND_MEASURE_INTERVAL 1000 * 10
|
|
|
|
|
@ -134,9 +177,6 @@ void setup()
|
|
|
|
|
unsigned long previousTemperatureMillis = 0;
|
|
|
|
|
unsigned long previousSoundMillis = 0;
|
|
|
|
|
unsigned long previousHighestSoundMillis = 0;
|
|
|
|
|
unsigned long previousFlashMillis = 0;
|
|
|
|
|
|
|
|
|
|
bool lastMotionState;
|
|
|
|
|
|
|
|
|
|
uint16_t highestSound = 0;
|
|
|
|
|
uint16_t runningAverageSound = 0;
|
|
|
|
|
@ -154,27 +194,6 @@ void loop()
|
|
|
|
|
|
|
|
|
|
unsigned long currentMillis = millis();
|
|
|
|
|
|
|
|
|
|
if (currentMillis - previousFlashMillis >= 100 && flashTriggeredLed)
|
|
|
|
|
{
|
|
|
|
|
digitalWrite(led_pin, !flashStatus);
|
|
|
|
|
flashStatus = !flashStatus;
|
|
|
|
|
previousFlashMillis = currentMillis;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (currentMillis - previousFlashMillis >= 1000 && flashArmingLed && flashStatus == 0)
|
|
|
|
|
{
|
|
|
|
|
digitalWrite(led_pin, 0);
|
|
|
|
|
flashStatus = (flashStatus + 1) % 6;
|
|
|
|
|
previousFlashMillis = currentMillis;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (currentMillis - previousFlashMillis >= 100 && flashArmingLed && flashStatus > 0)
|
|
|
|
|
{
|
|
|
|
|
digitalWrite(led_pin, flashStatus % 2 == 0);
|
|
|
|
|
flashStatus = (flashStatus + 1) % 6;
|
|
|
|
|
previousFlashMillis = currentMillis;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (currentMillis - previousTemperatureMillis >= TEMP_MEASURE_INTERVAL)
|
|
|
|
|
{
|
|
|
|
|
// save the last time you blinked the LED
|
|
|
|
|
|