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 principal del tutorial será enviar datos a la tarjeta Wiring, la tarjeta Wiring leerá el dato y encenderá o pagará el LED de la tarjeta respectivamente. Se asume que el software Wiring y Blender/Phyton están instalados 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.

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 botó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.

/**
 * Simple Read/ Blender/Python
 * 
 * Read data from the serial port and turn ON the onboard LED if
 * the character received is an 'a'
 * For the Wiring boards v1 the on-board LED is on pin 48, 
 * on Wiring S the on-board LED is on pin 15.
 */

int data; // to read the char

void setup() {
  Serial.begin(9600);
  pinMode(WLED, OUTPUT);
}

void loop() {
  if(Serial.available()) {      // if data available
    data = Serial.read();       // read data
    if(data == 'H') {           // if value read is character 'a'
      digitalWrite(WLED, HIGH); // turn ON the onboard LED
    } else {
      digitalWrite(WLED, LOW);  // if not turn it OFF
    }
  }
  delay(100); // wait 100ms for next read
}

 

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
from time   import sleep
# you will need the name of your serial port
# check in wiring - tools - menu
serialport = serial.Serial('COM2', 9600)

sleep(4)    

while 1:
     serialport.write('H')
     sleep(1)
     serialport.write('L')
     sleep(1)

serialport.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'.