 
     for (unsigned i = 0; i < numIterations; ++i)
     {
-        sModeButton.update();
-        if (sModeButton.fallingEdge())
+        if (sModeButton.process())
         {
             sRunningMode = !sRunningMode;
+            Serial.print("Running Mode: ");
+            Serial.println(sRunningMode ? "manual" : "automatic");
             return true;
         }
         delay(sSleepTime);

{
    while (true)
    {
        const unsigned current = sCurrentStep;
        sCurrentStep = (sCurrentStep + 1) & 0x7;
        digitalWrite(sPins[current],        LOW);
        digitalWrite(sPins[sCurrentStep],   HIGH);
        if (yield(1000))
        {
            reset();

{
    for (byte i = 0; i < 8; ++i)
    {
        digitalWrite(sOutputPins[i], LOW);
    }
}

void updatePins(byte inPrevious)
{
    digitalWrite(sOutputPins[inPrevious],   LOW);
    digitalWrite(sOutputPins[sCurrentStep], HIGH);
    Serial.print("Pin ");
    Serial.println(sCurrentStep + 1);
}

// -----------------------------------------------------------------------------
