roboforum.ru

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

 

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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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-й используется.? Хотя зная наших, может и используется.
это международный стандарт.
в_фокусе
 
Сообщения: 7
Зарегистрирован: 22 май 2009, 01:24
Откуда: penza

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

Сообщение blindman » 24 май 2009, 16:39

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

таблица - это массив. записать его лучше в память программ, чтобы не тратить ОЗУ. Как поместить массив в память программ и читать данные оттуда - зависит от компилятора. Как это делается в Codevision - не знаю.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4128
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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].
Как то так.
slavaslx
 

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

Сообщение executer » 25 май 2009, 13:19

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

Нам остается только радоватся - чем меньше они будут знать - тем выше у нас будет зарлата. :(
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

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 раз.
в_фокусе
 
Сообщения: 7
Зарегистрирован: 22 май 2009, 01:24
Откуда: penza

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

Сообщение galex1981 » 26 май 2009, 22:34

Функции Синус и Косинус делай сам (лучше таблиным способом)
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение Snable » 26 май 2009, 22:47

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

Потом скопировать вывод такой же проги, только для синусов и вставить в свою прогу.
Это табличный способ.
Аватара пользователя
Snable
 
Сообщения: 395
Зарегистрирован: 21 мар 2009, 20:06
Откуда: Город на Неве
прог. языки: GNU C++ with Qt / C# via .NET
ФИО: Александр

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

Сообщение MiBBiM » 27 май 2009, 08:34

math.h в cvavr'e есть (во второй версии точно).
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

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

Сообщение DarkSilence » 27 май 2009, 12:01

И в первой он кажется был.. спорить не буду, но щас специально залез и посмотрел, во второй он есть, и функции косинуса и синуса нормально выполняет.
Под цикл for не нужно никаких дополнительных библиотек.
Аватара пользователя
DarkSilence
 
Сообщения: 25
Зарегистрирован: 18 сен 2008, 22:02
Откуда: Самара
прог. языки: C/C++, Pascal

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

Сообщение в_фокусе » 28 май 2009, 10:53

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

почему табличным? разве нельзя получить курс, и от него сразу взять c и к в программе, во время работы???
в_фокусе
 
Сообщения: 7
Зарегистрирован: 22 май 2009, 01:24
Откуда: penza

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

Сообщение blindman » 28 май 2009, 11:04

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

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4128
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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

Сообщение galex1981 » 28 май 2009, 12:45

Blindman верно сказал, все зависит от поставленной задачи
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

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

Сообщение в_фокусе » 28 май 2009, 22:09

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

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

Это понятно,Но данные будет не целые а например 45.4, то есть float. выше я писал int, для упрощения выражения своей мысли, прошу прошения если сбил с толку.
В этом случае разве, то же будет разумнее пользоваться табличным способом?
в_фокусе
 
Сообщения: 7
Зарегистрирован: 22 май 2009, 01:24
Откуда: penza

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

Сообщение =DeaD= » 28 май 2009, 22:24

Помня, что производная косинуса - синус и наоборот можно из таблицы нереально быстро нереально точно считать и промежуточные значения ;)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24053
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: Pascal / C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение MiBBiM » 29 май 2009, 13:33

да ему ж всего два значения за 30мсек посчитать надо, уж времени завались
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Mail.ru counter