Вопрос чайника по работе с массивами

Crazyigels
Offline
Зарегистрирован: 06.12.2012

Добрый день.

Пытаюсь написать простенький GPS навигатор.

Объявляю массив и пытаюсь начать его наполнять

double My_position_lat[4];

My_position_lat[0]=56.3329361111;

получаю ошибку

"expected constructor, destructor, or type conversion  before '=' token"

Что не так в присвоении?

 

Спасибо. 

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

Заполнять нужно в функции, например в setup()

double My_position_lat[4];

void setup() 
{
 My_position_lat[0]=56.3329361111;
}

 

Crazyigels
Offline
Зарегистрирован: 06.12.2012

Спасибо :)

sva1509
Offline
Зарегистрирован: 07.12.2012

Доброго времени суток !

Боюсь, что setup не поможет. setup - просто зарезервированная функция которая исполняется один раз. loop исполняется в вечном цикле. 

Я думаю что проблемма в другом. В документации http://arduino.cc/en/Reference/Double написано что кроме Duo в остальных тип double - 4 байта тоесть максимально +- 2 000 000 000 тоесть 10 знаков а у Вас 12 по этому оно и не вошло в тип double.

 

maksim
Offline
Зарегистрирован: 12.02.2012

Не надо бояться, уже помогло, а если не верите, то попробуйте скомпилируйте, сначала так:

double My_position_lat[4];

void setup() 
{
 My_position_lat[0]=56.3329361111;
}

а потом вот так


void loop() {}

double My_position_lat[4];
My_position_lat[0]=56.3329361111;

void setup() {}
void loop() {}

посмотрите какую ошибку дает компилятор и сравните с той что написал топик-стартер.

sva1509
Offline
Зарегистрирован: 07.12.2012

Ну то что Вы указали во втором варианте это вообще не вариант (каламбур :)). Присваивание в не функции не допустимо, кроме инициализации при объявлении. Я полагаю, что топик-стартер вкурсе. Но и впихнуть 12 десятичных разрядов в 4 байта тоже не возможно. Либо компилятор должен обрезать число сам, либо требовать тип достатьчной вместимости.

maksim
Offline
Зарегистрирован: 12.02.2012

 

sva1509 пишет:

Ну то что Вы указали во втором варианте это вообще не вариант (каламбур :)). Присваивание в не функции не допустимо, кроме инициализации при объявлении. Я полагаю, что топик-стартер вкурсе.

Не вариант это для вас, потому как вы опираетесь на свои предположения, а то что я написал решило его проблему.
Я не понимаю вы о чем спорите?
Еще раз прочитайте сообщние #4 сделайте как там написано и вам все станет ясно, вкурсе был топик-стартер или нет.

 

Crazyigels
Offline
Зарегистрирован: 06.12.2012

Не надо споров. Все заработало по совету в ответе #1. 

Даже если компилятор обрезает 2 знака последних - плевать. GPS не дает такой точности, а знаки эти - сутью "хвост" от перевода градусной системы измерения координат в десятичную.

Спасибо еще раз.