![]() |
|
|
#31 | |
|
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 ![]() |
Цитата:
1. Что такое сторожевой таймер и где об этом почитать? 2 Тогда можно пояснить на пальцах каким именно способом вы выравниваете курс? Неужели полным торможением одно стороны или еще тем паче остановкой и вращением на месте? 3. Как с точки зрения вашего богатого опыта: управлять поворотами заданием градуса поворота или не стоит усложнять? Последний раз редактировалось Paul_B; 06.12.2016 в 15:21. |
|
|
|
|
|
|
#32 | |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Или в datasheet на контреллер 2-без всяких остановок, на ходу 3-если Вы планируете наделить робота автономной навигацией, то тогда следует высчитывать градус |
|
|
|
|
|
|
#33 |
|
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 ![]() |
Более оптимальный алгоритм поиска совпадений
Код:
//**************Поиск макс повторяющегося элемента в массиве ****************************
uint16_t find_similar(uint16_t *buf, uint8_t size_buff, uint8_t range)
{
uint8_t maxcomp=0; //счётчик максимального количества совпадений
uint16_t mcn=0; //максимально часто встречающийся элемент массива
uint16_t comp; //временная переменная
uint8_t i,j,n; //счётчик совпадении
uint8_t i_numb, i_mas[256]; // индекс интервала и показатель принадлежности к заданному интервалу отклонений
range++; //допустимое отклонение
for (i=0; i<256; i++) i_mas[i]=0; // задаем начальные нули. чтобы сэкономить можно задать static uint8_t i_mas[256];
i_numb=1; // задаем номер интервала. если измерение будет лежать в этом интервале, то в индексном массиве присваиваем этот номер
for (i=0; i<size_buff; i++)
if(i_mas[i]==0) // если элемент не попал ни в чей интервал
{
comp=buf[i]; //кладем элемент массива в comp
n=0; //счётчик совпадении
for (j=i; j<size_buff; j++)
if(i_mas[j]==0) // если раньше этот элемент не попал в какой-то интервал, то его рассматриваем
{
if (buf[j]>comp-range)
if(buf[j]<comp+range) {i_mas[j]=i_numb; n++;}
}
if (n > maxcomp) //если число повторов больше чем было найдено ранее
{
maxcomp=n; //сохраняем счетяик повторов
mcn=comp; //сохраняем повторяемый элемент
}
i_numb++; // тут в итоге будет количество непересекающихся интервалов измерений
}
return mcn;
}
Последний раз редактировалось Paul_B; 06.12.2016 в 22:05. |
|
|
|
|
|
#34 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Для более читаемого вида кода, есть теги
PHP код:
Код:
... Только не понятно в чем вопрос? |
|
|
|
|
|
#35 |
|
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 ![]() |
|
|
|
|
|
|
#36 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
В каком месте?
|
|
|
|
|
|
#37 |
|
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 ![]() |
Последний раз редактировалось Paul_B; 06.12.2016 в 22:14. |
|
|
|
|
|
#38 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
А как ты найдешь значения которые не совпали ни с чем?
|
|
|
|
|
|
#39 |
|
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 ![]() |
|
|
|
|
|
|
#40 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
В начале кода в define
PHP код:
|
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|