Go Down

Topic: Recuperer une donnée processing dans arduino (Read 936 times) previous topic - next topic

gainz

code processing seul ok
code arduino seul ok

pb je n'arrive pas a envoyer ma valeur processing (s) dans arduino???
code ci-dessous:

import processing.serial.*;


Serial port;





int[] difference(int[] a, int[] b) {                          // renvoie un tableau dont les éléments sont la différence des éléments des 2 tableaux en entrée
  int i;
  int [] c= new int [a.length];
  for (i=0;i<c.length;i++) {
    c=a-b;
  }
  return c;
}

int compteur(int []a) {                                        // renvoie le nombre de cellules nulle d'un tableau
  int i;
  int c=0;
  for (i=0;i<a.length;i++) {
    if (a==0) {
      c=c+1;
    }
  }
  return c;
}


int[] stockage(PImage f) {                                    // renvoie dans un tableau les couleurs en niveau de gris
  int[] a=new int[f.width*f.height] ;                                     // d'une image couleur f
  int w = f.width;
  int h = f.height;
  size(w, h);
  image(f, 0, 0);
  int i;
  i=0;
  for (int y=0; y<h; y++) {
    for (int x=0; x<w; x++) {
      color c = get(x, y);                                    // prend la couleur de chaque pixel
      float r=red(c);                                       // decompose la couleur dans ces composants rgb
      float g=green(c);
      float b=blue(c);
      int m=(int)((r+g+b)/3);                                  //transforme en niveau de gris
      a=m;                                                    // stocke les couleurs des pixels de l'image de référence dans le tableau a
      i=i+1;
    }
  }
  return a;
}

void setup() {
  println(Serial.list());                                 
  // ouvre le port au débit voulu
  String portName = Serial.list()[0];
  port = new Serial(this, portName, 9600);


  PImage[] images=new PImage[4];
  int t=0;
  int s =0;


  for (int i=1;i<images.length+1;i++) {
    images[i-1]=loadImage("im"+i+".bmp");
  }                            //on charge l'ensemble des images

  for (int j=2;j<5;j++) {
    println(compteur(difference(stockage(images[j-1]), stockage(images[0]))));          // l'image de reference est im1
    if (compteur(difference(stockage(images[j-1]), stockage(images[0])))>t) {                                   // on balaye sur toutes les autres images
      t=compteur(difference(stockage(images[j-1]), stockage(images[0])));
      s=j;
    }                                   // on conserve l'image la plus proche
    //celle qui a le plus de pixels identiques
  }
  println("l'image la plus proche est im"+s+".bmp");
  myPort.write(s);
}

/*
  // code Arduino



int led2 = 2;             // déclaration des broches
int led3 = 3;
int led4 = 4;
void setup() {
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT); // on déclare les pin en sortie
Serial.begin(9600); // communication série à 9600 bps
}


void loop() {
if (Serial.available()) { // on test s'il ya qqch à lire
int  val = Serial.read();
}                         // on stocke dans val
if (val == 2) {                   // si 2 est reçu
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
// on fait clignoter  led 2
delay(200);

digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
delay(200); // attendre 100 ms
}

if (val == 3) {
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
delay(200);

digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
delay(200);
}


if (val == 4) {
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
delay(200);

digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
delay(200); 
}
}
*/



Go Up