Moved flash code to seperate core

main
Filip B P 2 years ago
parent 1e32f492b4
commit af6ca8a05a

@ -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

Loading…
Cancel
Save