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.