Go Down

Topic: [RESOLU] récupérer plusieurs valeurs processing vers arduino : serial.read(); (Read 4 times) previous topic - next topic

chesnel

j'ai essayé sans succès :S Je me permet de mettre la totalité du code car je suis presque sur que ce n'est pas ma seul erreur :

Quote

//----------------------Arduino code-------------------------
String fadeLED = "";
char colorLED[] = "";
int upLED = 0;

void setup() { 
  Serial.begin(9600);
  pinMode(11,OUTPUT);  //led rouge
  pinMode(12,OUTPUT);  //led bleue
  pinMode(8,OUTPUT);  //led verte
}

void loop(){
if (Serial.available() > 1) { //  Check if there is a new message
   
    for(int i=0;i<2;i++){
     colorLED = Serial.read();
    }

    if(colorLED[0] == 1){
      upLED = 11;
    }
   
    if(colorLED[0] == 2){
     upLED = 8;
    }
   
     analogWrite(upLED, colorLED[1]);
  }
}

//----------------------------end Arduino code--------------------------------



Code: [Select]

//-----------------Processing code-----------------


import oscP5.*;        //  charge la librairie OSC P5
import netP5.*;        //  charge la librairie P5
import processing.serial.*;    //  charge serial librairie

Serial arduinoPort;        //  Set arduinoPort as serial connection

OscP5 oscP5;            //  Set oscP5 as OSC connection

int redLED = 1000;  //  redLED lets us know if the LED is on or off
int greenLED = 2000;
int blueLED = 0;
int [] upLED = new int[3];
int [] led = new int [3];  //  Array allows us to add more toggle buttons in TouchOSC
int [] fade = new int[3];
byte [] values = new byte[3];
String addr = "";
//char end = "z";


void setup() {
  size(270,100);        // Processing screen size
  noStroke();            //  We don‚Äôt want an outline or Stroke on our graphics
  oscP5 = new OscP5(this,8000);  // Start oscP5, listening for incoming messages at port 8000
  arduinoPort = new Serial(this, Serial.list()[0], 9600);    // Set arduino to 9600 baud
}



void oscEvent(OscMessage theOscMessage) {   //  This runs whenever there is a new OSC message

    //led[1] =  int(theOscMessage.get(0).floatValue());



  String addr = theOscMessage.addrPattern();  //  Creates a string out of the OSC message
  if(addr.indexOf("/1/fader") !=-1) {   // Filters out any toggle buttons
    int i = int((addr.charAt(8) )) - 0x30;   // returns the ASCII number so convert into a real number by subtracting 0x30
    //print(i);
    fade[i]  = int(theOscMessage.get(0).floatValue());     //  Puts button value into led[i]
    // Button values can be read by using led[0], led[1], led[2], etc.
    //fade[1]  = int(theOscMessage.get(0).floatValue());     //  Puts button value into led[i]
    led[i] = i;
    upLED[1] = i;
   
    print(led[i]+ ": "+fade[i]+"\n");
  }




void draw() {
  background(50);        // Sets the background to a dark grey, can be 0-255
 
  values[0] = byte(upLED[1]);
   
  if(upLED[1] == 1){
    values[1] = byte(fade[1]);
  }
 
  if(upLED[1] == 2){
     values[2] = byte(fade[2]);
  }

  for(int i=0;i<2;i++){
    arduinoPort.write(values[i]);
  }
}

//----------------------------------end processing code------------------------------------



encore merci d'avance :)

Jean-François

est ce que tu es sur que "0" est la bonne position de ton serial.list[] ?

Code: [Select]
arduinoPort = new Serial(this, Serial.list()[0], 9600);    // Set arduino to 9600 baud

Pour le savoir, tu fais ça :

Code: [Select]
// List all the available serial ports
println(Serial.list());


Ainsi tu peux voir sur quel port se trouve ton Arduino et tu remets la même position à la place de "0" (chez moi c'est "2").
MacBook intel core 2 duo  os X snow Leopard 10.6
 eMac PPc G4  os X Leopard 10.5
powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

chesnel

Je suis certains pour pour la position du serial en vus que j'ai déjà réussir à établie un échange avec une seul valeur qui passais dans le   arduinoPort.write();

Jean-François

#8
Feb 14, 2011, 10:23 pm Last Edit: Feb 14, 2011, 10:27 pm by Jean-François Reason: 1
Code: [Select]
if (Serial.available() > 0) { //  Check if there is a new message

Code: [Select]
for(int i=0;i<2;i++){
 colorLED[i] = Serial.read();
}

MacBook intel core 2 duo  os X snow Leopard 10.6
 eMac PPc G4  os X Leopard 10.5
powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

chesnel

toujours pas :S

J'essaye d'y aller étape par étape. Pour le moment j'ai réussi à vérifier que les informations sont bien envoyé depuis processing. Par contre je ne sait pas trop comment contrôler du coté de arduino ?

Code: [Select]
Serial.print(Serial.read());

Les valeurs ressorti sont vraiment pas ressemblante à ce que processing me sort... qqun sait comment je peux mieux contrôler les valeurs retourner sur arduino?

Go Up