clignotant-rest.ino

Arduino Tian (id : tian) · Fichier : clignotant-rest.ino · Langage : Arduino · Usage : Piloter la LED par REST depuis le côté Linux ou le réseau

Le pont REST est la signature des cartes Yun/Tian : le croquis devient un serveur HTTP local. Un curl côté Linux (ou le navigateur) allume et éteint la LED — la démonstration immédiate du dual-boot MCU + Linux.

Matériel requis

Une Arduino Tian (Microchip SAM3X8E + Linux TianOS sur Atheros AR9344, double port USB, Ethernet et Wi-Fi). Aucun : LED utilisateur embarquée.

Câblage

Rien à câbler. Carte connectée au réseau (câble ou Wi-Fi) pour l'accès distant.

Fonctionnement

Bridge.begin() établit le lien avec le Linux ; YunServer écoute sur localhost et l'URL /arduino/... arrive au croquis. La commande lue (on/off/toggle) pilote la broche, la réponse revient en HTTP.

Exécution

Arduino IDE avec la carte Arduino Tian : téléversement par le port USB « Native ». Côté Linux : ssh root@arduino.local. La bibliothèque Bridge est identique à celle de la Yun.

Variantes

Ajouter un chemin /analog pour lire A0 en JSON, ou brancher l'URL sur un bouton d'une page servie par le Linux.

clignotant-rest.ino

// Le croquis expose un mini-serveur REST : le cote Linux (ou un
// navigateur via http://arduino.local/) commande la LED utilisateur.
#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>

YunServer serveur;
const int LED = LED_BUILTIN;
bool etat = false;

void setup() {
  pinMode(LED, OUTPUT);
  Bridge.begin();          // attend le lien avec le Linux
  serveur.listenOnLocalhost();
  serveur.begin();
}

void loop() {
  YunClient client = serveur.accept();
  if (!client) return;     // pas de connexion : on revient vite

  String commande = client.readStringUntil('/');
  commande.trim();

  if (commande == "led") {
    String action = client.readStringUntil('/');
    action.trim();
    if (action == "on") etat = true;
    else if (action == "off") etat = false;
    else if (action == "toggle") etat = !etat;
    digitalWrite(LED, etat);
    client.print(etat ? "on" : "off");
  } else {
    client.print("led/on|off|toggle");
  }
  client.stop();
  delay(50);               // laisse le temps de fermer la connexion
}

← Retour à la fiche