Un saludo.
Entendí mas o menos lo que quieres, creo que conozco lo que te podría servir y es muy fácil de implementar.
Sin embargo si eres estudiante electrónica te aconsejo que des una repasada a la implementación de una comunicación por USB entre PIC y PC, nunca está de mas saber un poco de esto.
En el mercado existe una tarjeta llamada Arduino hecha con Atmel (...), pero veo que quieres hacer el proyecto tu mismo con un PIC, entonces existe una tarjeta llamada Pinguino [1], muy fácil de montar, ya que sólo usa unos cuantos componentes incluyendo un PIC 18F2550, también mencionas Ubuntu así que mas fácil aún, esta tarjeta trae su propio IDE de desarrollo hecho en Python con WxPython. Ahora la parte de controlar Pinguino conectado a un PC por puerto USB lo puedes lograr con un paquete para Python llamado Pynguino [2] (de mi autoría) que viene con el respectivo código para montar en Pinguino y a partir de ahí sólo te dedicarías a la programar en Python pudiendo configurar pines como entrada, salida, leer estados digitales, análogos etc...
Si estás interesado te puedo orientar con mas profundidad, contactarme por correo si lo prefieres.
[1]: http://www.hackinglab.org/pinguino/index_pinguino.html
[2]: http://code.google.com/p/pinno-processing/wiki/Pynguino
Entendí mas o menos lo que quieres, creo que conozco lo que te podría servir y es muy fácil de implementar.
Sin embargo si eres estudiante electrónica te aconsejo que des una repasada a la implementación de una comunicación por USB entre PIC y PC, nunca está de mas saber un poco de esto.
En el mercado existe una tarjeta llamada Arduino hecha con Atmel (...), pero veo que quieres hacer el proyecto tu mismo con un PIC, entonces existe una tarjeta llamada Pinguino [1], muy fácil de montar, ya que sólo usa unos cuantos componentes incluyendo un PIC 18F2550, también mencionas Ubuntu así que mas fácil aún, esta tarjeta trae su propio IDE de desarrollo hecho en Python con WxPython. Ahora la parte de controlar Pinguino conectado a un PC por puerto USB lo puedes lograr con un paquete para Python llamado Pynguino [2] (de mi autoría) que viene con el respectivo código para montar en Pinguino y a partir de ahí sólo te dedicarías a la programar en Python pudiendo configurar pines como entrada, salida, leer estados digitales, análogos etc...
Si estás interesado te puedo orientar con mas profundidad, contactarme por correo si lo prefieres.
[1]: http://www.hackinglab.org/pinguino/index_pinguino.html
[2]: http://code.google.com/p/pinno-processing/wiki/Pynguino