Is setting clock divider worth changing on delay() to save power?
Reducing the CPU frequency should work, but I would expect better
savings by sleeping during the busy loop:

#include &lt;avr/sleep.h&gt;

void sleepy_delay(uint32_t duration)
{
    uint32_t start = millis();
    while (millis() - start &lt; duration) {
        sleep_mode();
    }
}


Note that the sleep will be interrupted at least on every Timer 0
overflow interrupt, which happens every 1024&nbsp;µs (that's what
increments the value returned by millis()), so there is no risk of
oversleeping. You could add some power_*_disable() calls for better
savings.