roboforum.ru

Технический форум по робототехнике.

программа для диплома (help me)

Re: программа для диплома (help me)

в_фокусе » 24 май 2009, 15:59

Vooon писал(а):...
2. а где парсинг NMEA?
...

$HEHDT, X.X,T*hh<CR><LF>

$- начало предложения.
HEHDT - служебная инфа говорящая об отправителе и его режиме.
X.X- КУРС! это что нам надо ...
дальше служебн инфа...

blindman писал(а):1. Вычислить по 90 значений синуса и косинуса, записать в таблицы, угол преобразовать в целое, выбрать значения из таблицы


как это сделать? как записать в таблица? какой используется оператор? поясните пожалуйста.

=DeaD= писал(а):Учитывая, что:
1) sin(Pi/2-t)=sin(Pi/2)*cos(-t)+cos(Pi/2)*sin(-t)=cos(t);
2) cos(Pi/2-t)=cos(Pi/2)*cos(-t)-sin(Pi/2)*sin(-t)=sin(t);

Я бы хранил только по 45 значений, это еще лучше по объему памяти ;)

спасибо за совет, я подумаю над этим.


MiBBiM писал(а):писать лучше на бейсике,

к сожалению(или счастью), мне надо написать на С.

slavaslx писал(а):Не уж то там у них 422-й используется.? Хотя зная наших, может и используется.
это международный стандарт.

Re: программа для диплома (help me)

blindman » 24 май 2009, 16:39

в_фокусе писал(а):как это сделать? как записать в таблица? какой используется оператор? поясните пожалуйста.

таблица - это массив. записать его лучше в память программ, чтобы не тратить ОЗУ. Как поместить массив в память программ и читать данные оттуда - зависит от компилятора. Как это делается в Codevision - не знаю.

Re: программа для диплома (help me)

slavaslx » 24 май 2009, 23:24

В КВ массив память (ПЗУ память програм) загоняется просто:
надо указать тип флэш и дальше тип и имя массива (инициализация), (бо если прога запустится а массив в ПЗУ, не задан должен выдасть ошибку, по идее.)

flash int Massiv=[инициализация];

Из хелпа на КВ:
flash int integer_array1[]={1,2,3};
flash char string_constant1[]="This is a string constant located in FLASH";

Считаешь там синусы (косинусы или че там надо из тригонометрий) углов каких надо (никогда не любил тригонометрию), а потом зная что "какойто" син 93рад лежит в какойто ячейке Массив[допустим 91], берешь оттуда значение x=A[91].
Как то так.

Re: программа для диплома (help me)

executer » 25 май 2009, 13:19

Интересно, это после реформы образования дипломы стали писать по незатронутым во время обучения областям?

Нам остается только радоватся - чем меньше они будут знать - тем выше у нас будет зарлата. :(

Re: программа для диплома (help me)

в_фокусе » 26 май 2009, 22:31

blindman писал(а):таблица - это массив. записать его лучше в память программ, чтобы не тратить ОЗУ. Как поместить массив в память программ и читать данные оттуда - зависит от компилятора. Как это делается в Codevision - не знаю.


slavaslx писал(а):...


в VC++ у меня так получилось(еще сыро)

Код: Выделить всёРазвернуть
#include <iostream.h>
#include <math.h> /*float sin(float x)- returns the sine of the floating point number x,
where the angle is expressed in radians. float cos(float x)*/

void main(void)
{

float array_cos[89];// угол от 0 до 90
  float array_sin[89];
   char i;
        for(i=0;i<90;i++)//0-89
        {
        array_cos[i]=float cos(i);
        array_sin[i]=float sin(i);
        cout<<"array_cos["<<i<<"]"<<array_cos[i];
        cout<<"array_sin["<<i<<"]"<<array_sin[i];
        }


}

но! в Codevision нет библиотеки <math.h> где есть cos и sin, и циклу for тоже надо библиотеку по ходу!?

executer писал(а):Интересно, это после реформы образования дипломы стали писать по незатронутым во время обучения областям?
Нам остается только радоватся - чем меньше они будут знать - тем выше у нас будет зарлата. :(


я пишу диплом по "затронутой области", а программирование МК это одна из сопутствующих задач модернизации устройства(Гирокурсоуказатель),в которой я пока не силен.

Чтож, а мне остаться только радоваться за вас, что вы радуетесь.
Последний раз редактировалось в_фокусе 26 май 2009, 22:37, всего редактировалось 1 раз.

Re: программа для диплома (help me)

galex1981 » 26 май 2009, 22:34

Функции Синус и Косинус делай сам (лучше таблиным способом)

Re: программа для диплома (help me)

Snable » 26 май 2009, 22:47

При объявлении массивов надо указывать количество элементов, то есть вместо "[89]" - "[90]".
На МК надо вот эти получившиеся значения заносить в массив констант явно. То есть тупо скопировать вывод этой проги, только написать вместо того что имеется:
Код: Выделить всёРазвернуть
array_cos[i]=float cos(i);
cout << array_cos[i] << ", ";

Потом скопировать вывод такой же проги, только для синусов и вставить в свою прогу.
Это табличный способ.

Re: программа для диплома (help me)

MiBBiM » 27 май 2009, 08:34

math.h в cvavr'e есть (во второй версии точно).

Re: программа для диплома (help me)

DarkSilence » 27 май 2009, 12:01

И в первой он кажется был.. спорить не буду, но щас специально залез и посмотрел, во второй он есть, и функции косинуса и синуса нормально выполняет.
Под цикл for не нужно никаких дополнительных библиотек.

Re: программа для диплома (help me)

в_фокусе » 28 май 2009, 10:53

galex1981 писал(а):Функции Синус и Косинус делай сам (лучше таблиным способом)

почему табличным? разве нельзя получить курс, и от него сразу взять c и к в программе, во время работы???

Re: программа для диплома (help me)

blindman » 28 май 2009, 11:04

Можно что угодно. Но делать надо правильно. Из того кода что ты написал, можно сделать вывод что угол у тебя - целое от 0 до 90. Зачем делать каждый раз вычисления, преобразовывая градусы в радианы и вычисляя синус/косинус, тратя время процессора, если можно очень быстро получить значения из заранее составленной таблицы? Это сэкономит как время, так и память.

Re: программа для диплома (help me)

galex1981 » 28 май 2009, 12:45

Blindman верно сказал, все зависит от поставленной задачи

Re: программа для диплома (help me)

в_фокусе » 28 май 2009, 22:09

MiBBiM писал(а):math.h в cvavr'e есть (во второй версии точно).

да че то, я намудил, он там есть...
blindman писал(а):Можно что угодно. Но делать надо правильно. Из того кода что ты написал, можно сделать вывод что угол у тебя - целое от 0 до 90. Зачем делать каждый раз вычисления, преобразовывая градусы в радианы и вычисляя синус/косинус, тратя время процессора, если можно очень быстро получить значения из заранее составленной таблицы? Это сэкономит как время, так и память.

Это понятно,Но данные будет не целые а например 45.4, то есть float. выше я писал int, для упрощения выражения своей мысли, прошу прошения если сбил с толку.
В этом случае разве, то же будет разумнее пользоваться табличным способом?

Re: программа для диплома (help me)

=DeaD= » 28 май 2009, 22:24

Помня, что производная косинуса - синус и наоборот можно из таблицы нереально быстро нереально точно считать и промежуточные значения ;)

Re: программа для диплома (help me)

MiBBiM » 29 май 2009, 13:33

да ему ж всего два значения за 30мсек посчитать надо, уж времени завались


Rambler\'s Top100 Mail.ru counter