![]() |
![]() |
#31 | |
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 ![]() |
![]() Цитата:
1. Что такое сторожевой таймер и где об этом почитать? 2 Тогда можно пояснить на пальцах каким именно способом вы выравниваете курс? Неужели полным торможением одно стороны или еще тем паче остановкой и вращением на месте? 3. Как с точки зрения вашего богатого опыта: управлять поворотами заданием градуса поворота или не стоит усложнять? Последний раз редактировалось Paul_B; 06.12.2016 в 15:21. |
|
![]() |
![]() |
![]() |
#32 | |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Или в 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
Вес репутации: 9823 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Для более читаемого вида кода, есть теги
PHP код:
Код:
... Только не понятно в чем вопрос? |
![]() |
![]() |
![]() |
#35 |
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 ![]() |
![]() |
![]() |
![]() |
![]() |
#36 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
В каком месте?
|
![]() |
![]() |
![]() |
#37 |
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 ![]() |
![]() Последний раз редактировалось Paul_B; 06.12.2016 в 22:14. |
![]() |
![]() |
![]() |
#38 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
А как ты найдешь значения которые не совпали ни с чем?
|
![]() |
![]() |
![]() |
#39 |
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 ![]() |
![]() |
![]() |
![]() |
![]() |
#40 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
В начале кода в define
PHP код:
|
![]() |
![]() |
![]() |
Здесь присутствуют: 6 (пользователей: 0 , гостей: 6) | |
|
|