bouton-evenement.ino

Particle Photon · Fichier : bouton-evenement.ino · Langage : Arduino · Usage : Publier un événement cloud à chaque appui sur un bouton

Chaque appui publie un événement JSON vers le cloud Particle, consultable par d'autres cartes (abonné) ou par un webhook. Le montage anti-rebond est identique à l'Arduino nu : le framework ajoute juste la couche publish.

Matériel requis

Un module Particle Photon (Wi-Fi 2,4 GHz, microcontrôleur STM32, blindage métallique) alimenté par USB ou VIN. 1 bouton poussoir entre D2 et GND.

Câblage

Bouton entre D2 et GND ; la résistance de tirage est interne (INPUT_PULLUP).

Fonctionnement

Après validation du front (30 ms), snprintf construit une trame JSON et Particle.publish l'envoie au cloud. Les abonnés (Particle.subscribe) et webhooks la reçoivent en temps quasi réel.

Exécution

Avec le CLI Particle : particle flash --serial (mode DFU, double reset) ou flash OTA une fois la carte en ligne. Le mode Safe Mode (reset + WiFi) sert au dépannage.

Variantes

Publier aussi la température interne (getTemperature), ou déclencher une action locale sur un événement reçu (subscribe + handler).

bouton-evenement.ino

// Bouton sur D2 : publish d'un evenement cloud a chaque appui.
int bouton = D2;              // bouton vers GND, patte libre sur D2
bool etatPrecedent = HIGH;
unsigned long dernierBord = 0;

void setup() {
  pinMode(bouton, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  bool lecture = digitalRead(bouton);
  unsigned long maintenant = millis();

  if (lecture != etatPrecedent) {
    dernierBord = maintenant;
  }
  if (maintenant - dernierBord >= 30 && lecture != etatPrecedent) {
    etatPrecedent = lecture;
    if (lecture == LOW) {                 // appui (PULLUP -> LOW)
      char trame[48];
      snprintf(trame, sizeof(trame),
               "{\"appui\":%lu,\"uptime\":%lu}",
               millis(), millis());
      bool ok = Particle.publish("bouton-presse", trame, 60, PUBLIC);
      Serial.println(ok ? "evenement publie" : "publication refusee");
      // NB : limite de flux cloud ~1 publish/s : ne pas spammer.
    }
  }
}

← Retour à la fiche