La librería de Arduino
This content is not available in your language yet.
En la placa, tu sketch usa la librería Transparent. La app de escritorio de
Undercromo la instala en tu Arduino IDE al arrancar; en tu sketch solo la incluyes:
#include <Transparent.h>Serial o WiFi: lo único que cambia es el constructor
Sección titulada «Serial o WiFi: lo único que cambia es el constructor»Transparent funciona sobre tres conexiones, pero el sketch es el mismo en todas; lo único que cambia es la línea del constructor:
Transparent tpt(Serial); // USB directo, o bridge WiFi ESP8266 (el ESP8266 traduce WiFi↔UART serial)Transparent tpt(27016); // WiFi nativo, SOLO ESP32 (la placa abre un servidor TCP en ese puerto)| Conexión | Constructor | Placas |
|---|---|---|
| USB directo / bridge ESP8266 | Transparent tpt(Serial) | Arduino y ESP32 |
| WiFi nativo | Transparent tpt(27016) (el número es el puerto) | Solo ESP32 |
Declarar variables: TPT_VAR
Sección titulada «Declarar variables: TPT_VAR»Declaras tus variables normales de C++ y las registras en setup() con la macro
TPT_VAR, indicando la dirección (ver Introducción):
float temperatura = 0; // la placa reportabool ledDeseado = false; // la plataforma mandaint objetivo = 22; // ambos lados
void setup() { Serial.begin(115200); TPT_VAR(tpt, temperatura, DEVICE_TO_GATEWAY); TPT_VAR(tpt, ledDeseado, GATEWAY_TO_DEVICE); TPT_VAR(tpt, objetivo, BIDIRECTIONAL); tpt.begin();}TPT_VAR(tpt, variable, dirección)— registra una variable ya declarada. Valida en tiempo de compilación que el tipo esté soportado (ver Tipos de datos) y que el nombre no pase de 32 caracteres.- A partir de ahí no llamas a “enviar”: editas la variable en tu código y la
librería la reporta según su cadencia; las variables
g2d/bilas escribe la plataforma y la librería las aplica sola.
El ciclo de vida (igual en serial y WiFi)
Sección titulada «El ciclo de vida (igual en serial y WiFi)»Dos llamadas sostienen todo:
Transparent tpt(Serial); // (o tpt(27016) para WiFi)
void setup() { Serial.begin(115200); // En WiFi: aquí también conectas a la red (WiFi.begin(...)) antes de tpt.begin(). // ...registra tus variables con TPT_VAR... tpt.begin(); // inicializa la conexión. Llámalo UNA vez, al final del setup().}
void loop() { tpt.update(); // imprescindible en CADA vuelta: sincroniza variables y corre timers.}tpt.begin()— una sola vez ensetup(), después de registrar las variables. En WiFi imprime en el monitor serial la IP y el puerto de la placa (los copias al config del thing). El apretón de manos y el chequeo de salud los hace la librería.tpt.update()— en cada vuelta delloop(). Es el motor: sin él no se sincroniza nada y no corren los timers. (Reemplaza al antiguoloop()de la librería.)tpt.isConnected()—truesi la plataforma está conectada (en WiFi, si hay un cliente activo).
Tiempos: hacer cosas a su debido momento (sin delay)
Sección titulada «Tiempos: hacer cosas a su debido momento (sin delay)»Regla base: no uses delay(). delay(1000) congela el loop() un segundo entero,
y durante ese segundo no se llama a tpt.update() — no se sincroniza nada. Para
repetir o diferir acciones (que no sean el sync de variables, que ya es automático)
tienes dos timers de utilidad:
void avisarListo() { estado = "listo"; // editas una variable; la librería la reporta}
void setup() { Serial.begin(115200); // ...TPT_VAR... tpt.begin(); tpt.every(2000, latido); // repite cada 2000 ms tpt.after(500, avisarListo); // corre UNA vez, 500 ms tras el boot}
void loop() { tpt.update();}everyrepite indefinidamente;aftercorre una sola vez. En ambos, la función no recibe argumentos.- El ritmo con el que se reportan tus variables
d2g/bilo controlas desde el thing consetRate(ver boardCode), no con estos timers.every/afterson para lógica auxiliar de tu sketch.
Cuántos timers puedes tener
Sección titulada «Cuántos timers puedes tener»every y after comparten un cupo de 8 timers en total (8 entre los dos).
- Regístralos una sola vez, en
setup(). Un noveno se ignora en silencio y los espacios no se liberan, así que no llames aevery/afteruna y otra vez dentro delloop(). - ¿Necesitas más de 8? Súbelo antes del
#include:#define TPT_MAX_TIMERS 16.
WiFi: el puerto y varias placas (solo ESP32)
Sección titulada «WiFi: el puerto y varias placas (solo ESP32)»Con Transparent tpt(puerto), tu placa es un pequeño servidor en su propia IP. La
plataforma se conecta a esa IP:puerto (que copias al config del thing tras subir el
sketch). El puerto lo eliges tú en el constructor. Puedes tener varias placas WiFi
en el mismo gateway: cada una está en su propia IP, así que no chocan aunque usen el
mismo puerto.
ESP32-S3 por USB nativo (CDC)
Sección titulada «ESP32-S3 por USB nativo (CDC)»Para usar el puerto USB nativo del ESP32-S3:
- Activa “USB CDC On Boot: Enabled” en las opciones de la placa (Tools).
- Conecta al puerto USB nativo del S3 (no al bridge UART).
- El constructor es
Transparent tpt(Serial)(igual que en Arduino).
Ajustes avanzados (y cuándo cambiarlos)
Sección titulada «Ajustes avanzados (y cuándo cambiarlos)»Se redefinen antes del #include:
#define TPT_MAX_TIMERS 12 // por defecto 8#define TPT_MAX_VARIABLES 12 // por defecto 8#define TPT_MAX_STRING_VARIABLES 3 // por defecto 2#include <Transparent.h>TPT_MAX_TIMERS(8): más timersevery/aftera la vez.TPT_MAX_VARIABLES(8): máximo de variables registrables conTPT_VAR.TPT_MAX_STRING_VARIABLES(2): máximo de variables de tipoString(cada una reserva memoria fija para comparar cambios).
Sigue con la API del MCU.