# Delay Step

This function block introduces a delay for input signals, essentially holding onto the previous input and outputting it as the current output.

## 📥 Inputs <a href="#inputs" id="inputs"></a>

`Input` This input accepts any generic signal which you want to delay by one step.

## 📤 Outputs <a href="#outputs" id="outputs"></a>

`Output` This output provides the previous signal held in memory, essentially returning the last received input.

## 🕹️ Controls <a href="#controls" id="controls"></a>

This function block does not have visible controls for user interaction. It operates automatically based on the input received.

## 🎨 Features <a href="#features" id="features"></a>

`Input Signal Delay` This block retains the last received input and outputs that single value upon subsequent evaluations.

## 📝 Usage Instructions <a href="#usage" id="usage"></a>

1. **Connect Input Signal**: Link the desired signal to the `Input` socket of this block.
2. **Run the Block**: Once connected, the block will output the value of the previous input signal on the `Output`.

## 📊 Evaluation <a href="#evaluation" id="evaluation"></a>

When evaluated, the block retrieves the last input signal and outputs it. If it is the block's first evaluation, it will return `None` until a valid input is received.

## 💡 Tips and Tricks <a href="#tips-and-tricks" id="tips-and-tricks"></a>

<details>

<summary>Chaining Signals</summary>

You can chain multiple `Delay Step` blocks together if needed. This can create longer delays in the signal processing.

</details>

<details>

<summary>Combining with Logic Operations</summary>

Use alongside `And` or `Or` blocks to create conditional flows based on previous signal states.

</details>

<details>

<summary>Signal Smoothing</summary>

To mitigate rapid fluctuations in signal data, combine with other blocks like `Math Operations` to average out signals before delaying.

</details>

## 🛠️ Troubleshooting <a href="#troubleshooting" id="troubleshooting"></a>

<details>

<summary>No Output Received</summary>

If no output is observed, verify that the input signal is properly connected and being sent to the block.

The first evaluation will always return `None` until a valid signal is received.

</details>
