Текстовое программирование для LEGO NXT осуществляется на языке C с использованием макросов и функций из библиотеки ECRobot.
Общая структура программы:
Сначала идёт подключение заголовочных файлов, используемых в программе (стандартные заголовочные файлы C и заголовочные файлы ECRobot).
Затем идёт объявление констант и переменных, используемых в программе.
За ними описываются функции ecrobot_device_initialize
и ecrobot_device_terminate
. Первая вызывается при запуске программы, вторая — при прекращении её работы. В них обычно выполняется инициализация и деинициализация датчиков, энкодеров и других устройств робота. По умолчанию в ecrobot_device_initialize
инициализируется генератор случайных чисел.
За ними идёт описание функции user_1ms_isr_type2
, которая вызывается каждую миллисекунду.
Затем идёт описание задачи, которая запускается на исполнение при старте программы: TASK (OSEK_Task_Number_0)
. Здесь, собственно, и выполняется большая часть программирования.
#include <string.h>#include "kernel.h"#include "kernel_id.h"#include "ecrobot_interface.h"#include "trik_studio_utils.h"#include <time.h>#include <stdlib.h>#include <stdio.h>#include <stdarg.h>#include <math.h>U32 __interpretation_started_timestamp__ = 0;static const float pi = 3.14159265;void ecrobot_device_initialize(void){srand(systick_get_ms());}void ecrobot_device_terminate(void){}/* nxtOSEK hook to be invoked from an ISR in category 2 */void user_1ms_isr_type2(void){}/* Main task */TASK(TASK_MAIN){__interpretation_started_timestamp__ = systick_get_ms();TerminateTask();}
Полное описание функций на английском, доступных при программировании.
В качестве примеров можно использовать код, генерируемый по диаграммам самой средой TRIK Studio.