> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oryx.mechatronstudio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Formato digital

> Una fila por cambio de estado: cómo leer el .txt de una señal digital.

El archivo digital contiene **una fila por cada cambio**. Entre una fila y otra
las salidas se mantienen igual, así que una señal de mil pasos suele caber en
unas decenas de filas.

## Estructura

```
Paso  CLK  DATA  EN
1     0    0     0
3     1    0     0
4     1    1     0
7     0    1     1
16    0    1     1
```

* La **primera columna** es el paso donde ocurre el cambio.
* Las siguientes son el **valor de cada canal**, en el orden de la línea de
  tiempo, con el nombre del canal como encabezado.

## Reglas de lectura

<AccordionGroup>
  <Accordion title="Solo se escribe lo que cambia">
    Una fila nueva aparece únicamente si algún canal cambió de valor. Repetir el
    estado anterior no aportaría nada.
  </Accordion>

  <Accordion title="El largo total viaja en la última fila">
    Si el último cambio ocurrió antes del final, se agrega una fila con el paso
    final y los valores vigentes. Así el largo total está dentro de la tabla y no
    como un dato aparte.
  </Accordion>

  <Accordion title="Los pasos pueden ser fraccionarios">
    Un canal dividido produce filas en posiciones como `3.333333`. Se escriben
    con hasta seis decimales.
  </Accordion>

  <Accordion title="Cada canal solo aporta sus propios sub-pasos">
    Un canal partido en tercios y otro en cuartos no comparten grilla. En un
    punto de tiempo que no es suyo, un canal **arrastra su último valor conocido**
    en lugar de leerse en una posición que no tiene.

    Sin esto, la grilla del canal dividido en 3 (0.333, 0.667…) se filtraría en
    la del dividido en 4 (0.25, 0.5, 0.75…) y al revés.
  </Accordion>
</AccordionGroup>

## Con metadatos

Al final del archivo, después de una línea en blanco:

```
VOLTAGE: 5
STEP_TIME (us): 100
CYCLES (RPM): 0
```

## Cómo reproducirlo

La idea es directa: se lee una fila, se ponen las salidas en esos valores, se
espera hasta el paso de la fila siguiente y se repite.

El tiempo de cada paso sale de `STEP_TIME` si se exportaron los metadatos; si
no, se define en el código.

El ejemplo completo, con lectura desde microSD, está en
[Generar la señal con un ESP32](/exportar/esp32-microsd).
