Из под Simpletimer не вызывается функция с аргументом
- Войдите на сайт для отправки комментариев
Чт, 06/07/2017 - 16:09
Всем привет.
Вызываю функцию repeatMe2(t) в лоб и из дот таймера.
В лоб работает, а из под таймера выдает ошибку:
:16: error: invalid use of void expression
timer.setTimer(200, repeatMe2(t), 5); // вызываем функкцию repeatMe2(t) 5 раз с интервалом в 0,2 секунд
^
#include <SimpleTimer.h>
SimpleTimer timer; // the timer object
void setup() {
Serial.begin(9600);
timer.setInterval(1000, repeatMe);
}
// a function to be executed periodically
void repeatMe() {
Serial.print("repeatMe ");
Serial.print("\t");
Serial.print("Uptime (s): ");
Serial.println(millis() / 1000);
int t = millis();
timer.setTimer(200, repeatMe2(t), 5); // вызываем функкцию repeatMe2(t) 5 разс интервалом в 0,2 секунд
repeatMe2(t);
}
// a function to be called with argument
void repeatMe2(int argument) {
Serial.print("repeatMe2 ");
Serial.print("\t");
Serial.print("Uptime (s): ");
Serial.print("\t");
Serial.print(millis() / 1000);
Serial.print("returned time = ");
Serial.println(argument);
}
void loop() {
timer.run();
}
Информация принята к сведению.
Если у Вас есть какой-то вопрос по этому поводу, то Вы его забыли задать.
Так, кстати, просто на всякий случай, если Ваш вопрос состоит в том "как вызвать из-под таймера функцию с параметром", ответ - с этой библиотекой, если в ней ничего не менять - никак.
Спасибо
а с какой библиотекой будет работать вызов фунуции с аргументом?
Не знаю. Я редко пользуюсь готовыми библиотеками, а потому не знаю какие бывают.
Вам нужна такая, где аргумент передаётся в функцию таймера отдельно, сам по себе. Т.е. адрес вызываемой функции сам по себе, а аргумент сам по себе. Только так.