Subversion Repositories svnkaklik

Rev

Rev 1 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 1 Rev 5
1
#define THRESHOLD  44
1
#define THRESHOLD  44
2
#define POJEZD     OUT_B
2
#define POJEZD     OUT_B
3
#define VYHAZ      OUT_C
3
#define VYHAZ      OUT_C
4
 
4
 
5
task main()
5
task main()
6
{
6
{
7
  PlaySound (SOUND_DOUBLE_BEEP);
7
  PlaySound (SOUND_DOUBLE_BEEP);
8
  Wait(500); // 5s podle pravidel
8
  Wait(500); // 5s podle pravidel
9
  SetSensor(SENSOR_1,SENSOR_LIGHT);   // senzor na caru modry
9
  SetSensor(SENSOR_1,SENSOR_LIGHT);   // senzor na caru modry
10
  SetSensor(SENSOR_2,SENSOR_LIGHT);   // senzor na caru cerveny
10
  SetSensor(SENSOR_2,SENSOR_LIGHT);   // senzor na caru cerveny
11
  SetSensor(SENSOR_3, SENSOR_TOUCH);  // poloha vyhazovadla
11
  SetSensor(SENSOR_3, SENSOR_TOUCH);  // poloha vyhazovadla
12
  SetSensorMode (SENSOR_3, SENSOR_MODE_PULSE); // koncak bude pocitat pulzy
12
  SetSensorMode (SENSOR_3, SENSOR_MODE_PULSE); // koncak bude pocitat pulzy
13
  while (true)
13
  while (true)
14
  {
14
  {
15
   // kazdych 10s dojed k care a zpet do vyckavaci pozice
15
   // kazdych 10s dojed k care a zpet do vyckavaci pozice
16
   PlaySound (SOUND_CLICK);
16
   PlaySound (SOUND_CLICK);
17
   start k_care;
17
   start k_care;
18
   Wait(1000); // 10s
18
   Wait(1000); // 10s
19
   stop k_care;
19
   stop k_care;
20
   stop radar;
20
   stop radar;
21
   stop cara;
21
   stop cara;
22
  }
22
  }
23
}
23
}
24
 
24
 
25
// udrazeni soupere, pokud drcnul do radaru nebo nas natlacil na caru
25
// udrazeni soupere, pokud drcnul do radaru nebo nas natlacil na caru
26
task utok()
26
task utok()
27
{
27
{
28
  stop radar;
28
  stop radar;
29
  stop cara;
29
  stop cara;
30
  PlaySound (SOUND_FAST_UP);
30
  PlaySound (SOUND_FAST_UP);
31
 
31
 
32
  SetPower (POJEZD+VYHAZ,OUT_FULL);        // plnou parou vpred
32
  SetPower (POJEZD+VYHAZ,OUT_FULL);        // plnou parou vpred
33
  OnFwd(POJEZD);
33
  OnFwd(POJEZD);
34
  OnRev(VYHAZ);
34
  OnRev(VYHAZ);
35
  ClearSensor (SENSOR_3);
35
  ClearSensor (SENSOR_3);
36
// tlac, dokud se radar 2x neotoci nebo je jeste videt cara
36
// tlac, dokud se radar 2x neotoci nebo je jeste videt cara
37
  while ( (2 > SENSOR_3) || (SENSOR_2 > THRESHOLD) );
37
  while ( (2 > SENSOR_3) || (SENSOR_2 > THRESHOLD) );
38
  Off(VYHAZ);
38
  Off(VYHAZ);
39
  Off(POJEZD);
39
  Off(POJEZD);
40
  
40
  
41
  start k_care;          // po odrazeni soupere se vrat do vyckavaci pozice
41
  start k_care;          // po odrazeni soupere se vrat do vyckavaci pozice
42
  stop utok;
42
  stop utok;
43
}
43
}
44
 
44
 
45
task k_care()  // najed do vyckavaci pozice
45
task k_care()  // najed do vyckavaci pozice
46
{
46
{
47
  SetPower (POJEZD,OUT_FULL);
47
  SetPower (POJEZD,OUT_FULL);
48
  OnRev (POJEZD);                  // dojezd k care
48
  OnRev (POJEZD);                  // dojezd k care
49
  while (SENSOR_2 < THRESHOLD);
49
  while (SENSOR_2 < THRESHOLD);
50
  OnFwd (POJEZD);
50
  OnFwd (POJEZD);
51
  SetPower (POJEZD,OUT_FULL);
51
  SetPower (POJEZD,OUT_FULL);
52
  OnFor (POJEZD, 30);              // popojed kus od cary
52
  OnFor (POJEZD, 30);              // popojed kus od cary
53
 
53
 
54
  PlaySound (SOUND_DOUBLE_BEEP);
54
  PlaySound (SOUND_DOUBLE_BEEP);
55
  start radar;
55
  start radar;
56
  start cara;
56
  start cara;
57
  start cara2;
57
  start cara2;
58
  stop k_care;
58
  stop k_care;
59
}
59
}
60
 
60
 
61
task cara() // hlidani natlaceni na caru
61
task cara() // hlidani natlaceni na caru
62
{
62
{
63
  while (SENSOR_2 < THRESHOLD); // utoc, kdyz nas neco dotlaci k care
63
  while (SENSOR_2 < THRESHOLD); // utoc, kdyz nas neco dotlaci k care
64
  start utok;
64
  start utok;
65
}
65
}
66
 
66
 
67
task radar()   // hlidani najeti do prostoru vyhazovace
67
task radar()   // hlidani najeti do prostoru vyhazovace
68
{
68
{
69
  OnFwd(VYHAZ);                    // roztoceni radaru
69
  OnFwd(VYHAZ);                    // roztoceni radaru
70
  SetPower (VYHAZ,OUT_FULL);
70
  SetPower (VYHAZ,OUT_FULL);
71
  OnFor(VYHAZ,50);
71
  OnFor(VYHAZ,50);
72
  SetPower (VYHAZ,OUT_LOW);        // snizeni vykonu po roztoceni
72
  SetPower (VYHAZ,OUT_LOW);        // snizeni vykonu po roztoceni
73
  while (true)
73
  while (true)
74
  {
74
  {
75
    ClearSensor (SENSOR_3);
75
    ClearSensor (SENSOR_3);
76
    OnFwd(VYHAZ);                  // stouchni do radaru na 400ms
76
    OnFwd(VYHAZ);                  // stouchni do radaru na 400ms
77
    Wait(40);
77
    Wait(40);
78
    Float(VYHAZ);                  // volnobeh
78
    Float(VYHAZ);                  // volnobeh
79
    ClearTimer (0);
79
    ClearTimer (0);
80
    while (0 == SENSOR_3) // testuje se, zda se do 700ms radar otoci
80
    while (0 == SENSOR_3) // testuje se, zda se do 700ms radar otoci
81
    {
81
    {
82
      if (Timer (0) > 7) start utok; // utoc, pokud je zablokovan radar
82
      if (Timer (0) > 7) start utok; // utoc, pokud je zablokovan radar
83
    }
83
    }
84
  }
84
  }
85
}
85
}
86
 
86
 
87
task cara2()    // hlidani cary ze strany "radaru"
87
task cara2()    // hlidani cary ze strany "radaru"
88
{
88
{
89
   while (SENSOR_1 > THRESHOLD);    // cekej na caru
89
   while (SENSOR_1 > THRESHOLD);    // cekej na caru
90
   stop radar;     // vsechno zastav
90
   stop radar;     // vsechno zastav
91
   stop cara;
91
   stop cara;
92
   stop k_care;
92
   stop k_care;
93
   stop utok;
93
   stop utok;
94
   Off(POJEZD);
94
   Off(POJEZD);
95
   Off(VYHAZ);
95
   Off(VYHAZ);
96
   start k_care;   // snaz se dojet k care na druhe strane
96
   start k_care;   // snaz se dojet k care na druhe strane
97
   stop cara2;
97
   stop cara2;
98
}
98
}