Reaali Robootika.COM

NXT robotimaailm ja programmeerimine C-keeles

Tunnitöö: Explorer 1 ja 2 – maadeavastaja robot

Explorer

Ülesanne 1

Ehita BOT, millel on ees Ultrasonic kauguseandur.

Kirjuta programm, mille käigus robot sõidab otse kuni näeb ees seina 20 cm kaugusel. Seina nägemisel robot peatub, tagurdab ja keerab kas paremale või vasakule (valitakse juhuslikkuse meetodil, funktsiooniga Random()).

 

Ülesanne 2

Ehita BOT, millel on ees lülitiandur.

Kirjuta programm, mille käigus robot sõidab otse kuni lüliti vajutamiseni ehk seina vms takistuseni. Takistuse avastades robot peatub, tagurdab ja keerab kas paremale või vasakule (valitakse juhuslikkuse meetodil, funktsiooniga Random()).

 

Lahendus ülesannetele 1 ja 2

Mõlemad ülesanded on sarnased, erinedes ainult selle poolest, et ühel puhul keerab robot tagasi kauguseandurist saabuva signaali tõttu ning teisel juhul lülitist saabuva signaali tõttu.

Alljärgnevas näites on kasutatud switch-elementi, kuid selle võib asendada ka if-else lausega.

task main(){
/*
KAUGUS muutuja abil määrab robot kas peab tagasi sõitma
RAND muutuja abil määrab robot kas ta sõidab paremale või vasakule
*/
SetSensorLowspeed(S4);
int KAUGUS = 20;
int RAND;
while (TRUE){
      if (SensorUS(S4) < KAUGUS){          //Kui robot näeb seina lähedamal kui 20 cm siis ta sõidab tagasi
        RAND = Random(2);
        switch (RAND)
        {
          case 0:                          //Robot sõidab paremale
          RotateMotorEx(OUT_BC, 100, 335, -50, TRUE, TRUE);
          break;
          case 1:                          //Robot sõidab vasakule
          RotateMotorEx(OUT_BC, 100, 335, 50, TRUE, TRUE);
          break;
        }
      }
      else {
           OnRevSync(OUT_BC, 100, 0);      //Muidu sõidab robot edasi
      }
}
}

Add comment

Loading