Pages: [1]   Go Down
Author Topic: transmision seria arduino->processing processing->arduino  (Read 1617 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cuando envio datos desde arduino a processing hago lo siguiente:
arduino:
Code:
Serial.print(variable1);
 Serial.print("/");
 Serial.print(variable2);
 Serial.print("/");
 Serial.print(variable3);
 Serial.write(46); // 46 es un ejemplo
processing:
Code:
while (myPort.available() > 0) {
chByte = myPort.readChar();
serialEvent(chByte);
}

void serialEvent(char digito) {
if(digito>=47 && digito<=57){ //digito>='0' && digito<='9' || digito=='/') {
    buf += digito;
  }
else if (digito == 46) {
    var_variables = buf;
    String[] S_var = split(var_variables, '/');
    var_1  = int(S_var[0]);
    var_2  = int(S_var[1]);
    var_3  = int(S_var[2]);
}

Pero si quiero enviar datos de processing a arduino:
processing:
Code:
   Serial.write(var);
arduino:
Code:
if (Serial.available()>0){
val=Serial.read();
remoto(val);
 }

 -En el primer caso con Serial.print() envio la variable y con Serial.write() el código de control para que processing sepa que variable es.
 - En el segundo caso, en processing solo dispongo de Serial.write(), y me interesaría enviar a arduino, tanto variables como algún código de control. ¿Es posible hacer esto con Serial.write()? Si envio un número ¿como puede saber arduino si es una variable numérica o un código que permita a arduino saber cual es la variable, como hacía en el 1º caso?

Nota: prefiero no usar librerías para la transmisión serial
Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En Arduino, serial.read() siempre devuelve un número de tipo byte (8 bits - de 0 a 255).

Si envías un carácter "A", Arduino recibe el valor ascii correspondiente (65).

Para más información:
http://arduino.cc/en/Serial/Read
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

¿Sería posible enviar varios bytes dentro de una matriz?
processing:
Code:
int a[] = {45,100,200}
Serial.write(a);
Así usaría el 1º de control y los demas de datos.
« Last Edit: May 25, 2012, 05:03:35 pm by magl » Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si. Solo tienes que tener en cuenta que en Arduino vas a leer los datos byte a byte, para después juntarlos o analizarlos según te convenga

Code:
int i=0;
byte val[3];

loop()
{
if(Serial.available()>0)
{
val[i++]=Serial.read();
}
}
Logged

Pages: [1]   Go Up
Jump to: