9. Внутренние функции

Программа RobotC использует синтаксис языков группы СИ. Для пошагового освоения элементов программирования познакомимся с элементарными программами. Данные программы представлены в Интернете и в книгах по роботам NXT и EV3.
Вывод информации на дисплей робота.

task main
{
nxtDisplayTextLine(0, «Hello robot» );
wait1Msec(5000);
}

Команда выведет в строке с индексом «0» сообщение на 5 секунд. «task main» функция запуска программы. В первых примерах весь код необходимо писать в теле( { тело } ) функции.
Управление моторами.

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

motor[] это массив из трех элементов, он определяет состояние мотора. В нашем примере мотор на порту «С». Значение скорости определяется в диапазоне от -100 до 100. Мотор будет работать пока не подать команду стоп или пока не кончиться программа.
Движение робота вокруг своей оси в течении 10 секунд.

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

Встроенный датчик оборотов.
task main
{
motor[motorC]=50;
nMotorEncoder[motorC]=1000;
}

Движение мотора со скоростью 50 на 1000 градусов. Есть второй метод nMotorEncoderTarget, он обеспечивает остановку мотора при повороте на заданное число градусов.

task main
{
nMotorEncoderTarget[motorC]=1000;
motor[motorC]=50;
nMotorEncoderTarget[motorC]=0;
motor[motorC]=-50;
}


Синхронизация моторов.

task main
{
nSincedMotors=synchBC;
nSyncedTurnRatio=-100;
motor[motorC]=50;
nMotorEncoderTarget[motorC]=1000;
}

В режиме синхронизации можно управлять только одним двигателем, второй будет выполнять аналогичные команды. Команда nSyncedTurnRatio позволяет изменить соотношение движения синхронизированных моторов изменяется от -100 до 100(минус означает противоположное направление).
Вывод на дисплей
Базовые методы вывода на дисплей

nxtClearPixel(50, 32); //очистка пикселя по координатам
nxtDisplayBigStringAt(0, 31, «%d, %d», 1, 2); // отображение на дисплее большими сим.текст
nxtDisplayCenteredBigTextLine(3,»%s,»privet»); //отображение текста по центру расчета высоты
nxtDisplayString(3, «%s», «Stroka»); //отображение строки на третей линии
nxtDisplayStringAt(0, 0, «Theory»); // отображение строки по указанным координатам
Основные команды отрисовки базовых фигур.

task main() {
nxtFillEllipse (0,50,90,0);
wait1Msec (1000);
nxtDisplayBigStringAt(30,40,»Hello!»);
wait1Msec (1000);
}

Программа нарисует залитый Элипс на секунду после этого внутри появляется слово.

Важный шаг это правельно использовать систему координат дисплея. Экран — 100 пикселей в ширину и 64 пикселя в высоту. Каждому пикселю дано уникальное положение (xPos, yPos). Отсчет производиться от левого нижнего угла экрана и имеет координаты (0,0). Координаты, которые являются за пределами этого диапазона, не обнуляются, но не будут видны.
Рисование окружности по координатам

nxtDrawCircle(20, 50, 25); //окружность даиметром 25px.

nxtDrawEllipse(20, 50, 60, 25); // элипс с диаметрами 60px и 25px

nxtDrawRect(20, 50, 60, 25); //прямоугольник со сторонами 60 и 25

nxtEraseEllipse(20, 50, 60, 25); //Стрирает Элипс по указанным координатам

nxtEraseLine(20, 50, 60, 25); //стирает линию между указанными координатами

nxtEraseRect(20, 50, 60, 25); // очистка прямоугольника

nxtFillRect(20, 50, 60, 25); // залитый прямоугольник
nxtInvertLine(20, 50, 60, 25); //
Функции кнопок
Проверяет какая кнопка нажата

task main()
{
if (nNxtButtonPressed == 1)
{
nxtDisplayCenteredBigTextLine(3, «RIGHT ARROW»);
}
}

0 = Gray Rectangle button.

1 = Right Arrow button.

2 = Left Arrow button.

3 = Orange Square button.

Сохраняет номер задачи и если задача соответствует, то выполняется.

task main()
{
nNxtButtonTask = 2;
}

Программирует кнопку Exit, но вы всегда можете выйти отменив задание

task main()
{
nNxtExitClicks = 3;
}

Работа со звуком
В RobotC прошивки очереди до 10 звуковых элементов для воспроизведения. RobotC проигрывает несжатые и сжатые звуковых файлы. В программе RobotC предоставлены команды для сжатия звуковых файлов. Она находится в меню «Windows -> NXT Brick -> File Management».
Функция, которая указывает должны ли команды быть приняты или отклонены.

bPlaySounds = true;
bPlaySounds = false;

Флаг активности динамика

while(bSoundActive)
{
// команды
}

1/14