> ## 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.

# Generar la señal con un ESP32

> Leer el archivo exportado desde una microSD, con el ejemplo que trae la app.

Esta es la ayuda que se abre desde el signo de pregunta de la ventana de
exportación. El archivo exportado se lee desde una **microSD**, y la app trae un
ejemplo de código para empezar.

<Note>
  Esto es **distinto** de conectar el ESP32 por USB. Aquí el micro lee un archivo de
  una tarjeta y lo reproduce por su cuenta; allá la app le manda la señal en vivo y
  la controla. Ver [Conectar el dispositivo](/dispositivo/conectar).
</Note>

## Indicaciones generales

<Steps>
  <Step title="Copiar el archivo">
    El `.txt` exportado va en la raíz de la microSD, con el mismo nombre que se
    declare en el código.
  </Step>

  <Step title="Conectar el lector">
    Por SPI. A `SD_CS` se le asigna el pin usado para CS.
  </Step>

  <Step title="Declarar un pin por canal">
    En el mismo orden en que salen las columnas del archivo.
  </Step>

  <Step title="Definir el tiempo de paso">
    Sale de los metadatos (`STEP_TIME`) si se exportaron; si no, se define en el
    código.
  </Step>

  <Step title="Revisar los niveles">
    Las salidas del ESP32 son de **3,3 V**. Si el circuito trabaja a 5 V, hace
    falta un adaptador de nivel.
  </Step>

  <Step title="Con señales largas, leer por bloques">
    Conviene leer la tarjeta en tandas en lugar de cargar todo en la RAM.
  </Step>
</Steps>

## Los dos ejemplos

La ayuda trae dos pestañas de código, con un botón para copiarlo:

<Tabs>
  <Tab title="Digital">
    El archivo digital contiene **una fila por cada cambio**: la primera columna
    es el paso y las siguientes, el valor de cada canal. Entre una fila y otra
    las salidas se mantienen igual.

    El ejemplo lee fila por fila, escribe los pines y espera hasta el paso de la
    fila siguiente.
  </Tab>

  <Tab title="Analógico (DAC)">
    El archivo analógico describe **tramos**: cada fila es un tramo completo —de
    qué paso a qué paso, de qué canal, entre qué niveles y con qué curva— y las
    filas están ordenadas por el paso en el que comienzan.

    Cada fila es independiente, así que se puede reproducir **leyendo una línea a
    la vez**.

    La última columna es el **radio de esquina**: cuánto redondear el quiebre con
    el tramo siguiente del mismo canal, tomando media curva de cada lado. Con `-`
    o `0`, el quiebre queda en ángulo.

    <Warning>
      El DAC del ESP32 es de **8 bits** (0–255) y llega a unos 3,3 V. Si se exportó
      con más resolución, hay que reescalar.
    </Warning>
  </Tab>
</Tabs>

## Alternativa: el firmware completo

Si en lugar de escribir el reproductor se prefiere usar el que ya existe, el
proyecto trae un **sketch completo** que recibe la señal por USB desde la app y
la reproduce, con control de arranque, parada, voltaje, tiempo de paso y RPM.

Ver [Firmware del ESP32](/dispositivo/firmware).
