Можно ли 2 раза вызвать void loop()?? Код (Text): void loop() { lcd.print(temperature); } void loop() { Serial.print(temperature); Serial.print(/t); Serial.print(minute); } просто делаю апгрейт "Метеостанции" из Матрёшки.
Код можно соединить. Руками, но все же... Нужно изучить, что и как в коде работает (да и как сам код пишется), а потом приступать
Так "2 раза вызвать void setup" или ? Вообщето loop() вызывается бесконечно пока питание подается или программа не зависнет. Вы лучше подробнее изложите чего конкретно хотите добиться.
Нет, loop - не callback функция, под определение callback она не подходит. Это просто функция, которую можно вызывать, откуда угодно, и сколько угодно. Но она, формально, по признакам - не callback.
Для пояснения: 1. Не callback: Код (C++): void loop() { } void main() { while(1) loop(); } 2. Callback: Код (C++): typedef void (*pFunc)(void); void callbackCaller( pFunc func) { func(); } void loop() { } void main() { while(1) callbackCaller(loop); }
Код (C++): void main() { delayMicroseconds(1); PORTB |= (1<<SHE); delayMicroseconds(1); PORTB &= ~(1<<SHE); Можно объявить функцию скажем чтобы она включала пин 6 (+5в) и выключала(0) эта конструкция встречается в 5 циклах, чтобы все не переписывать просто пишешь функцию и пусть цикл ее вызывает нужное количество раз void main()
что то типа этого Код (C++): for (int i = 0; i < var3 ; i++) { void main() } int (s = 0; s < var2 ; s++) { void main() }
невероятный бред - и по форме, и по содержанию. Во-первых, функцию main() в скетче ардуино определить нельзя, она там уже есть. Во-вторых, Код (C++): void main() - это не вызов функции и в-третьих, нафига это все?
Да конечно можно, только если Вы сможете надеть ботинки на уже обутые ноги! Снова зайдёте в хлебный магазин не выходя из него... ну и тому подобное. ЗЫ: А может Вам нужна многопоточность? Так это другая тема.
Может воскресить тему? Играет перфекционизм, и... Вопрос то и правда интересный. Только переформулировать надо: Создаём мы тело программы в Arduino IDE: В которой функций становится много. И начинаем использовать вкладки, или файлы подключать. И вот, в дебрях, чтобы void func_76(); работала нужно добавить в void setup(){} ... Например определение пинов. Чтобы не возвращаться в начало, можно ли перед кодом void func_76(){} еще раз вызвать (и дополнить) void setup(){}? Код (C++): #define abc #include def void setup(){ какие - то определения загрузка настроек из EEPROM еще какой-то код } void loop(){ какой-то код еще код func_1(); //вызываем функцию 1 func_2(); //вызываем функцию 2 ... func_76(); //вызываем функцию 76 } func_1(){} func_2(){} void setup(){ pinmode (0, OUTPUT); //определяем пины pinMode (1, INPUT); func_79(){ какой-то код } Компилятор будет ругаться. Но сама по себе идея интересная.
Для себя решил делать так: Перед большими функциями ставить функцию с определением настроек, и обращаться к ним из void setup: Код (C++): #define abc #include def #include <EEPROM.h> void setup(){ какие - то определения EEPROM.get (0, ghi)загрузка настроек из EEPROM еще какой-то код func_1_set(); func_2_set(); ... func_79_set(); } void loop(){ какой-то код еще код func_1(); //вызываем функцию 1 func_2(); //вызываем функцию 2 ... func_76(); //вызываем функцию 76 } void func_1_set(){} void func_1(){} void func_2_set(){} void func_2(){} void func_79_set(){ pinmode (0, OUTPUT); //определяем пины pinMode (1, INPUT); EEPROM.get (76, jkl); //Еще что-нибудь из EEPROM подгружаем } void func_79(){ какой-то код } Но приходил к этому сам. На сколько это правильно - не знаю.
Ну, да. Интересных идей много. Например, если "снаряд летит по параболе в плоскости вертикального наведения", то можно ведь положить пушку на бок и стрелять из-за угла, правда? Получится или нет, не знаю, нет пушки, чтобы проверить, но
какие-то идейные ограничения мешают определить собственную функцию и вызывать её как угодно и откуда угодно?