como parar motor com micro switch

Usa as tags de código...

int switchPin = 2;
int motor = 5;
unsigned char switch_antes = 0; 

void setup() {
pinMode(motor, OUTPUT);
pinMode(switchPin, INPUT);

digitalWrite(switchPin, HIGH);
}

void loop() {

if (ligar_o_motor == TRUE) {
digitalWrite(motor, HIGH); // Vai ligar o motor  
} //isto está aqui porque o código do Arduino vai correr imensas vezes até o motor parar. Logo precisas duma condição para o motor iniciar. Não faço ideia qual seja. 

  if (digitalRead(switchPin) == LOW) {
     //switch detectado
     switch_antes = 1; 
     }

if (digitalRead(switchPin) == HIGH && switch_antes == 1) { o motor já avançou o switch, pode parar.   
   digitalWrite(motor, LOW);   // o motor para
   switch_antes = 0; //pronto para outro ciclo. 
   }

Assim garantes que o motor para após o switch e não precisas de temporização.

Se pretenderes uma temporização:

int switchPin = 2;
int motor = 5;
unsigned long tempo = 0; 
unsigned char detecta = 0;

void setup() {
pinMode(motor, OUTPUT);
pinMode(switchPin, INPUT);

digitalWrite(switchPin, HIGH);
}

void loop() {

if (ligar_o_motor == TRUE) {
digitalWrite(motor, HIGH); // Vai ligar o motor  
} //isto está aqui porque o código do Arduino vai correr imensas vezes até o motor parar. Logo precisas duma condição para o motor iniciar. Não faço ideia qual seja. 

  if (digitalRead(switchPin) == LOW) {
     //switch detectado
     tempo = millis(); 
     detecta = 1;
     }

if (millis() - tempo >= DELAY && detecta == 1) {
      digitalWrite(motor, LOW);   // o motor para
      tempo = 0; 
      detecta = 0; 
   }

Não testei nem compilei, mas a lógica deve estar correcta.