NXC sensory
Czujnik dotyku (touch sensor)
Na początek prosty przykład wzięty wprost z dokumentacji.
task main() { SetSensor(IN_1,SENSOR_TOUCH); OnFwd(OUT_AC, 75); until (SENSOR_1 == 1); Off(OUT_AC); }
SetSensor(IN_1,SENSOR_TOUCH)
Podajemy do którego portu podłączyliśmy sensor i jakiego jest typu. W naszym przypadku podpięliśmy czujnik dotyku do portu 1.
until (SENSOR_1 == 1)
wcześniejsza instrukcja, czyli jazda robota, będzie się odbywała dopóki (until) nie zostanie wciśnięty przycisk na czujniku dotyku (1 oznacza wciśnięty przycisk, 0 nie wciśniety).
Robot będzie jechał do przodu tak długo, dopóki nie zostanie wciśnięty przycisk na czujniku.
task main() { SetSensor(IN_1,SENSOR_TOUCH); while (true) { if (SENSOR_1 == 1) Off(OUT_AC); else OnFwd(OUT_AC, 75); } }
Robot będzie jechał, jeśli przycisk nie jest wciśnięty, jeśli zostanie wciśnięty robot się zatrzyma. Jak widać jest to pętla, której warunek zawsze jest spełniony, więc jeśli przycisk zostanie zwolniony to robot będzie jechał dalej.
task main() { SetSensorTouch(IN_1); OnFwd(OUT_AC, 75); while (true) { if (SENSOR_1 == 1) { OnRev(OUT_AC, 75); Wait(300); OnFwd(OUT_A, 75); Wait(300); OnFwd(OUT_AC, 75); } } }
SetSensorTouch(IN_1)
Do uruchomiania czujnika dotyku użyliśmy innego nić wcześniej polecenia.
Robot będzie jechać do przodu. Jeśli przycisk zostanie wciśnięty, robot cofnie się OnRev(OUT_AC, 75)
, następnie skręci OnFwd(OUT_A, 75)
i ruszy naprzód OnFwd(OUT_AC, 75)
. Jak widać zostało to wprowadzone w pętli, dlatego jeśli robot ruszy i będzie kolejna przeszkoda to będzie szukać wciąż wyjścia skręcając.