valeurs-partagees.ino

Arduino Yún · Archivo : valeurs-partagees.ino · Lenguaje : Arduino · Uso : Échanger des valeurs entre le croquis et Linux (valuePut/Get)

El almacén de valores del puente es la variable compartida MCU↔Linux: valuePut expone una clave legible con una simple petición HTTP local y valueGet recupera una consigna escrita desde el Linux. Dos líneas para un viaje completo.

Hardware

Un Arduino Yun (ATmega32U4 + Linux Linino sobre un Atheros AR9331, Wi-Fi y Ethernet, ranura microSD). 1 potenciómetro o LDR en A0 para la demo.

Cableado

Cursor a A0, extremos a 5V y GND.

Funcionamiento

Bridge.valuePut envía la clave al demonio bridge por el lado Linux, expuesta en /data/<clave>; valueGet relee el valor de una clave que el Linux escribió con un POST /data.

Ejecución

Arduino IDE: selecciona el puerto serie para grabar y luego la placa Arduino Yun para el monitor. Por el lado Linux: ssh root@arduino.local (contraseña de la distribución). La app Yunwizard configura la red.

Variantes

Añadir claves de estado (relé, modo) para un pequeño autómata, o rotar la consigna desde un cron Linux.

valeurs-partagees.ino

// Echange de donnees par le magasin de cles du pont.
#include <Bridge.h>

const int CAPTEUR = A0;
unsigned long t0 = 0;

void setup() {
  Bridge.begin();
}

void loop() {
  if (millis() - t0 < 1000) return;
  t0 = millis();

  // 1) Publier la mesure : cote Linux -> GET /data/lumiere
  int brut = analogRead(CAPTEUR);
  Bridge.valuePut("lumiere", String(brut).c_str());

  // 2) Lire une consigne ecrite par le Linux (defaut 500).
  String consigne;
  if (!Bridge.valueGet("seuil", consigne) || consigne.length() == 0) {
    consigne = "500";
  }
  int seuil = consigne.toInt();

  if (brut < seuil) {
    Bridge.valuePut("alerte", "obscurite");
  } else {
    Bridge.valuePut("alerte", "ok");
  }
}

// Cote Linux (Yun) :
//   curl http://localhost/data/lumiere
//   curl -d "400" http://localhost/data/seuil

← Volver a la ficha