PB: import processing value in arduino (recuperer une valeur processing dans arduino)

edited January 2014 in Arduino

code processing seul ok code arduino seul ok

pb je n'arrive pas à recuperer la valeur processing (s) dans arduino???? code ci-dessous

Copied from duplicate thread...
Processing code only is ok arduino code only is ok pb: arduino don't read the value :s return by processing?????

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[i]=a[i]-b[i];
  }
  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[i]==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[i]=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);  
 }
 }
 */

Answers

  • edited January 2014

    Ne personne est capable de lire ça. Utilisez ctrl+T dans Processing devant copier le code sur le forum. Evidemment, si vous posez votre question en Anglais, la chance de réçevoir une réponse est plus grande.

  • edited January 2014
    • Ce forum est anglophone, les messages en autres langues sont à éviter (je crois me souvenir qu'il y a un forum en français, quelque part).
    • Use the C button above the text area to format your selected code (or Ctrl+K).
    • Use the Edit button to improve your first message, don't post the same code over and over (deleted by me).
    • I also deleted the duplicate thread in English, copied the information here...
Sign In or Register to comment.