Reaali Robootika.COM

NXT robotimaailm ja programmeerimine C-keeles

Robotid 2 osa jätk

Nüüd ma kirjutan sama päeva roboteid edasi.

Täna ma tegin veel kaugus, värvi, valgus ja puute anduri lugemis ehk nende numbrite mis neil seal on kuvamis testi. Need numbrid mis saavad sealt tulla kuvasin ma ekraanile ja sealt siis lugesin.

Kaugus anduri kuvamis test:

task main(){
SetSensorLowspeed(S2);
while(true){
NumOut(50, LCD_LINE3, SensorHTColorNum(S2));
Wait(500);
ClearScreen();
}
}

SetSensorLowspeed(S2); defineerin kaugus anduri
NumOut(50, LCD_LINE3, SensorHTColorNum(S2)); kirjutan ekraanile kaugus anduri kauguse sellest asjast mida kaugus andur praegu näeb kõige lähedamal.
Wait(500); ClearScreen(); Ootamine selles et jõuaksin lugeda numbrit ja ClearScreen, et ekraanilt kustuks eelmine number ja oleks parem lugeda.
Valgus anduril tegin ma SetSensorLowspeedi asemel SetSensorLight värvi anduril oli sama ja puute anduril tegin SetSensorTouch. Viimane ning kõige pikem ja raskem oli robot mis läheb siis käima kui kahte puuteandurit korraga vajutada ja siis kui on vajutatud läheb parema nupuga paremale vasaku nupuga vasakule ja kui uuesti vajutada kahte korraga jääb seisma:

task main(){
bool Bumped2Buttons;
//defineerin nuppude vajutuseks muutuja
SetSensorTouch(S1);
SetSensorTouch(S2);
while(true){
  Bumped2Buttons = FALSE;
  //algväärtustan muutuja et teine tsükkel käivituks
  Wait(500);
  //Robot ootab pool sekundit et robot jääks seisma
  until(Sensor(S1)== 1);
  until(Sensor(S2)== 1);
  until(Sensor(S1)== 0);
  until(Sensor(S2)== 0);
  //vajutan mõlemat sensorit ja lasen lahti samal ajal et 
robot hakkaks sõitma
  while(!Bumped2Buttons){
    if (Sensor(S1)== 1){
       OnRevSync(OUT_BC, 50, -10);
       //Robot keerab kergelt paremale
    }
    else if(Sensor(S2)== 1){
       OnRevSync(OUT_BC, 50, 10);
       //Robot keerab kergelt vasakule
    }
    else{
       OnRev(OUT_BC, 50);
    }
    if(Sensor(S1)== 1 && Sensor(S2)== 1){

//Robot jääb siis seisma kui on vajutatud kahte nuppu korraga Bumped2Buttons = TRUE;

    }

  }
 

Off(OUT_BC);

}

}

Meil tekkis selle programmiga igasuguseid probleeme. Üks oli näiteks see, et kui ma vajutasin kahte nuppu korraga siis jäi robot alles siis seisma kui nupud olid all ehk kui ma oleksin tahtnud, et robot jääks seisma siis kui ma olen vajutanud nupud alla ja lahti lasknud siis ma oleksin pidanud olema väga kiire. Kui mu isa mõtles et see peab ootama enne kui see lahti laseb siis mulle kohe turgatas et me peaksime selle Waiti sinna panema. Tegime ära ja töötas väga hästi.
Kui meil veel seal alguses alguses ei olnud algväärtustamist vaid oli kohe muutuja juures siis ei jäänud see seisma. Mu isa sai kohe aru milles probleem kuid mina pidin natuke mõtlema ja alles siis turgatas mullegi pähe.

Add comment

Loading