Inserir timer em um botão

Legal!

Essa linha é inútil.

  int start=digitalRead(botao);

Se quiser zerar o "timer" após executar uma vez a função alarma(), adicione um "break" no "while".

   if((millis() - millis_antes) > 3000){
   alarma();
   break;
   }
   }

Se o número for menor que 256 é melhor usar "const byte" neste caso:

int Led_red = 5;        
int Led_green = 3;
int botao = 4;

Abraço.