fazer pausa ate que determinada entrada passe a LOW

Já agora... e desculpa se o tom não for o mais adequado...

Tira esse delay() daí. Isso é uma má prática. (pensando nisso, acho que talvez valha a pena fazer um tutorial sobre porque não usar um delay. :\

Se quiseres atingir o mesmo resultado, faz assim:

unsigned long now=0, then=0;

while(digitalRead(switchPin2) == HIGH);//Nao faz nada se entrar neste loop
if (digitalRead(switchPin2) == LOW)
  {
  digitalWrite(motortubo, HIGH); // liga o motor
  then = millis();
  }
now = millis();
if ((now - then) > 6000) {
  digitalWrite(motortubo, LOW); // desliga o motor do tubo
  }

Assim o teu código não fica "preso" naquele delay.
Reparei que tens outro problema com a porca... mas não percebi o que era. No entanto, isso pode ser resolvido na nova condicão que coloquei.