martes, 18 de marzo de 2014

Processing con Pinguino X4

Processing con Pinguino X4

En el blog tengo publicaciones previas de como interactuar con la tarjeta Pinguino desde Processing, pero el código correspondiente a la tarjeta Pinguino, ya no es compatible con el nuevo IDE X4, por lo cual al compilarlo generara errores.
La librería correspondiente a Processig sigue siendo la misma y sigue operando bien para la versión actual de Processing.

USB Processing Código Para Pinguino X4

Este código corresponde al modo de operación de comunicación modo Bulk tal como esta para la nueva versión del IDE de programación del la tarjeta Pinguino que tiene instrucciones diferentes para la lectura y escritura.
El siguiente código se probo con un microcontrolador 18f4550 con el bootloader versión 2.12
La conexión la probé desde GNU/Linux con Ubuntu



//Por: Julio Fabio De La Cruz G. 2014
//http://micropinguino.blogspot.com 
//Adaptacion a pinguino X4 para emplear la libreria usbprocessing
//Basado en el trabajo de Stéphane Cousot, Jean-Pierre Mandon y Douglas Edric Stanley.
int i;
int temp;
u8 receivedbyte;
char rbuffer[64];
char sbuffer[2];
void setup(){
    TRISB=0;
    for(i=8;i<=12;i++)
        pinMode(i,INPUT);  
    for(i=21;i<=28;i++)
        pinMode(i,INPUT);
}
void loop(){
    receivedbyte=0;
    if(BULK.available()) 
        do {
            receivedbyte = BULK.read(rbuffer);
        } while (receivedbyte == 0);
    rbuffer[receivedbyte] = 0;
    if (receivedbyte > 0){
      if(rbuffer[0]=='+'){
        if (rbuffer[1]=='C')
            PORTB=0;
        if(rbuffer[1]=='W'){
            if(rbuffer[2]=='D')
                digitalWrite(rbuffer[3],rbuffer[4]);
            if(rbuffer[2]=='A'){
                temp=rbuffer[4]+(rbuffer[5]*256);
                analogWrite(rbuffer[3], temp );
            }
        }
        if(rbuffer[1]=='R'){
            if(rbuffer[2]=='D'){
                sbuffer[0]=digitalRead(rbuffer[3]);
                BULK.write(sbuffer[0], 1);
            }
            if(rbuffer[2]=='A'){
                temp=analogRead(rbuffer[3]);
                sbuffer[0]=temp;
                sbuffer[1]=temp/256;
                BULK.write(sbuffer, 2);
            }
        }
      }
    }
}

6 comentarios:

  1. Prodrias hacer un ejemplo para comunicacion con el boot v4 uso el pic 18f4550 y no e podido comunicarme con procesing y uso pinguino ide x4 rev 956

    ResponderEliminar
  2. tengo problemas con la funcion lcd.printFloat(); el x.4 me genera error al compilarla, podrian colaborarme con algun manual de la estructura de trabajo de esta funcion

    ResponderEliminar
  3. amigo , estoy tratando de probarla pero nada al compilarla me da errores ese codigo

    ResponderEliminar
  4. hola tengo un problema al seguir los pasos para usar processing con pinguino me marca error al usar processing

    ResponderEliminar
  5. al usar processing me marca esto
    !!! Pinguino error : initialization failed
    LibusbJava.usb_set_configuration: libusb0-dll:err [set_configuration] could not set config 3: win error: El parámetro no es correcto.

    !!! Pinguino error : invalid device handle

    ResponderEliminar