Go Down

Topic: [PD]PureData a Arduino (Read 982 times) previous topic - next topic

adrian_goya

Feb 10, 2006, 11:14 am Last Edit: Feb 10, 2006, 11:37 am by adrian_goya Reason: 1
Hola, estoy tratando de controlar las salidas digitales de mi Arduino desde PureData. Estoy usando comport desde PD para mandar un numero y quiero que Arduino lo lea y prenda un LED. Me parece que esto es bastante sencillo pero no puedo hacer que funcione.

Estoy usando el ejemplo Serial Read Advanced. Cuando mando data desde PD el foco de TX en el Arduino prende.

¿Qué estoy haciendo mal?

gracias.
adrián goya


int ledPin = 13;  // LED en el pin 13
int val = 0;      //variabe para guardar el data del puerto serial
int serbyte = 0;  //variable para guardar el data VALIDO del puerto

void setup()
{
 
  pinMode(ledPin, OUTPUT);
  beginSerial(19200);
}
  
void loop()
{
  serbyte = serialRead();
    if (val !=  -1) {
   val = serbyte;
    }
  
  if (val == 113) {              
  digitalWrite(ledPin, LOW);  
 }  else {
    digitalWrite(ledPin, HIGH);  
  delay(1000);
  }

 }
 

adrian_goya

Pongo aquí la solución que se obtuvo en el foro de software troubleshooting, por si es de utilidad para alguien.

-->Las variables iniciales deben ser declaradas como char, en vez de int. Decía:

int val = 0;  
int serbyte = 0;
 
lo cambié por:
 
char val = 0;
char serbyte = 0;

El código del ejemplo tenía un error, decía:

    if (val !=  -1) {
   val = serbyte;  
    }
  
debería ser:
 
    if (serbyte !=  -1) {
   val = serbyte;  
    }


suerte,
adrián goya

armadillo

hola adrian gracias por este post :)

oye como aun no lo intento y acabo de leer acerca de como enviar datos de pd al arduino [comport] sabes o tienes algun patch de pd sencillo que sirva de ejemplo o pareja del caso basico que mencionas en este post.

un saludo!
/a

David Cuartielles

Hola,

tengo noticias al respecto de esta pregunta. Durante el ultimo taller que tuvimos en Madrid, H.C. Steiner (de PD) y yo nos dimos cuenta de que el parche comport2000 que se emplea tipicamente en PD para mandar datos desde el ordenador hacia el puerto serie (esto seria desde el ordenador a Arduino) no funcionaba apropiadamente. La razon de esto era en principio un misterio.

Sin embargo, nos dimos cuenta que el codigo original del parche de PD tenia una errata en una de las flags, asi como no era capaz de direccionar mas alla del COM4. Como quiera que teniamos interes en hacer un parche con capacidad para atacar un numero tan grande de puertos serie como fuera posible, hicimos una revision del codigo y ahora es capaz de conectar hasta el COM40 y de enviar datos bidireccionalmente.

Yo soy usuario de Windows, asi que recompile las librerias para windows. Me consta que Hans tuvo el detalle de hacer lo propio para Mac y Linux. Si teneis interes en descargar las DLL revisadas (windows) id a:

http://www.arduino.ws/files/pd/windows

Si teneis interes en los parches para los otros sistemas operativos, tendre que extender la consulta a Hans.

Por otra parte, Hans acaba de sacar un parche muy interesante que consiste en una combinacion de un firmware para Arduino y un parche de PD que combinados permiten leer y escribir de y hacia cada uno de los pines de Arduino. Es una buena combinacion para aquellos que no tienen interes en utilizar la placa desconectada del ordenador. Hay mas informacion en:

http://www.arduino.cc/playground/Interfacing/PD

Aunque solo esta en ingles. Esto creo que nos llevara algo mas de tiempo traducirlo, a no se que hay por ahi algun voluntario ;-)

Un saludo,

David

armadillo

#4
Jun 03, 2006, 12:17 am Last Edit: Jun 03, 2006, 12:20 am by armadillo Reason: 1
hola david!

con gusto lo tradusco, en cuanto logre entenderlo y/o usarlo... claro esta!
aun no consigo mover un servo desde pd.. :/

aproposito ha habido bastante tela con el tema en la lista de correos de puredata: http://elists.resynthesize.com/pd-list/2006/05/1602280/ lastimosamente ha girado alrededor del tema [pwm] y parece que pd envia señales con demasiado ruido.. la discusion se ha tornado tan compleja que el tema de controlar un servo desde pd usando el objeto [arduino] que arriba mencionas no parece estar resuelto..

me gustaria estar equivocado y que alguien compartiera aca un pd patch que use (o no) el objeto de hans c steiner (basado en comport + otros).. yo intentare usar como base lo que en este post describe adrian + el codigo de tom igoe, http://www.tigoe.net/pcomp/code/archives/arduino/000741.shtml

delayMicroseconds(us) + Serial Read Advanced

si tengo pulso y tino estare abriendo un nuevo topic con el codigo para que me ayuden a pulirlo..

en la buena,
/a

Go Up