User Tools

Site Tools


en-us_commands:reference:itof

This is an old revision of the document!


Itof()

Itof() (Off Delay Timer) returns false after a specified time has elapsed since the condition turned OFF.

Itof command operation flow

bool Itof(uint8_t timer_id, bool state, unsigned long delayTime)

Commands

Command Arguments Return Value Operation
Itof(timer_id, state, delayTime) uint8_t timer_id — Timer number. Supports 0 ~ 255
bool state — Timer input state
unsigned long delayTime — Preset time in ms
bool (Off Delay Timer) returns false after a specified time has elapsed since the condition turned OFF.

Example

const uint8_t START_INPUT = 0;
const uint8_t RESET_INPUT = 1;
const uint8_t RUN_OUTPUT = 32;
 
void setup() {
  Serial.begin(115200);
}
 
void loop() {
  const bool start = IdigitalRead(START_INPUT, 5);  // Read the input repeatedly and update only if all samples match. If HIGH and LOW are mixed, retain the previous stable state.
  const bool reset = IdigitalRead(RESET_INPUT, 5);  // Read the input repeatedly and update only if all samples match. If HIGH and LOW are mixed, retain the previous stable state.
  const bool ready = Iton(0, start, 1000);  // (On Delay Timer) Return true only after the condition remains ON for the set time.
  const bool stopDelay = Itof(1, ready, 500);  // (Off Delay Timer) Return false after a set delay following the condition turning OFF.
  const bool startPulse = Itpl(2, ready, 200);  // (Pulse Timer) Return true for the set duration from the instant the condition turns ON.
  const bool inspectionWindow = Itmon(3, startPulse, 3000);  // (Monostable Timer) Output a pulse whose duration is not extended by another trigger while running.
  const bool batchDone = Itmr(4, ready, 10000, reset);  // (Retentive Timer) Accumulate the time the condition is ON; clear it with the Reset input.
  const unsigned long elapsed = IgetTime(4);  // Return the specified timer's current elapsed time.
  const bool savedDone = IgetState(4);  // Return the specified timer's current output state.
 
  digitalWrite(RUN_OUTPUT, stopDelay && !batchDone ? HIGH : LOW);
  if (inspectionWindow && elapsed % 1000 < 20) {
    Serial.println(savedDone ? F("batch complete") : F("batch running"));
  }
}

Precautions

  • Timer interrupt callbacks run inside an ISR. For safety, change only flags in the callback and perform actual control processing in loop().
  • Do not use slow or interrupt-dependent code such as delay(), Serial, I2C or SPI in callbacks.
  • Normally, call ImodbusRTU() repeatedly in loop(). Call it from a timer interrupt with a sufficient interval only when long delay() calls or debug output slow down loop().
  • Do not use the default ItimerSet() together with tone() using Timer2 or analogWrite() on Timer2 PWM pins.
  • Explicitly using Timer1, Timer3, Timer4 or Timer5 may conflict with PWM, analog output or high-speed counter functions using that timer.
  • Configure only one Itimer callback per hardware timer.
  • Defining an ISR for the same timer directly in the sketch may conflict with Itimer operation.
  • ItimerStopAll() stops only hardware interrupt timers. It does not reset PLC-style timer states such as Iton, Itof or Itmr.

Built-in Commands in the Same Category

en-us_commands/reference/itof.1788796403.txt.gz · Last modified: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki