Tämä tarkistaa alussa ollaanko alkupisteessä, jos ei niin siirty sinne
[code]
#define MOOTTORI_PINNI 2
#define MOOTTORIN_SUUNTA_PINNI 3
#define KYTKIN_PINNI 4
#define ALKUPISTE_PINNI 5
void setup() {
// Ohjauspinni moottorille
pinMode(MOOTTORI_PINNI,OUTPUT);
// ohjauspinni moottorin pylörimissuunnan valitsemiselle
pinMode(MOOTTORIN_SUUNTA_PINNI,OUTPUT);
// inputpinnit kytkimille
pinMode(KYTKIN_PINNI,INPUT);
pinMode(ALKUPISTE_PINNI,INPUT);
// Moottori pois päältä
digitalWrite(MOOTTORI_PINNI,LOW);
// suunta “eteenpäin”
digitalWrite(MOOTTORIN_SUUNTA_PINNI,LOW);
// Käynnistyessä tarkastetaan ollaanko alkupisteesä
// jos ei, siirrytään sinne
if (digitalRead(ALKUPISTE_PINNI)==false)
{
ajeleAlkuun();
}
}
void odotaTunti()
{
// Odotellaan tunti, varmaan parempiakin tapoja
for (int i=0;i<3600;i++){delay(1000);}
}
void siirrySeuraavaanPisteeseen()
{
// Moottori käyntiin
digitalWrite(MOOTTORI_PINNI,HIGH);
// Odotellaan että kytkin avautuu
while (digitalRead(KYTKIN_PINNI)==true){delay(100);}
// Odotellaan että kytkin sulkeutuu
while (digitalRead(KYTKIN_PINNI)==false){delay(100);}
// Moottori seis
digitalWrite(MOOTTORI_PINNI,LOW);
}
void ajeleAlkuun()
{
// käännetään moottorin pyörimissuunta
digitalWrite(MOOTTORIN_SUUNTA_PINNI,HIGH);
// moottori käyntiin
digitalWrite(MOOTTORI_PINNI,HIGH);
// Odotetaan että alkupisteessä
while (digitalRead(ALKUPISTE_PINNI)==false){delay(100);}
// moottori seis
digitalWrite(MOOTTORI_PINNI,LOW);
// käännetään moottorin pyörimissuunta ns. normaaliksi
digitalWrite(MOOTTORIN_SUUNTA_PINNI,LOW);
}
void loop() {
// Ajatellaan että klello on NYT 8
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 9
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 10
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 11
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 12
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 13
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 14
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 15
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 16
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 17
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 18
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 19
odotaTunti();
siirrySeuraavaanPisteeseen();
// nyt kello on 20
odotaTunti();
odotaTunti();
odotaTunti();
odotaTunti();
// nyt kello on 24
// Siirrytään alkuasentoon
ajeleAlkuun();
// Ollaan alkupisteessä, odotetaan että kello tulee 8
odotaTunti();
odotaTunti();
odotaTunti();
odotaTunti();
odotaTunti();
odotaTunti();
odotaTunti();
odotaTunti();
}[/code]