/*
  Passing parameters to Ticker callbacks

  Apart from void(void) functions, the Ticker library supports
  functions taking one argument. This argument's size has to be less or
  equal to 4 bytes (so char, short, int, float, void*, char* types will do).

  This sample runs two tickers that both call one callback function,
  but with different arguments.

  The built-in LED will be pulsing.
*/

#include <Arduino.h>
#include <Ticker.h>

#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif

Ticker tickerSetLow;
Ticker tickerSetHigh;
Ticker tickerSetChar;

void setPinLow() {
  digitalWrite(LED_BUILTIN, 0);
}

void setPinHigh() {
  digitalWrite(LED_BUILTIN, 1);
}

void setPin(int state) {
  digitalWrite(LED_BUILTIN, state);
}

void setPinChar(char state) {
  digitalWrite(LED_BUILTIN, state);
}

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);

  // every 25 ms, call setPinLow()
  tickerSetLow.attach_ms(25, setPinLow);

  // every 26 ms, call setPinHigh()
  tickerSetHigh.attach_ms(26, setPinHigh);

  // every 54 ms, call setPinChar(1)
  tickerSetChar.attach_ms(26, setPinChar, (char)1);
}

void loop() {}
