valeurs-partagees.ino

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

Le magasin de valeurs du pont est la variable partagée MCU↔Linux : valuePut expose une clé lisible par une simple requête HTTP locale, valueGet récupère une consigne écrite depuis le Linux. Deux lignes pour un aller-retour complet.

Matériel requis

Une Arduino Yun (ATmega32U4 + Linux Linino sur Atheros AR9331, Wi-Fi et Ethernet, emplacement microSD). 1 potentiomètre ou LDR sur A0 pour la démo.

Câblage

Curseur sur A0, extrémités sur 5V et GND.

Fonctionnement

Bridge.valuePut pousse la clé vers le démon bridge côté Linux, exposée sous /data/<clé> ; valueGet relit la valeur d'une clé que le Linux a écrite avec un POST /data.

Exécution

Arduino IDE : sélectionne le port série pour téléverser, puis la carte Arduino Yun pour le moniteur. Côté Linux : ssh root@arduino.local (mot de passe de la distribution). L"app Yunwizard configure le réseau.

Variantes

Ajouter des clés d'état (relais, mode) pour un petit automate, ou faire tourner la consigne depuis 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

← Retour à la fiche