Bonjour,
J'ai bien avancé dans ma machine à faire des gouttes pour les photographier ... Pour le moment je commande la led de l'arduino, mais par la suite je commanderais une électrovanne.
J'utilise une interface avec des sliders dans processing et envoie via le câble usb des valeurs vers la carte arduino.
Tout marche bien dans 98% des envois, mais de temps en temps les données reçues sont mauvaises ...
Pour vérifier, j'ai branché sur la carte un petit écran lcd qui m'affiche mes variables ... Et quelque fois, la variable ne correspond plus à ce que processing à envoyé ... ??? Et les nombres qui reviennent sont souvent les mêmes : 6464;3564;9564;10100 ....
J'ai essayé de mettre des poses un peu partout, mais rien n'y fait, si quelqu'un pouvais m'aider un peu .... J'en ai assez de voire cette loupiote clignoter, J'ai hâte de brancher mon électrovanne ...
Je vous mets ici mes codes :
Processing:
import processing.serial.*;
Serial port;
PFont fontA;
import controlP5.*;
ControlP5 controlP5;
int posgo =70;
int epaigo = 8;
int grossgo =12;
boolean toggleValue = false;
int NBG = 4;//Nombre de gouttes (de 1-5)1 slider - Tag A
int GG1s = 0;//Grosseur de la goutte ou temps d'ouverture de l'électrovanne (de 1ms à 5s) 3 sliders (1ms*100;10ms*100;1s*5) - Tag B
int GG10ms = 10;//Tag C
int GG1ms = 0;//Tag D
int TEGGtot=0;
int TECG1s = 0;//Temps entre chaque goutte (de 1ms à 5s) 3 sliders (1ms*100;10ms*100;1s*5) - Tag E
int TECG10ms = 10;//Tag F
int TECG1ms = 0;//Tag G
int TECGtot=0;
int TEGG = 1;//Temps entre Groupe de gouttes (de 1s à 20s) 1 slider - Tag H
int TDEC1s = 0;//Temps avant déclenchement de l'appareil photo (de 1ms à 5s) 3 sliders (1ms*100;10ms*100;1s*5) - Tag J
int TDEC10ms = 10;//Tag K
int TDEC1ms = 0;//Tag L
int TDECtot =0;
int DEB =0;// Bouton de validation de laché de gouttes
void setup() {
size(600, 700);
smooth();
fontA = loadFont("ComicSansMS-16.vlw");
textFont(fontA, 12);
controlP5 = new ControlP5(this);
controlP5.setColorForeground(0xff6666ff);
controlP5.setColorBackground(0xff0000ff);
controlP5.setColorLabel(0x0);
controlP5.setColorValue(0xffffffff);
controlP5.setColorActive(0xff6666ff);
println("Available serial ports:");
println(Serial.list());
port = new Serial(this, Serial.list()[3], 19200);
//Slider Nombre de gouttes
controlP5.addSlider("NBG",0,5,4,10,75,300,10)
.setLabel("");
//Slider Grosseur de la goutte
controlP5.addSlider("GG1s",0,5,0,10,140,300,10)
.setLabel("");
controlP5.addSlider("GG10ms",0,100,10,10,170,300,10)
.setLabel("");
controlP5.addSlider("GG1ms",0,100,0,10,200,300,10)
.setLabel("");
//Slider Temps entre chaque goutte
controlP5.addSlider("TECG1s",0,5,0,10,270,300,10)
.setLabel("");
controlP5.addSlider("TECG10ms",0,100,10,10,300,300,10)
.setLabel(" ");
controlP5.addSlider("TECG1ms",0,100,0,10,330,300,10)
.setLabel("");
//Slider Temps entre Groupe de gouttes
controlP5.addSlider("TEGG",0,20,5,10,400,300,10)
.setLabel("");
//Slider Temps avant déclenchement de l'appareil photo
controlP5.addSlider("TDEC1s",0,5,0,10,490,300,10)
.setLabel("");
controlP5.addSlider("TDEC10ms",0,100,10,10,520,300,10)
.setLabel(" ");
controlP5.addSlider("TDEC1ms",0,100,0,10,550,300,10)
.setLabel("");
//Bouton de validation
controlP5.addToggle("toggleValue",false,135,655,50,20);
}
void draw() {
background(0);
epaigo=((GG1s*1000 + GG10ms*10 + GG1ms)/20);
grossgo=((GG1s*1000 + GG10ms*10 + GG1ms)/15);
TECGtot=((TECG1s*1000 + TECG10ms*10 + TECG1ms)/7); // Temps total en ms entre chaque goutte;
TEGGtot=(TEGG*1000/20);
TDECtot=(TDEC1s*1000 + TDEC10ms*10 + TDEC1ms);
ellipse (530,posgo, epaigo, grossgo);
ellipse (530,posgo + TECGtot,epaigo, grossgo);
ellipse (530,posgo + TECGtot + TEGGtot,epaigo, grossgo);
ellipse (530,posgo + TECGtot*2 + TEGGtot,epaigo, grossgo);
fill(0xFFFFFFFF); // La couleur de remplissage texte
text("ARDUGOUTTE V1.0 Daniel WAMBACH 21-09-10",8,15);
fill(0xFFFFccCC);
text("NOMBRE DE GOUTTES (2 par defaut)",10,65);
text("GROSSEUR DES GOUTTES (200 par defaut)",10,130);
text("TEMPS ENTRE CHAQUE GOUTTE EN MS(300 ms par defaut)",10,260);
text("TEMPS ENTRE GROUPE DE GOUTTES EN SEC (5sec par defaut)",10,390);
text("TEMPS AVANT LE DECLENCHEMENT DE L'APPAREIL PHOTO (300 ms par defaut)",10,478);
text(" 1 Ã 5 Gouttes",310,85);
text( NBG +" Gouttes d'une grosseur de "+(GG1s*1000 + GG10ms*10 + GG1ms) + " espacées de " + (TECG1s*1000 + TECG10ms*10 + TECG1ms)+ "ms tombent tout les "+ TEGG + " Secondes ",10,600);
text( "L'appareil photo se déclenchera au bout de " + TDECtot + "ms ",10,635);
text(" Secondes",310,150);
text(" 10 MiliSecondes",310,180);
text(" MiliSecondes",310,210);
text(" Secondes",310,280);
text(" 10 MiliSecondes",310,310);
text(" MiliSecondes",310,340);
text(" 1 Ã 20 Secondes",310,410);
text(" Secondes",310,500);
text(" 10 MiliSecondes",310,530);
text(" MiliSecondes",310,560);
text(" VALIDATION",30,670);
delay(10);
port.write(NBG);
port.write('A');
println (NBG);
println ('A');
delay(10);
port.write(GG1s);
port.write('B');
println (GG1s);
println ('B');
delay(10);
port.write(GG10ms);
port.write('C');
println (GG10ms);
println ('C');
delay(10);
port.write(GG1ms);
port.write('D');
println (GG1ms);
println ('D');
delay(10);
port.write(TECG1s);
port.write('E');
println (TECG1s);
println ('E');
delay(10);
port.write(TECG10ms);
port.write('F');
println (TECG10ms);
println ('F');
delay(10);
port.write(TECG1ms);
port.write('G');
println (TECG1ms);
println ('G');
delay(10);
port.write(TEGG);
port.write('H');
println (TEGG);
println ('H');
delay(10);
port.write(TDEC1s);
port.write('J');
println (TDEC1s);
println ('J');
delay(10);
port.write(TDEC10ms);
port.write('K');
println (TDEC10ms);
println ('K');
delay(10);
port.write(TDEC1ms);
port.write('L');
println (TDEC1ms);
println ('L');
delay(10);
if(toggleValue==true) {
DEB=1;
posgo=posgo+10;
} else {
DEB=0;
posgo=70;
}
delay(10);
port.write(DEB);
port.write('I');
println (DEB);
println ('I');
delay(10);
}