Programmation

Les codes et programmes d’Interface-Z

Accueil > Outils > Traitement des données > Analyse > Double comparateur en Usine

Double comparateur en Usine

Mis à jour le mercredi 31 mai 2017, par zandrine

Explications générales : index.

Le double comparateur est présenté ici utilisé avec un capteur pyroélectrique analogique.

Traitement des données, détection de mouvement,
déclenchement de sample

Capteur pyroélectrique. Workspace Usine

Workspace Usine pour capteur pyro Interface-Z.
Workspace Pyro.wkp

Ce workspace montre deux exemples de déclenchement de samples à partir du détecteur de mouvement piézoélectrique. Les deux scripts utilisés sont détaillés ci-dessous. Pour une action donnée, un seul script suffit.

1 - Réception des données

  • Si ce n’est fait, configurer l’interface Midi dans Global Setup / Midi In. L’option Trace In permet d’afficher les messages Midi dans la console de texte.
  • Brancher le capteur Pyro analogique sur la carte à capteurs (ici sur la première entrée d’un 8 Ana), alimenter la carte, connecter le câble Midi sur le In.
  • Poser un module midi in pour recevoir les messages Midi dans le patch. Aucune configuration de ce module n’est nécessaire, le script 8-Ana s’en chargera.
  • La réception des données en 7 bits et le tri des différents capteurs se fait par le script 8-Ana. Ce script doit, bien sûr, correspondre à la carte réellement connectée à l’ordinateur (8 Ana, 4 Ana, 2 Ana, ZIP, etc).
  • Un slider nommé Capteur 1 permet de visualiser les valeurs qui arrivent.

Script Usine pour interface 8 analogiques.

2 - Affichage des données au cours du temps

Les valeurs du capteur sont observables en temps réel à trois endroits :

  • Quand le script 8-Ana est sélectionné à l’intérieur du patch, ses 8 sorties s’affichent à gauche ;
  • Sur le slider Capteur 1 depuis le workspace ;
  • Dans la console texte quand Trace In est activé.

L’observation des données permet de vérifier les seuils de détection du mouvement.

Scripts

Capteur pyro. Script Usine : Pyro_Power

Script Usine pour capteur pyroelectrique.
Pyro_Power.script

Le script Pyro_Power permet de comparer les valeur issues du capteur à deux seuils : un haut et un bas. Voir ci-dessous pour le principe du double seuil.

Si la valeur du capteur dépasse l’un de ces seuils, c’est-à-dire devient inférieure à la valeur basse ou supérieure à la valeur haute, le script envoie "1" sur sa sortie "Mouvement". Sinon, il envoie "0".

Patch Usine pour détecteur de mouvement infra-rouge.
Patch Pyro.pat
- Image agrandie.

Le module "0 to 1" est utilisé en sortie du script pour ne tenir compte que des apparitions de "1".

Ce premier exemple montre que l’on déclenche un son par un mouvement. Ce son se joue en continu jusqu’à la fin du sample, quelle que soit sa durée. Lorsque le sample est fini, il est à nouveau possible de le déclencher par un mouvement.

Le rôle du script est :

  • De détecter un mouvement par comparaison des valeurs du capteurs aux seuils ;
  • De manifester cette détection en sortie par un "1" ;
  • D’empêcher une fausse détection multiple du même mouvement en bloquant l’analyse pendant environ une seconde, pour empêcher que les oscillations des valeurs du capteur qui suivent un mouvement soient confondues avec un autre mouvement. Seule la première est prise en compte, ce qui évite un béguaiement. Pour ce script-ci, cette durée est définie dans le script même et non réglable de l’extérieur.

Le déclenchement du sample est provoqué par la réponse du script, mais le fait qu’il se joue en entier, sans prendre en compte d’éventuels autres mouvements détectés par le capteur, est patché en modules Usine.

Le module Sampler donne en sortie l’information "is playing", utilisée pour bloquer le déclenchement si cette sortie est à 1.

Le module And permet de filtrer le déclenchement, sa sortie n’est à 1 que si les deux entrées sont à 1 aussi, la détection de mouvement et le témoin de jeu du Sampler. La sortie du "And" clique sur "Play" lorsque toutes les conditions sont remplies.

Un Not inverse la sortie "is playing" pour la rendre compatible avec le "And".

Capteur. Script Usine : Pyro_Power_Millisec

Script Usine pour capteur pyroelectrique.
Pyro_Power Millisec.script

Le script Pyro_Power_Millisec permet de comparer les valeur issues du capteur à deux seuils : un haut et un bas. Voir ci-dessous pour le principe du double seuil.

Si la valeur du capteur dépasse l’un de ces seuils, c’est-à-dire devient inférieure à la valeur basse ou supérieure à la valeur haute, le script envoie "1" sur sa sortie "Mouvement". Sinon, il envoie "0".

Il bloque toute détection de mouvement ultérieure pendant une durée, en millisecondes, paramétrable sur l’entrée Durée.

Patch Usine pour détecteur de mouvement infra-rouge.
Patch Pyro.pat
- Image agrandie.

Le module "0 to 1" est utilisé en sortie du script pour ne tenir compte que des apparitions de "1".

Ce deuxième exemple montre un déclenchement de son par un mouvement. Ce son se joue soit jusqu’à la fin du sample, soit se relance si un nouveau mouvement est détecté et si la durée de non détection est plus courte que le sample en question.
Lorsque cette durée est finie, il est à nouveau possible de déclencher le sample par un mouvement, qu’il ait fini d’être joué ou non.

Le rôle du script est :

  • De détecter un mouvement par comparaison des valeurs du capteurs aux seuils ;
  • De manifester cette détection en sortie par un "1" ;
  • D’empêcher une fausse détection multiple du même mouvement en bloquant l’analyse pendant ce temps paramétrable.

Le déclenchement du sample est provoqué par la réponse du script, mais le fait qu’il ne se joue pas en entier, cette fois, est lié au fait que la sortie "is playing" n’est pas utilisée.

Seule l’entrée "Play" du Sampler est activée par la détection de mouvement, via le module "0 to 1".