Изменил схему для 10м и 100м дистанции, так точнее. по вашей формуле работает, но есть в момент перехода 360-0гр небольшой скачок (зеленная линия).
10м и 100м это условно. Сильно зависит от частоты pll. например 10м или 5м туда обратно, реально получается 7,4 или по 3,7м. туда обратно. Основная цель сейчас сделать переменную которая будет иметь пропорциональную зависимость от расстояния. А расстояние потом можно будет привязать калибровкой.
Наверно буду вычислять зависимость двух переменных. Мысль такая: устанавливаю объект нажимаю кнопку, передвигаю на 2м и снова нажимаю кнопку. Когда нажимаю вторую кнопку рассчитается множитель.
Цитата
uint32t tempA10,tempA100;
float mulA;
if(button1)
{
tempA10 = A10;
tempA100=A100;
}else if(button2){
mulA = (A10 - tempA10)/(A100 - tempA100);
}
а потом вот так, как вы порекомендовали.
DBRAM.StructurData.reservuint32[3]% только вместо 10 использовать mulA.
Если еще есть мысли у кого, как еще можно сделать скажите плз.
По вашей формуле, только рассчитываю в мк.
Код
//DBRAM.StructurData.reservuint32[3] 100м // DBRAM.StructurData.reservuint32[1] 10м
DBRAM.StructurData.reservfloat[1] = (float) ((DBRAM.StructurData.reservuint32[3]*10) - (DBRAM.StructurData.reservuint32[3]*10) %10)+(DBRAM.StructurData.reservuint32[3]%10 + DBRAM.StructurData.reservuint32[1])/2;