Bonjour à tous ,
Déja dans un premier temps merci de prendre la peine de me lire et peut-être de m'aider.
je suis en train de concevoir une installation autour de la lumière. L'idée est de confronter une personne à un rétroprojecteur le tout dans un brouillard artificiel afin de décomposer les faisceaux.
Afin de rendre l'expérience plus interactive je voulait créer un système de photoresistance capable si l'a personne se saisissant d'un miroir et orientant les faisceau dans sa direction de lancer un nouveau contenue au niveau du vidéo projecteur.
Je ne vous ai pas perdu ?
en simple:
vidéo projecteur --> faisceau --> humain --> miroir --> faisceau --> photorésistance --> vidéo projecteur
Alors j 'ai cherché je suis d'ailleurs tombé sur un article de ce forum: http://codelab.fr/2449
Et j'y ai donc repris quelque morceau:
Voici mon code afin de récupérer le signale de ma résistance:
void setup() { Serial.begin(9600) } void loop() { Serial.print( analogRead(A0) ); Serial.printIn(""); delay( 500 ) }
Donc d'après ce code je recois les variations de ma photoresistance.
La question est la suivant et je vous previens je n'y connais pas grand chose.
Comment dire à processing que quand une valeur égale a une certaine valeur de lumière ex: 285 processing doit lire telle vidéo a telle endroit.
En cherchant j'ai trouvé ceci:
import processing.video.*; Movie myMovie; void setup() { size(200, 200); myMovie = new Movie(this, "totoro.mov"); myMovie.loop(); } void draw() { tint(255, 20); image(myMovie, mouseX, mouseY); } // Called every time a new frame is available to read void movieEvent(Movie m) { m.read(); }
Mais je ne comprend pas clairement comment faire le lien et je n'arrive pas a joindre les deux bout.
je vous demande donc votre aide par pitié !
et remercie tout ceux qui on pris la peine de lire
Merci encore
Hors ligne
Bonjour,
Afin de faciliter ta prise en main, je te recommande d'utiliser Firmata pour lire directement les valeurs des photo-résistances dans Processing.
http://playground.arduino.cc/Interfacing/Processing
Il faut charger Firmata dans l'Arduino.
- Ouvrir l'IDE Arduino
- Ouvrir le fichier StandardFirmata qui se situe dans le répertoire Exemples/Firmata
- Téléverser le fichier dans l'arduino
Dans la dernière version de Processing
Ajouter la librairie Arduino :
- Sketch/Import librairies/Add librairy
- Taper Arduino dans le champs de recherche
- Cliquer sur Install
Ensuite ouvrir l'exemple arduino_input qui se trouve dans le répertoire Contributed Librairies / Arduino
En branchant la photorésistante tu verras la taille d'un cercle varier.
Tu as tous les éléments pour réaliser ton installation.
Bon courage.
Hors ligne
Salut TodZ,
Pour la partie déclenchement de vidéo, le schéma que je te conseillerais pour pas trop te compliquer la vie ce serait de détecter de manière binaire la valeur renvoyée par ton capteur (lumière/pas de lumière), à chaque détection de "lumière" tu pourrais déclencher une petite fonction qui irait chercher un fichier aléatoirement dans un dossier contenant toutes tes vidéos.
C'est très simple à mettre en oeuvre, poste-nous la base de ton code processing si tu veux de l'aide un peu plus concrète
Hors ligne
bonjour
tu fais comme Muhussu t'as expliquez pour le firmata dans arduino et ensuite tu rentre ce genre de code pour traiter la valeur qui viens de ta photo résistance maintenemt pour lire tes vidéos tu mes tes ruptures de sequences dans les if(va lire ect)
import processing.serial.*; import cc.arduino.*; Arduino arduino; void setup() { size(470, 200); println(Arduino.list()); arduino = new Arduino(this, Arduino.list()[0], 57600); } void draw() { float val= arduino.analogRead(0); if(val==285) { va lire ce que tu veux// ici } if(val>300) { lis ou tu veux} }
Hors ligne
Merci pour votre aide je suis actuellement dessus.
Alors j'ai bien branché ma Photoresistance sur le port analogique 0 (A0) cependant je présume que je dois changer pas mal de truc dans le Fichier Firmata mais quoi?
J'ai correctement activé COM5 mais j'obtient un drôle de rendu
(
Je vous transmet l'image de ce que je recoit comme informations
Y a t il quelque chose a faire ? car dans ce cas la je n'obtient aucune valeur numérique ... :
Hors ligne
Une fois que Firmata est dans l'Arduino tu n'as plus à intervenir dedans. Tu nous montres la transmission série qui se produit.
Ferme l'IDE Arduino et ouvre l'IDE Processing et copie le code ci-dessous :
iimport processing.serial.*; import cc.arduino.*; Arduino arduino; int seuil; void setup() { size(400, 400); println(Arduino.list()); arduino = new Arduino(this, Arduino.list()[0], 57600); arduino.pinMode(0, Arduino.INPUT); rectMode(CENTER); seuil = 300; } void draw() { background(255); if (arduino.analogRead(0) >= seuil) { fill(255, 0, 0); } else { fill(255); } rect(width / 2, height / 2, 100, 100); }
Comme tu sembles fonctionner sous Windows, je ne sais pas comment sont géré les ports série. Mais une liste doit apparaître dans la console Processing et il faut modifier la ligne :
arduino = new Arduino(this, Arduino.list()[0], 57600);
Et lui mettre le bon numéro (changer le 0 actuel par la valeur adéquate)
Si tu ne rencontre pas d'erreur lorsque tu lances le sketch, tu devrais voir le carré changer de couleur en fonction de la luminosité.
Change la valeur du seuil si nécessaire.
Bon courage.
Hors ligne
bonjour
l'erreur vient de la vitesse de transmission ;assure toi que la vitesse de transmission soit identique dans arduino et dans processing.si tu as téléchargé firmata standard dans arduino la vitesse doit être a 57600.Tu dois donc mettre la même vitesse dans processing.
arduino = new Arduino(this, Arduino.list()[0], 57600);
Hors ligne
Pages: 1