As a bonus challenge, restructure your project to run as separate FreeRTOS tasks — for example, separate tasks for display updates, input handling, timekeeping, sensor reading, and networking — rather than a single sequential main loop.
Implementation Guidance
– Assign appropriate priorities to each task based on how time-sensitive its work is
– Use semaphores or task notifications to coordinate between tasks safely, particularly for shared resources like the I2C bus or display
– Keep ISRs minimal, as covered in the Interrupts and ISRs training material — let tasks handle the actual logic
[img: Bonus Module Picture 1]