Comunicando el hardware Wiring y Blender/Phyton

Este tutorial presenta la comunicación básica entre el hardware Wiring y Blender/Phyton http://www.blender.org/. El objetivo del tutorial será leer valores simples desde la tarjeta Wiring. Se asume que el software Wiring y Blender/Phyton está instalado y los ajustes apropiados de Wiring han sido completados. Para más información acerca de la instalación de Wiring revise los tutoriales sobre la instalación y los ajustes del software.

Este tutorial está basado en el tutorial hecho por Simon Blackmore el cual puede ser encontrado aquí.

Nota: Este tutorial ha sido probado usando Blender 2.49 el cual puede ser descargado aquí y Phyton 2.5 el cual puede ser descargado aquí.

Paso 1

Copie y pegue el siguiente código en el editor Wiring: Verifique que su programa esté libre de errores de compilación presionando el botón Compile/Verify en la barra de menú. Presione el botoón Upload en la barra de menú. En caso de un error de sintaxis el entorno Wiring imprimirá el mensaje de error de otro modo imprimirá que la carga se ha completado satisfactoriamente, el proceso de carga activará los LEDs Rx/Tx en el hardware Wiring. El nuevo programa empezará automáticamente después de la carga. Use el botón Serial Monitor para ver los datos entrantes desde la tarjeta Wiring, luego cierre el Serial Monitor otra vez.

/** 
 * Fotoresitencia / Blender/Phyton

 * 
 * Lee valores desde una fotoresistencia conectada al 
 * pin análogo de entrada 0. El valor leido desde el sensor es proporcional
 * a la cantidad de luz que golpea la superficie del sensor.
 * El valor leido es impreso a través del serial para ser monitoreado
 * en la consola o recibido en Blender
 */

int val; 

void setup()
{
  Serial.begin(9600);      // ajuste el puerto serial a 9600
}

void loop() 
{
  val = analogRead(0);     // lee el pin análogo de entrada 0
  Serial.println(val/4, BYTE);  // imprime el valor leido desde el     
  								 // sensor en el pin análogo 0 dividido por 4 (rango 0-255)
  delay(200);                  // espera 200ms para la siguiente lectura
}

 

Paso 2

Descargue PySerial aquí. Descomprima el archivo y ubique la carpeta "serial" con las otras librerías de Python para Blender.

Windows:

Ubique la carpeta "serial" en la carpeta ".blender/scripts" la cual está dentro de la carpeta Blender.

Mac OS X:

Active los archivos ocultos abriendo Terminal y corriendo el las siguientes dos lineas:

username$ defaults write com.apple.Finder AppleShowAllFiles yes
username$ Killall Finder

Para desactivar los archivos ocultos, haga los mismo pero use "no" a cambio de "yes".

Ubique la carpeta "serial" en la carpeta ".blender/scripts" la cual está dentro de la carpeta Blender.

Paso 3

El próximo paso es ajustar las cosas en Blender. Ajuste la interfase en modo "Scripting".

 

Paso 4

Copie el siguiente código en el editor y nombrelo "script.py".

import serial
# you will need the name of your serial port
# check in wiring - tools - menu
ser = serial.Serial('COM2', 9600)

x = ser.read(size=1)
y = ord(x)
print "y=", y

ser.close()

 

Paso 5

Asigne un objeto. Seleccione un objeto en la escena y de click en las propiedades lógicas en “Buttons Window”.

Adicione un sensor "always" y conectelo con el código de python. Esto significa que el código de python se ejecutará cuando el game engine este corriendo. Debería verse así:

Paso 6

Corra el game engine. Haga click en el '3D Panel' y presione 'P'. El '3D Panel' debería cambiar a vista de juego y los datos provenientes de Wiring deberían aparecer en la consola.

 

Siguiente >> Enviando datos a la tarjeta Wiring desde Blender/Python.