Решил вынести на исполнение в функцию (Мигаем светодиодом)
- Войдите на сайт для отправки комментариев
Пнд, 29/05/2017 - 13:59
void setup() {
// put your setup code here, to run once:
pinMode(13, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13, 0);
delay(1000);
digitalWrite(13, 1);
delay(1000);
}
По класическому все работает...
Есть необходимость вынести за пределы главного цикла void loop... выношу:
void setup() {
// put your setup code here, to run once:
pinMode(13, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
LEDS;
delay(1000);
}
void LEDS() {
if (digitalRead(13)) digitalWrite(13, 0); else digitalWrite(13, 1);
}
- не работает, ошибок при компиляции нет, кто может подсказать почему?
void setup() { // put your setup code here, to run once: pinMode(13, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(13, 0); delay(1000); digitalWrite(13, 1); delay(1000); }По класическому все работает...
Есть необходимость вынести за пределы главного цикла void loop... выношу:
void setup() { // put your setup code here, to run once: pinMode(13, OUTPUT); } void loop() { // put your main code here, to run repeatedly: LEDS; delay(1000); } void LEDS() { if (digitalRead(13)) digitalWrite(13, 0); else digitalWrite(13, 1); }- не работает, ошибок при компиляции нет, кто может подсказать почему?
void setup() { // put your setup code here, to run once: pinMode(13, OUTPUT); } void loop() { // put your main code here, to run repeatedly: LEDS(); // может так? delay(1000); } void LEDS() { if (digitalRead(13)) digitalWrite(13, 0); else digitalWrite(13, 1); }obuhanoe - Спасибо, странно тогда почему компилятор не ругнулся...
obuhanoe - Спасибо, странно тогда почему компилятор не ругнулся...
А чего ему ругаться? Та конструкция тоже вполне правильная, только делает несколько иные вещи.
okta -?
ЕвгенийП - что в таком случае выполняется?
void setup() { pinMode(13, OUTPUT); } void loop() { void (*Do)()=LEDS; // LEDS() ; это выполнить функцию по указателю функции LEDS // LEDS это просто переменная указатель функции Do(); delay(1000); } void LEDS() { if (digitalRead(13)) digitalWrite(13, 0); else digitalWrite(13, 1); }Не задавайте вопросы , ответы на которые не можете понять http://cpp.com.ru/kr_cbook/ch5kr.html#p52
ЕвгенийП - что в таком случае выполняется?
Вычисляется адрес функции LEDS
Другой вопрос "для чего". В данном случае ни для чего, результат тут же выбрасывается. Но если эту возможность использовать с умом (Вы то её случайно по незнанию использовали), то иногда она полезна.
Обязательно писать в скобках объявление указателя на функцию
Или разрешено
[quote=Nirst]
Вы знаете приоритет операций. Ну сначало умножение, а потом сложение . Так такая и фишка здесь . У скобок приритет выше чем у * (разыменовывания)
http://www.amse.ru/courses/cpp2/2011_04_11.html
Обязательно писать в скобках объявление указателя на функцию
Или разрешено
Только для Вас :)