---
title: "Навигейшн"
description: "Чем мне нравится НХТ, так это тем, что вместо никому не нужного \"Хелло ворлд\" мы получаем вполне реа..."
author: "nxtmindstorm"
published: "2010-05-05T02:30:09+00:00"
modified: "2010-05-05T02:30:09+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/navigeyshn-44424"
markdown_url: "https://yvision.kz/post/navigeyshn-44424/markdown"
site_name: "Yvision.kz"
---

# Навигейшн

> Чем мне нравится НХТ, так это тем, что вместо никому не нужного "Хелло ворлд" мы получаем вполне реа...

Чем мне нравится НХТ, так это тем, что вместо никому не нужного "Хелло ворлд" мы получаем вполне реальное действие от программы. В планах было реализовать бота, который бы перемещался в пространстве не напарываясь на преграды.

Язык БрикСи является обрезанным Си для этой серии Лего, поэтому разобраться в нем не составило никакого труда.

Алгоритм программы таков.

##### Бесконечный цикл { Сканируем пространство: -Считываем показатель ультразвука -Сохраняем параметр -Поворачиваем на 45 градусов

##### Производим действие 8 раз ( 8 х 45 = 360)

##### Находим максимум из полученного массива.

##### Передвигаемся дальше: -Разворачиваемся до указанного максимума -Едем вперед }

Сам код

##### #define US_PORT S4 //Переменная для номера порта с сенсором ультразвка

##### task main() // Тело программы { int max = 0; //Назначаем переменные int maxnumber = 0; unsigned int maxnumbert = 0; long variation[]; ArrayInit(variation, 0, 8);

##### SetSensorLowspeed(US_PORT); //Говорим голове, где находится сенсор

##### //Открываем цикл while(1) { //Скидываем значения maxnumber = 0;

##### //Собираем информацию

##### for(int i = 0; i  maxnumber) { maxnumber = variation[i]; maxnumbert = i; } }

##### //Разворачиваем перед открытым пространством OnFwd(OUT_B, 75); Wait((7 - maxnumbert) * 1000); Off(OUT_B);

##### //Едем вперед OnFwd(OUT_BC, 75); Wait(3000); Off(OUT_BC); } }

Мы не индусы и нам не платят за строчку, поэтому упрощаем основную часть до такого вида:

##### for(int i = 0; i  maxnumber) { maxnumber = variation[i]; maxnumbert = i; }

##### Wait(50); OnRev(OUT_B, 75); Wait(1000); Off(OUT_B); Wait(1000); }

Очень много тонкостей, над которыми нужно поработать. Например, сохранение в файл для записи пути, чтобы в экстренный случай вернуться обратно, быстрые повороты и т.д.

---

Source: [https://yvision.kz/post/navigeyshn-44424](https://yvision.kz/post/navigeyshn-44424)