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.
Code Block |
---|
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ä.
Code Block |
---|
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.
Code Block |
---|
task main() { nMotorEncoder[motorB] = 0; nMotorEncoder[motorC] = 0; while(nMotorEncoder[motorB] < 1800) { motor[motorC] = 50; motor[motorB] = 50; } } |