servo-cloud.ino

Particle Photon · Archivo : servo-cloud.ino · Lenguaje : Arduino · Uso : Tourner un servo à distance avec une commande cloud

El servo gira con una simple llamada a la nube (Particle.function "tourner") y su posición queda legible como variable. La rutina de volver al centro tras dos minutos muestra cómo dar autonomía razonable a un actuador conectado.

Hardware

Un módulo Particle Photon (Wi-Fi 2,4 GHz, microcontrolador STM32, blindaje metálico) alimentado por USB o VIN. 1 servo de ángulo (SG90) + alimentación externa de 5 V aconsejada.

Cableado

Señal del servo a A1, + a 5 V externo, - a GND común con la placa.

Funcionamiento

La librería Servo genera el impulso de 50 Hz; tourner() valida la consigna 0-180, la envía al servo y la devuelve a la nube. La variable position sigue siendo consultable en cualquier momento.

Ejecución

Con el CLI de Particle: particle flash --serial (modo DFU, doble reset) o flash OTA cuando la placa esté en línea. El Safe Mode (reset + WiFi) sirve para depurar.

Variantes

Añadir posiciones memorizadas ("home", "scan"), o encadenar una serie de posiciones para un gesto repetido.

servo-cloud.ino

// Servo d'angle sur A1, position commandee par Particle.function.
#include "Servo.h"

Servo myservo;
int position = 90;

int tourner(String args) {
  int v = args.toInt();
  if (v < 0 || v > 180) return -1;
  position = v;
  myservo.write(position);
  return position;
}

void setup() {
  myservo.attach(A1);   // signal du servo sur A1
  myservo.write(position);
  Particle.function("tourner", tourner);
  Particle.variable("position", position);
  Serial.begin(9600);
}

void loop() {
  // Petite routine : revenir au centre apres 2 min sans commande.
  static unsigned long dernierOrdre = 0;
  if (position != 90 && millis() - dernierOrdre > 120000) {
    dernierOrdre = millis();
    tourner("90");
  }
  // Met a jour la reference du temps a chaque commande recue.
  static int dernierePos = 90;
  if (position != dernierePos) {
    dernierePos = position;
    dernierOrdre = millis();
  }
}

// Commande : Particle.function "tourner" avec "45", "90", "135".

← Volver a la ficha