Текстовое программирование для 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();
}
{% hint style="info" %} Полное описание функций на английском, доступных при программировании.
В качестве примеров можно использовать код, генерируемый по диаграммам самой средой TRIK Studio. {% endhint %}