Regarding your 'millis()'-based timing. Your That website example's method will lead to errors when 'millis()' rolls over.
It's far better to use subtraction:-
if(millis() - prevMillis >= period)
{
//Do something here
prevMillis += period;
}