Subversion Repositories svnkaklik

Rev

Go to most recent revision | Details | Last modification | View Log

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