Bonjour, donc voilà je suis un petit nouveau dévorant ces nouvelles technologies même si la difficulté est souvent au rendez-vous.
Avant de venir posté je me suis beaucoup renseigné et j'ai essayé pas mal de chose, je ne veux pas me décourager donc je viens vers vous pour avoir quelques réponses, voir même la résolution de mon problème.
En fait je cherche à créer un interrupteur via arduino en utilisant l'entrée 5V et la masse.
En cherchant un peu j'ai trouvé des réponses et j'ai simulé mon interrupteur avec une LED.
int BrocheLED = 13; int inter = 2; void setup() { pinMode(inter, INPUT); pinMode(BrocheLED,OUTPUT); } void loop () { int valinter = 2; valinter = digitalRead(inter); if (valinter == LOW) { digitalWrite(BrocheLED,HIGH); } else { digitalWrite(BrocheLED,LOW); } }
Mon but par la suite est de lancer une vidéo de compositing et de mapping via processing, tout en prenant en compte les informations d'arduino.
Pour lancer la vidéo j'ai trouvé ce code :
Ensuite en étudiant un peu l'interaction d'arduino avec processing j'ai trouvé comment implanter la librairy cc.arduino dans processing et j'ai exploité mon code arduino :
import processing.serial.*; import cc.arduino.*; Arduino arduino; int BrocheLED = 13; int inter = 2; int valinter = 2; void setup() { arduino = new Arduino(this, Arduino.list()[0], 57600); arduino.pinMode(inter,Arduino.INPUT); arduino.pinMode(BrocheLED, Arduino.OUTPUT); } void draw() { if (valinter == Arduino.LOW) { arduino.digitalWrite(BrocheLED, Arduino.HIGH); } else { arduino.digitalWrite(BrocheLED, Arduino.LOW); } }
Maintenant je bloque pour insérer le code de vidéo de processing à la place du principe de LED pour qu'elle se lance une fois l'interrupteur activé.
Je vous remercie d'avance de vos réponses
Hors ligne
Salut et bienvenue,
Tu dois remplacer les digitalWrite par des Serialprint :
http://arduino.cc/en/Serial/Print
de cette façon tu envoi des infos à Processing et puis hop après tu n'as plus qu'à les traiter dans processing pour demarrer ta vidéo ...
edit:
pardon en fait ça c'est si tu utilise la librairie processing.serial uniquement (version plus brut de décoffrage) sinon avec la lib cc.arduino ça me parait encore plus simple : en changeant cette partie :
if (valinter == Arduino.LOW) { arduino.digitalWrite(BrocheLED, Arduino.HIGH); } else { arduino.digitalWrite(BrocheLED, Arduino.LOW); }
par
if (valinter == Arduino.LOW) { myMovie.play(); } else { myMovie.pause(); }
Dernière modification par oyster_twiter (2011-05-05 13:03:45)
Hors ligne
Je vous remercie de votre réponse ^^
Donc voilà mon avancement avec vos conseils :
Sur Arduino :
int inter = 2; int x = 0; void setup() { pinMode(inter, INPUT); Serial.begin(9600); } void loop () { int valinter = 2; valinter = digitalRead(inter); if (valinter == LOW) { Serial.print(HIGH); } else { Serial.print(LOW); } }
Tout fonctionne correctement, le Serial Monitor reconnait l'incrémentation de valeur quand je relie les fils.
Du côté de Processing :
import processing.serial.*; import cc.arduino.*; import processing.video.*; Movie myMovie; Arduino arduino; int inter = 2; void setup() { arduino = new Arduino(this, Arduino.list()[0], 57600); arduino.pinMode(inter,Arduino.INPUT); size(200, 200, P3D); myMovie = new Movie(this, "einsturz01b.mov"); myMovie.loop(); println(Serial.list()); } void draw() { image(myMovie, 0, 0); int valinter = 2; valinter = arduino.digitalRead(inter); if (valinter == Arduino.LOW) { myMovie.play(); } else { myMovie.pause(); } }
Et dans ce cas il m'indique des erreurs : Error inside Serial.<init>() sur la ligne de code :
arduino = new Arduino(this, Arduino.list()[0], 57600);
Et voici les erreurs annexes annoncées :
Stable Library ========================================= Native lib Version = RXTX-2.1-7 Java lib Version = RXTX-2.1-7 gnu.io.PortInUseException: Unknown Application at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) at processing.serial.Serial.<init>(Unknown Source) at processing.serial.Serial.<init>(Unknown Source) at cc.arduino.Arduino.<init>(Arduino.java:169) at video_reaction.setup(video_reaction.java:38) at processing.core.PApplet.handleDraw(Unknown Source) at processing.core.PApplet.run(Unknown Source) at java.lang.Thread.run(Thread.java:619) processing.app.debug.RunnerException: RuntimeException: Error inside Serial.<init>() at processing.app.Sketch.placeException(Sketch.java:1543) at processing.app.debug.Runner.findException(Runner.java:582) at processing.app.debug.Runner.reportException(Runner.java:558) at processing.app.debug.Runner.exception(Runner.java:498) at processing.app.debug.EventThread.exceptionEvent(EventThread.java:367) at processing.app.debug.EventThread.handleEvent(EventThread.java:255) at processing.app.debug.EventThread.run(EventThread.java:89) Exception in thread "Animation Thread" java.lang.RuntimeException: Error inside Serial.<init>() at processing.serial.Serial.errorMessage(Unknown Source) at processing.serial.Serial.<init>(Unknown Source) at processing.serial.Serial.<init>(Unknown Source) at cc.arduino.Arduino.<init>(Arduino.java:169) at video_reaction.setup(video_reaction.java:38) at processing.core.PApplet.handleDraw(Unknown Source) at processing.core.PApplet.run(Unknown Source) at java.lang.Thread.run(Thread.java:619)
Dans ce cas je ne sais pas si c'est du au fait qu'il ne trouve pas la source...
Hors ligne
Bonjour Itoana,
En lisant le texte de l'erreur « gnu.io.PortInUseException: Unknown Application », j'ai l'impression que ton problème vient du numéro de port série, une seule application peut accéder au port série, est ce qu'il n'y aurait pas autre chose qui tourne, ou alors ce n'est pas le bon numéro de port série, dans ce cas que donne un print de Arduino.list() ?
Hors ligne
Pages: 1