Добрейшего времени суток, форумчане! Недавно начал изучать среду Arduino IDE, до этого работал с Мегами через GCC. Сразу столкнулся с проблемой, которая не укладывается в мозгях. Код (C++): int a=0; //Объявляю глобальную переменную void setup() { a=1; } void loop() { print(a); //Выводим в Serial либо на LCD, не важно //ВЫВОДИТ 0! changeblabla(); //Меняем значение переменной в процедуре print(a); //ВЫВОДИТ ТАКЖЕ 0! } void changeblabla() { a=10; } Я чего то не пойму, что за фигня. Или может IDE какой то кривой скачал ...
Код (C++): int a=0; //Объявляю глобальную переменную void setup() { a=1; } void loop() { Serial.println(a); //Выводим в Serial либо на LCD, не важно //ВЫВОДИТ 0! changeblabla(); //Меняем значение переменной в процедуре Serial.println(a); //ВЫВОДИТ ТАКЖЕ 0! } void changeblabla() { a=10; }
Arduino IDE качаем отсюда - https://www.arduino.cc/en/Main/Software. Старая привычка использовать для AVR версию 1.0.x, для плат на ARM 1.5.x и выше, не знаю насколько это актуально сейчас. Как-то один раз намучился с 1 библиотекой и привык. В чистом виде, данный код работает и с ним не должно быть проблем. Код (C++): int a = 0; //Объявляю глобальную переменную void setup() { Serial.begin(115200); a = 1; } void loop() { Serial.println(a); changeblabla(); Serial.println(a); // Чтобы не мельтешил экран. delay(1000); } void changeblabla() { a=10; } Результат будет 1, 10, 10 ... Другое дело, что это кусок кода из какого-то приложения, setup пустой, не видно print. Иногда, такое бывает при выходе за границу массива или аналогичных ошибок работы с памятью. Впрочем Вы и без меня это знаете, раз работали с AVR. Запустите мой скетч, если он работает, присмотритесь к своему коду повнимательнее.
Скачал новую версию Arduino IDE 1.6.хх - все проблемы решились. На старой IDE, так и не работает. Глобальная переменная не изменяется. Версия IDE 1.0.6 Видимо какая то косячная версия попалась.