#pragma once extern Player player; void dataLogging (void * param) { // Task Setup uint16_t bellMaxLoad[16] = {60}; // Task Loop for (;;) { // Only run if player is playing OR we're still cooling if (player.isPlaying || coolingActive) { coolingActive = false; // will be re-enabled if any load > 0 for (uint8_t i = 0; i < 16; i++) { if (bellLoad[i] > 0) { bellLoad[i]--; coolingActive = true; // still has heat left } // Optional: check for overload if (bellLoad[i] > bellMaxLoad[i]) { Serial.printf("⚠️ Bell %d OVERLOAD! load=%d max=%d\n", i, bellLoad[i], bellMaxLoad[i]); player.forceStop(); // You could also block new strikes here if you want } } } vTaskDelay(pdMS_TO_TICKS(1000)); // run every 1s } }