MTobjets: Exemple 6
Gestion par événements pour UNO, Nano, Mega

Salves sur une sortie

Problème posé

Vu sur un forum:

Je veux sur une sortie avoir des slaves de 1 à 5 impulsions positives, à une fréquence comprise entre 2 et 3 Hz.

Programme complet recommandé

Ce programme se fait complètement sous interruption, et libère loop qui peut être utilisé pour faire autre chose.

// Génération de slaves d'impulsion sur une sortie
// De 1 à 5 impulsions à 2/3Hz 
// Donc durée maximale 2,5s -> répétition entre 3 et 6s


#include <MTobjects.h> // V1.0.2 Voir http://arduino.dansetrad.fr/MTobjects

MTsoftPWM Slaves(LED_BUILTIN); // Mise en place

void setup()
{
  Slaves.stop(); // Arrêt car fonctionne à l'initialisation. Pourrait être fait lors de sa création!
}

void loop()
{
  // Préparer de 1 à 5 impulsions à 2 à 3 Hz
  long periode = (300 + random(200))*1000 micro_secondes; // Entre 0,3s et 0,5s
  Slaves.setPeriod(periode);
  Slaves.setPulse(periode/2);
  long nombre_de_niveaux = (1 + random(5)) * 2; // Une impulsion c'est 2 niveaux. Entre 2 et 10
  Slaves.setNumberOfLevels(nombre_de_niveaux niveaux_et_arret);
  
  // Démarrer la slave
  Slaves.start();

  // Espace entre deux débuts de slaves
  long attente = 3000 + random(3000) milli_secondes; // Entre 3s et 6s
  delay(attente); // Les slaves se produiront pendant cette instruction
}
void loop(){}

Résultat à l'analyseur: