Из под Simpletimer не вызывается функция с аргументом

Alexxx
Offline
Зарегистрирован: 06.07.2017

Всем привет.

Вызываю функцию 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();
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Информация принята к сведению.

Если у Вас есть какой-то вопрос по этому поводу, то Вы его забыли задать.

Так, кстати, просто на всякий случай, если Ваш вопрос состоит в том "как вызвать из-под таймера функцию с параметром", ответ - с этой библиотекой, если в ней ничего не менять - никак.

Alexxx
Offline
Зарегистрирован: 06.07.2017

Спасибо

а с какой библиотекой будет работать вызов фунуции с аргументом?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не знаю. Я редко пользуюсь готовыми библиотеками, а потому не знаю какие бывают.

Вам нужна такая, где аргумент передаётся в функцию таймера отдельно, сам по себе. Т.е. адрес вызываемой функции сам по себе, а аргумент сам по себе. Только так.