Skip to content

El entorno

This content is not available in your language yet.

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.

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.

La plataforma inyecta estos objetos; los usas directamente, sin declararlos:

GlobalQué esCuándo lo usas
fivefrvn componentes: objetos de alto nivel (Led, Servo, Sensor…) ya enlazados a esta placa.La forma rápida y legible de controlar hardware común.
boardfrvn: la placa a bajo nivel (pines, analógico, I2C, SPI…).Control fino, o hardware sin componente propio.
breadLa placa como objeto base; aporta bread.loop(ms, fn) y bread.wait(ms, fn).Bucles temporizados que se limpian solos.
varGLas 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).

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(...) o board.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.

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.