Плавный поворот сервы на азимут. и фикс 359-0 град.
- Войдите на сайт для отправки комментариев
Сб, 05/06/2021 - 19:29
while (flag) { GPSStatys(); // NEO-6m ackData[1] - GPS курс, ackData[2] - дистанция, ackData[3] - азимут, ackData[5] - КМ/ч if (millis() - timeoutAV >= 50) { timeoutAV = millis(); target_on = false; StatCompass(); // Цыфровий компас ackData[4] - курс } NRF24L01(); if (recieved_data[3] > 10) { flag = false; motorspeed = 28; } if (ackData[2] > 5) { servo2.write(map(180, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); servo3.write(map(0, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); } if (ackData[2] < 2) { if (is_one2) { flag = false; motorspeed = 28; is_one2 = false; } if (recieved_data[5] == 1) { DISTANCE_LAT = eeprom_read_float(0); DISTANCE_LNG = eeprom_read_float(4); if (is_one3) { for (int twoi = 180; twoi > 30; twoi--) { servo2.write(map(twoi, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); } for (int threei = 0; threei < 150; threei++) { servo3.write(map(threei, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); } } target_on = true; if (GPS_ON) { is_one2 = true; GPS_ON = false; } } else { is_one2 = true; } } else { // вычисление угола поворота на азимут if ( ackData[4] > ackData[3] + 40 || ackData[4] < ackData[3] - 40) { limitspeed = 50; SpeedMotor(); if ( ackData[4] > ackData[3] ) { /// отклонение большое + - 40 if (is_one0) { turn = 80; is_one0 = false; } is_one1 = true; turn++; if (turn >= 100) { turn = 100; } motor.write(map(motorspeed, 0, 255, 800, 2550)); servo1.write(map(turn, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); } else { if (is_one1) { turn = 80; is_one1 = false; } is_one0 = true; turn--; if (turn <= 60) { turn = 60; } motor.write(map(motorspeed, 0, 255, 800, 2550)); servo1.write(map(turn, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); } } else if ( ackData[4] > ackData[3] + 20 || ackData[4] < ackData[3] - 20) { /// отклонение средние + - 20 limitspeed = 60; SpeedMotor(); if ( ackData[4] > ackData[3] ) { if (is_one0) { turn = 80; is_one0 = false; } is_one1 = true; turn++; if (turn >= 90) { turn = 90; } motor.write(map(motorspeed, 0, 255, 800, 2550)); servo1.write(map(turn, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); } else { if (is_one1) { turn = 80; is_one1 = false; } is_one0 = true; turn--; if (turn <= 70) { turn = 70; } motor.write(map(motorspeed, 0, 255, 800, 2550)); servo1.write(map(turn, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); } } else { /// отклонение малое + - 5 limitspeed = 70; SpeedMotor(); if ( ackData[4] > ackData[3] ) { if (is_one0) { turn = 80; is_one0 = false; } is_one1 = true; turn++; if (turn >= 85) { turn = 85; } motor.write(map(motorspeed, 0, 255, 800, 2550)); servo1.write(map(turn, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); } else { if (is_one1) { turn = 80; is_one1 = false; } is_one0 = true; turn--; if (turn <= 75) { turn = 75; } motor.write(map(motorspeed, 0, 255, 800, 2550)); servo1.write(map(turn, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH)); } } } }
На это хватило ума..
Поворот сервы ограничено 60-100 град. Нужно чтобы servo1(правильней) выравнивало угол поворота на азимут также в этом примере есть недостаток когда азимут 359-0 то кораблик кружиться на месте в одну сторону потому-что на практике азимут меняется 350-10 к примеру, и кораблик делает полный разворот. Как пофиксить незнаю.. есть у кого какие предложение ?
А предложения должны быть от нас !? Может вы ошиблись веткой ? Тут обычно предлагает заказчик... А исполнители, очень часто его посылают, потому что заказчик хочет за копейки... А вы вооще.... бесплатно !?
Предложение:
можно за доширак.
Как пофиксить незнаю.. есть у кого какие предложение ?
Учитывать историю и скорость изменения, видимо.
А предложения должны быть от нас !? Может вы ошиблись веткой ? Тут обычно предлагает заказчик... А исполнители, очень часто его посылают, потому что заказчик хочет за копейки... А вы вооще.... бесплатно !?
Дак я и сам программирую, а заказчик возможно не знает цен.. можно например вначале темы закрепить количество строк == рублей или по чем-то измерять == цену.. так и спрашиваю, а заказчик полюбому будет хотеть за копейки. "Хотеть не вредно, вредно не хотеть" как говориться. Вот оценивают например 3 задачи https://kwork.ru/software/9632118/vypolnenie-raboty-na-c-ili-java 500р. https://kwork.ru/software/355630/napishu-sketch-dlya-arduino
Предложение:
можно за доширак.
500р ? Или сколько..
Хапнуть подряд любой ценой, а потом искать таджиков для выполнения - классика жанра))
Так программист просит помощи программиста )) Или какой-то дед изучает программирование или студент пишет курсовую.. Ментор, ментор гдеже ты.. найдись.
Так программист просит помощи программиста ))
1. Помогают - котенку, когда у него коготок в батарее или занавеске застрял. Все остальное - услуга. Услуги оказывают за вознаграждение (разное) или по дружбе. Я тебя знаю, родное сердце? ;))
2. Нельзя ли в теме про кораблик использовать морские навигационные термины, а не "азимут"? У комбинации судна и объекта есть три слова: курс, пеленг и курсовой угол. Так что тебе про желаемое направление известно его пеленг или курсовой угол?
На всякий случай: Курс - угол между севером и направлением движения, Пеленг на объект - угол между севером и направлением на объект с центром в месте расположения судна, Курсовой угол (левого или правого борта) - угол между направлением движения и направлением на объект. А азимуты, они все у геодезистов. ;))
Так программист просит помощи программиста ))
1. Помогают - котенку, когда у него коготок в батарее или занавеске застрял. Все остальное - услуга. Услуги оказывают за вознаграждение (разное) или по дружбе. Я тебя знаю, родное сердце? ;))
Сейчас познакомимся пингвинчик ты мой ))) Разве на форуме не могут что-то подсказать или тут только предоставляют свои услуги.. например
Так программист просит помощи программиста ))
2. Нельзя ли в теме про кораблик использовать морские навигационные термины, а не "азимут"? У комбинации судна и объекта есть три слова: курс, пеленг и курсовой угол. Так что тебе про желаемое направление известно его пеленг или курсовой угол?
Можно и морские навигационные термины. Мне известно мой курс и пеленг на объект я не понимаю как держать через серво истинные направления на объект если есть какое либо отклонение.. и как быть с 0-359 град. например пеленг 359 град. на практике есть отклонения ветер и волны тоисть кораблик подумает сделать разворот если будет 0 град.
Сейчас познакомимся
Нет мотивации. Сорри.
Можно и морские навигационные термины. Мне известно мой курс и пеленг на объект я не понимаю как держать через серво истинные направления на объект если есть какое либо отклонение.. и как быть с 0-359 град. например пеленг 359 град. на практике есть отклонения ветер и волны тоисть кораблик подумает сделать разворот если будет 0 град.
ТЫ опять ИП с КУ перепутал. Истинный пеленг - угол между СЕВЕРОМ И ОБЪЕКТОМ. Курсовой угол - между курсом и объектом. Тебе надо держать курс на объект? И кораблик "дурит" около 0° ? Так не принимай решений об изменении курса, пока не накопится ошибка в 5° или 10° . Тебе нужно записать лог на карточку и посмотреть статистику измерений, какое получится среднее отклонение.
А азимуты, они все у геодезистов. ;))
ага и, измеряется в РУМБах )))
Сейчас познакомимся
Нет мотивации. Сорри.
Можно и морские навигационные термины. Мне известно мой курс и пеленг на объект я не понимаю как держать через серво истинные направления на объект если есть какое либо отклонение.. и как быть с 0-359 град. например пеленг 359 град. на практике есть отклонения ветер и волны тоисть кораблик подумает сделать разворот если будет 0 град.
ТЫ опять ИП с КУ перепутал. Истинный пеленг - угол между СЕВЕРОМ И ОБЪЕКТОМ. Курсовой угол - между курсом и объектом. Тебе надо держать курс на объект? И кораблик "дурит" около 0° ? Так не принимай решений об изменении курса, пока не накопится ошибка в 5° или 10° . Тебе нужно записать лог на карточку и посмотреть статистику измерений, какое получится среднее отклонение.
ИП = ИК + КУ. Оно все связано между собой ИК = ИП − КУ, КУ = ИП − ИК. Ок, попробую ограничить.. но подход не правильный всё же..
Предложение:
можно за доширак.
ОПЯТЬ !?! Ты что с голоду пухнешь и делать нечего ? Давай найду тебе работы, за доширак.
ТС, программируешь сам - программируй и спрашивай в других темах с демонстрацией напрограммированного.
Пришел сюда искать исполнителя, сразу, забудь что ты программируешь. Приготовь деньги. Твои знания тебе УЖЕ не помогли, раз ты тут :)
Предложение:
можно за доширак.
ОПЯТЬ !?! Ты что с голоду пухнешь и делать нечего ? Давай найду тебе работы, за доширак.
ТС, программируешь сам - программируй и спрашивай в других темах с демонстрацией напрограммированного.
Пришел сюда искать исполнителя, сразу, забудь что ты программируешь. Приготовь деньги. Твои знания тебе УЖЕ не помогли, раз ты тут :)
Я и не говорил что не буду платить.. наоборот сюда сюда писал чтобы за это заплатить. Но я уже сделал пример то что нужно. но не понимаю как при courseroll = 350, azimuth = 10 сделать