Moottorien ohjaaminen

Lego-robotin moottorit toimivat tilakoneena eli kun niille on kerran annettu nopeusohje, robotti muistaa sen kunnes annetaan uusi ohje. Moottorien nopeusohjeiden arvoalue on -100...100. Positiiviset nopeudet tarkoittavat koulun robottien tapauksessa nopeutta eteenpäin, negatiiviset nopeutta taaksepäin.

Esimerkki 1. Asetetaan moottorit B ja C täyteen nopeuteen eteenpäin. Robotti ajaa eteenpäin 10 sekunnin ajan.

task main()
{
    motor[motorB] = 100;
    motor[motorC] = 100;
    wait1Msec(10000);
}

Esimerkki 2. Moottorit voidaan ajaa haluttuun asemaan hyödyntäen nMotorEncoder ja nMotorEncoderTarget käskyjä.

task main()
{
  nMotorEncoder[motorB] = 0;
  nMotorEncoder[motorC] = 0;

  nMotorEncoderTarget[motorB] = 1800;
  nMotorEncoderTarget[motorC] = 1800;//laita kohteeksi aina nollasta eroava arvo, muuten moottori ei mene idle -tilaan

  motor[motorC] = 50;//muista, että kohteen ja nopeusasetuksen tulee olla samanmerkkisiä, muussa tapauksessa kohdetta ei saavuteta koskaan
  motor[motorB] = 50;

  while(nMotorRunState[motorB] != runStateIdle || nMotorRunState[motorC] != runStateIdle)
  {
    //tyhjä silmukka, jossa odotellaan, että moottorit ovat pysähtyneet
  }
}

Esimerkki 3. kohteen odottelu voidaan tehdä myös seuraavalla tavalla.

task main()
{
  nMotorEncoder[motorB] = 0;
  nMotorEncoder[motorC] = 0;

  while(nMotorEncoder[motorB] < 1800)
  {
    motor[motorC] = 50;
    motor[motorB] = 50;
  }
}
  • No labels
You must log in to comment.