Motor Por tiempo

Hola, me han pasado un skecht y me tira un error al revisarlo, soy novato en todo esto y no entiendo muy bien todo por ahora, bueh miren:
Me dieron esto:

const int MotorPin = 8; // Arduino pin going to transistor

void setup() {
pinMode(MotorPin, OUTPUT};
}

void loop() {
digitalWrite(MotorPin, HIGH); // Turn the motor on
delay(60000); // Wait 60 seconds
digitalWrite(MotorPin, LOW); // Turn motor off
delay(21600000UL - 60000UL); // Wait 5 hours and 59 minutes
}
Yo lo que quiero hacer es que un motor gire durante 1 minuto y que gire una sola vez cada 6 horas

Saludo !!!

LeandroTo no te compila tu codigo o sketch por que tienes un } al final de la linea (en el void setup) cuando debería haber un )

es decir debería quedar asi:

void setup() {
pinMode(MotorPin, OUTPUT);
}

Con respecto a los tiempos la verdad no se si te funcionara; sigo siendo un novato a pesar de llevar varios años en el mundo de Arduino. lee en las referencias las fuciones que tienen que ver con el tiempo (delay, millis, micros, delayMicroseconds); recuerda tambien que el uso del "delay" tiene sus inconvenientes y como dice las referencias de arduino.cc " el uso de delay() en un sketch tiene problemas importantes. Mientras se pausa el programa no se leen sensores, ni se hacen cálculos, ni puede haber manipulación de los pines."

Espero que mi poca ayuda te sirva por lo menos para corregir el error que te tira al compilarlo.

Tampoco soy experto, pero me pareció leer que dejar un delay tan prolongado, en tu caso de casi 6 horas, no es algo bueno.

Lo ideal sería usar algún reloj externo, o probar con la librería Time creo que es mejor dejar al código haciendo eso, que tenerlo en stand by por 6 horas.

Repito, no se cual sea la mejor solución, pero estoy seguro que un delay de 6 horas, no es bueno, ni tampoco preciso.

podrías hacer algo tipo reloj/crono y así programar cuando quieres que que se encienda, yo hice un crono con minutos segundos y decimas tal vez te ayude
solo tendras que implementarle cuando quieres que se conecte y cuando llegue a un tiempo determinado ponerlo a 0

int bot = 4;
int seg = 0;
int minut = 0;
int mil = 0;
long tiempo = 0;
long tiempo2 = 0;
int vuelta = 0;

void setup(){
Serial.begin (9600);
pinMode (bot, INPUT);
pinMode(13,OUTPUT);

}
void loop() {

tiempo = millis()-tiempo2;
//Calculo de los tiempos a mostrar
minut = (tiempo/60000);
seg = ((tiempo/1000)-(minut60));
mil = (tiempo-(minut
60000)-(seg*1000));

Serial.print(minut);
Serial.print(":");
Serial.print(seg);
Serial.print(":");
Serial.println(mil);
delay(300);

if(digitalRead(bot)==HIGH) {

tiempo2=millis();

digitalWrite(13,HIGH);

delay(200);

}
}