El entorno
Cuando programas un thing, escribes lo que llamamos boardCode en el editor web. Tu boardCode no corre en tu navegador ni en un servidor: corre junto a la placa, a través del gateway (el programa que conecta tu placa con la plataforma). Tú escribes la lógica; la plataforma conecta la placa, la deja lista y ejecuta tu código sobre ella.
Esta página explica el “suelo” sobre el que escribes: qué tienes disponible sin configurar nada, y dos reglas del entorno que conviene entender desde el principio.
Lo que NO tienes que escribir
Sección titulada «Lo que NO tienes que escribir»En un entorno tradicional tendrías que importar librerías, declarar la placa, inicializarla y esperar a que esté lista antes de hacer nada. Aquí nada de eso. La plataforma ya lo hizo por ti. Tu boardCode empieza directo en lo que importa:
// Esto es un programa completo y válido. No falta nada arriba ni abajo:const led = new five.Led(13);led.blink(500);No hay imports, ni “setup”, ni un “cuando la placa esté lista…”. Cuando tu código corre, la placa ya está conectada y lista.
Los objetos globales
Sección titulada «Los objetos globales»La plataforma inyecta estos objetos; los usas directamente, sin declararlos:
| Global | Qué es | Cuándo lo usas |
|---|---|---|
five | frvn componentes: objetos de alto nivel (Led, Servo, Sensor…) ya enlazados a esta placa. | La forma rápida y legible de controlar hardware común. |
board | frvn: la placa a bajo nivel (pines, analógico, I2C, SPI…). | Control fino, o hardware sin componente propio. |
bread | La placa como objeto base; aporta bread.loop(ms, fn) y bread.wait(ms, fn). | Bucles temporizados que se limpian solos. |
varG | Las variables globales (gVar) del proyecto: el estado compartido en vivo. | Publicar datos y recibir órdenes (ver Telemetría). |
pushData(clave, valor) | Añade un punto a una serie de gVar, con su marca de tiempo. | Historiales y gráficas. |
Además tienes los temporizadores normales de JavaScript (setTimeout, setInterval,
clearTimeout, clearInterval) y console.log (sus mensajes aparecen en el
visor de logs del gateway).
Regla 1: tu código es autocontenido
Sección titulada «Regla 1: tu código es autocontenido»Cada vez que guardas, la plataforma reinicia la placa y ejecuta tu boardCode otra vez, desde cero. Esto es bueno —siempre arrancas de un estado limpio y predecible—, pero implica una regla: tu código no hereda nada de la ejecución anterior.
En la práctica:
- Si usas un bus, ábrelo al inicio:
board.i2cConfig(...),board.spiBegin(...)oboard.serialConfig(...). - No asumas que un pin sigue en el modo que le pusiste antes: vuelve a declararlo con
board.pinMode(...).
Piensa en cada guardado como “encender la placa de nuevo”.
Regla 2: los temporizadores se limpian solos
Sección titulada «Regla 2: los temporizadores se limpian solos»setInterval(() => { varG.tic = Date.now();}, 1000);En un entorno normal, recargar este código una y otra vez dejaría muchos setInterval
corriendo a la vez (un “fantasma” por cada recarga), pisándose entre sí. Aquí no
pasa: la plataforma cancela automáticamente tus setInterval, setTimeout,
bread.loop() y bread.wait() en cada recarga. No tienes que limpiarlos a mano y no
se acumulan.
Aislamiento entre things
Sección titulada «Aislamiento entre things»Los componentes de five que creas se montan en la placa de este thing. Si tu
proyecto tiene varios things, new five.Led(13) siempre actúa sobre tu placa, nunca
sobre la de otro. No hay mezcla ni interferencia entre things.
Siguiente
Sección titulada «Siguiente»- frvn componentes — la forma rápida, por objetos.
- frvn — control fino de la placa.
- Telemetría con gVar — publicar datos y recibir órdenes.