Bonjour à tous,
Voila j'utilise ce sketch trouvé sur interface Z pour récupérer les données d'un télémètre.
Cela fonctionne, j'obtiens donc dans la console d'affichage les valeurs de ma variable telemetre.
Ce sketch peut donc servir a calculer une distance entre le capteur et un corps physique.
Cependant, j'aimerais m'en servir comme détecteur de mouvement.
Je cherche donc a obtenir un contrôle de la valeur renvoyé par le télémètre, à la valeur précédemment envoyé.
(telemetre à t 0) - (telemetre a t -1) = difference
Ainsi, si la valeur différence est supérieur ou inférieur à 0, il y a captation d'un mouvement, pouvant même être mesuré selon la valeur de l'écart.
Seulement, étant débutant dans Processing en particulier sur la courbe du temps je n'y parviens pas.
Est ce que quelqu'un aurait une idée?
* Reception des donnees d'un telemetre a ultrasons simple Interface-Z * Receiving data from a Midi ultrasound rangefinder */ import rwmidi.*; // RWMidi se trouve chez http://ruinwesen.com/blog?id=95 MidiInput input; void setup() { // Affichage des peripheriques Midi disponibles sur l'ordinateur // Displaying Midi devices existing on the computer println("........Peripheriques Midi In........"); println(RWMidi.getInputDevices()); // Choisir le numero du peripherique, ici [1], dans la liste // Choose the appropriate Midi device from the list input = RWMidi.getInputDevices()[1].createInput(this); } int[] valeur = new int[2]; int numero; int telemetre; // Reception des donnees du capteur. // Receiving sensor data. void controllerChangeReceived(Controller ctlchg) { numero = ctlchg.getCC(); if (numero==2) { valeur[0] = ctlchg.getValue(); } if (numero==3) { valeur[1] = ctlchg.getValue(); telemetre = valeur[1] + (valeur[0] << 7); } } void draw() { println(telemetre); }
Hors ligne
tu ajoutes une variable int telemetreP=0; (p pour précédent) après la variable int telemetre;
cette variable servira a stocker la valeur précédente de telemetre
a la fin de ton draw tu ajoutes telemetreP=telemetre;
et dans ton draw tu ajoutes ça :
si ça bouge, tu auras "it's alive" qui apparaitra dans la console
Dernière modification par cgiles (2012-04-02 23:10:18)
Hors ligne
Super!
J'ai testé et ça marche super bien.
Merci beaucoup.
Pour paramétrer la captation et tolérer certains mouvements furtifs je penses du coup utiliser quelque chose du genre
if(telemetre > telemetreP +10 || telemetre < telemetreP - 10){
println("it's alive");
}
A moins que vous voyez autre chose?
Merci beaucoup encore
Hors ligne
remplace ton 10 par une variable "tolerance" ainsi tu la changeras plus rapidement^^
Hors ligne
Oui,
C'est une méthode que je commence enfin a utiliser et qui me fait vraiment gagner beaucoup de temps!
Hors ligne
C'est simple, toute valeur que tu utilises plus d'une fois, tu la remplaces par une variable
Hors ligne
Pages: 1