Punksolid Tecnologia, Curiosidades, Sistemas de Informacion y un poco de Religion

15dic/080

Iniciando con Panda3d, Instalación del Entorno de Desarrollo

Actualmente no hay mucha documentación en español de Panda3d, así que lo que pongo a continuación, es casi una traducción al español del manual oficial en ingles, digo casi por que yo programaré sobre Linux Ubuntu 8.10 aunque debe aplicar a la mayoría de distribuciones.

Si estás perdido o no sabes si Panda3d es lo que necesitas, tal vez debas visitar el post anterior de Panda3d.

Instalando Panda3d en Linux Ubuntu 8.10

Puedes compilarlo a pie, pero la forma en que hice esto fue con el .deb que está en la pagina de descargas, usando el instalador panda3d_1.5.4-ubuntuintrepid_i386.deb (57 M).

Preparación General

Se puede programar para Panda3d sobre C++ y Python, los creadores recomiendan que lo hagamos sobre Python, por estar mejor documentado, aparte de que ya tengo rato queriendo programar sobre este. Entonces ocuparemos todo el entorno de desarrollo de python, el cual estándo en Ubuntu no ocupas mas que instalar el Eclipse IDE, y pyDev que es el modulo de desarrollo de Python para eclipse, ambos se instalan desde el Synaptic.

Ahora solo debes de asociar el interprete Python al Eclipse, eso se hace entrando

Window ->Preferences->Pydev->Interpreter (Python)-> New

Despues se busca la direccion de este, que en Ubuntu es

/usr/bin/python2.5

Importas todas las librerias y listo.

Prueba de que Panda3d Funciona

Crear  un proyecto nuevo de Python, luego creamos un archivo nombrado test.py y añadimos las siguientes lineas.

import direct.directbase.DirectStart
run()

Lo corremos dando clic derecho->Run As -> Python Run

Y si todo salió bien deberá mostrarnos una pantalla como la siguiente

En próximos post publicaré como crear algo, hasta el momento la ventana esta nos la dibuja Panda3d, no el propio Python, la funcion run() siempre va al final de cada script.

Saludos y Suerte

Referencias

Manual Oficial de Panda3d

19nov/084

Encendido de LED por Proximidad por Bluetooth

He hecho un proyecto para la escuela que consiste en abrir los seguros del carro al estar cerca de él, y de cerrarlos al alejarse, es solo un prototipo, para eso he utilizado un Arduino, un USB-Bluetooth, una laptop y el celular que se va a detectar.

Video demo

Todo está hecho sobre linux UBUNTU 8.10, sobre windows no se me ocurre como integralo, solo haciendo una sola aplicacion completa.

1.- Se ensambla e USB-Bluetooth a la computadora y se empareja el dispositivo por medio de los asistentes.

2.- Se instala la aplicación Blueproximity desde Synaptics y se configura.

3.- Se baja una clase en C que tiene funciones para el manejo del puerto serial, la clase es arduino-serial.c, al descargar accesas a la carpeta donde lo descargaste y desde la terminal ejecutas

punksolid$ gcc -o arduino-serial arduino-serial.c

con eso compilas la clase, para su uso solo basta

punksolid$ ./arduino-serial

y aparecerá el modo de uso, por ejemplo yo uso está linea para encender el led

punksolid$ /home/punksolid/arduino-serial -b 19200 -p /dev/ttyUSB0 -s m

y para apagarlo

punksolid$ /home/punksolid/arduino-serial -b 19200 -p /dev/ttyUSB0 -s n

el codigo de la placa arduino es el siguiente

 * Serial Read Blink
 * -----------------
 * Turns on and off a light emitting diode(LED) connected to digital
 * pin 13. The LED will blink the number of times given by a
 * single-digit ASCII number read from the serial port.
 *
 * Created 18 October 2006
 * copyleft 2006 Tod E. Kurt <tod@todbot.com>
 * http://todbot.com/
 *
 * based on "serial_read_advanced" example
 */
 
int ledPin = 13;   // select the pin for the LED
int val = 0;       // variable to store the data from the serial port
 
void setup() {
  pinMode(ledPin,OUTPUT);    // declare the LED's pin as output
  Serial.begin(19200);        // connect to the serial port
}
 
void loop () {
  val = Serial.read();      // read the serial port
 
  // if the stored value is a single-digit number, blink the LED that number
  if (val > '0' && val <= '9' ) {
    val = val - '0';          // convert from character to number
    for(int i=0; i<val; i++) {
      Serial.println("blink!");
      digitalWrite(ledPin,HIGH);
      delay(150);
      digitalWrite(ledPin, LOW);
      delay(150);
    }
    //Serial.println();
  }
  if (val=='m'){
      digitalWrite(ledPin,HIGH);
  }else if(val=='n'){
      digitalWrite(ledPin,LOW);
  }
}

4.- Ya nada mas falta configurar Blueproximity en la pestaña de bloqueo para que se ejecute el comando de ejemplo que puse arriba.

Como utilidades he pensado en la apertura de serguros electricos para carro al acercarse ademas tambien bajar las ventanas, y viceversa para cuando el usuario se aleje, para hacer eso basta con un relay.

Cualquier duda comentarlo y responderé.

Referencias

Conectar Arduino con el lenguaje C

20oct/0835

Conectar la placa Arduino con PHP a travez de PHP Serial

Este tutorial sirve para conectar Arduino con PHP de manera mas directa sobre windows con XAMPP y la extensión PHP Serial, que prácticamente debería servir para cualquier dispositivo que se quiera conectar al puerto Serial de la computadora, aunque mi prueba es por USB.

Guía Rápida

  1. Descarga e instala XAMPP.
  2. Descarga la extensión y los archivos de ejemplo de PHP Serial.
  3. Coloca el *.dll en las librerías de PHP y activalas en el php.ini.
  4. Pon el Xampp en modo CGI.
  5. Conecta y sube código de prueba al Arduino.
  6. Inicia el Apache.
  7. Usa archivo de prueba "sms_list.php" que viene en el paquete de PHP Serial .
  8. Ejecútalo y Suerte.

Guía Detallada

Una vez instalado XAMPP en windows descarga la extension y los archivos de PHP Serial una vez descompreso copia el archivo php_ser.dll en la carpeta de extensiones de PHP que usualmente suele ser para PHP5

C:/PHP/ext/

ahora debes buscar el php.ini dentro de la carpeta C:\xampp\php en el caso de XAMPP y abrirlo con un bloc de notas, aunque recomiendo NOTEPAD+ que es el que uso, y agregar la extencion que copiamos anteriormente, para hacer eso solo debemos agregar la siguiente linea donde están las demas dll, ejemplo:

extension=php_ser.dll

guarda y cierra el php.ini.

si no estas usando XAMPP talvez asi ya puedas utilizarlo, solo reinicia el apache, pero si eres usuario de XAMPP debes configurarlo para que corra como CGI, ya que por default corre como modulo de apache, para cambiar esto debemos:

  1. Ir a C:\xampp\apache\conf\extra/httpd-xampp.conf y buscar donde estén las siguientes lineas y descomentar las lineas 1 y 2 y comentar la 3.

    <em>#ScriptAlias /php/ "C:/xampp/php/"
    #Action application/x-httpd-php "/php/php-cgi.exe"
    LoadModule php5_module "C:/xampp/apache/bin/php5apache2.dll"
    AddType application/x-httpd-php-source .phps</em>

  2. Ir a  C:\xampp\apache\conf/httpd.conf y buscar <Directory /> y dejarlo como sigue:

    <em>Options FollowSymLinks
    AllowOverride None
    #Order deny,allow
    #Deny from all
    </em>


Ahora si pueden reiniciar el Apache, algo que pude notar es que el tiempo de respuesta es algo lento, si alguien puede mejorarlo que me lo notifique, no sé si es la mejor manera de comunicarlo con PHP en windows, pero eso ya es cuestion de cada quien.

11sep/0810

Hacer Medidor de Bateria en Flash Lite

Ayer experimentando con flash lite, empezé a cureosear entre las funciones sobre el celular que trae flash lite, y encontré el medidor de bateria entre otras cosas, buscando el funcionamiento de la función fscommand2("GetBatteryLevel");

Encontré un tutorial que explicaba como hacer un medidor de bateria (En ingles), y lo hice, así que explico como hacerlo.

1.- Primero creamos el archivo en File/New/Templates/Global Handsets/Nokia S60 240x320

Luego creamos un movie clip vacio (Ctrl + F8) y ponemos los keyframes que vayamos a utilizar, en mi caso puse 9.

En cada keyframe ponemos una animación a nuestro gusto, en todos los ejemplos ponen baterías, pero a mi se me antojó poner un monito que fuera cayendo conforme baja el nivel de batería,

Nuestros dibujos van a ser de menor a mayor batería, en otras palabras el primer frame el mono en la posición mas cansada y en el ultimo frame en la posición mas enérgica.

Dentro del movie clip monitos yo puse mas movie clips para ponerle animación mas interesante, como el Ki y una especie de respiración, el Ki lo hice en un movie clip con 3 frames y la respiración con un tween shape, es el único frame al que le puse mas movie clips y solo fue para darle mas vida al personaje.

2.- Nos vamos al Scenario y arrastramos desde la librería (Ctrl + L) hacia el scenario el movie clip del monito, tiene que estar seleccionado el layer del action script.

3.- En la pestaña de properties debemos poner el nombre de instancia del monito para poder manejarlo desde el action script, yo lo llamé "monito_mc".

4.- Con F9 abrimos el recuadro de Actions donde va insertado el siguiente codigo

/*Está linea se pone por default y es para poner a pantalla completa el flash*/
fscommand2("FullScreen",true);
/*Debemos sacar el nivel de bateria, en escala decimal ya que no todas las baterias duran lo mismo siempre para eso ocupamos el nivel de bateria actual.*/
current = fscommand2("GetBatteryLevel");
 
/*Y el nivel máximo de batería que puede alcanzar el celular*/
max = fscommand2("GetMaxBatteryLevel");
 
/*Dividimos el nivel actual de bateria entre el maximo 
y nos dará un valor decimal del 0 al 1*/
currentRatio = current / max;
 
/*En currentFrame multiplicamos el decimal por el numero de frames del movieclip para determinar en cual frame está, pero ocupamos convertirlo a int por que los frames son enteros y asi eliminamos los decimales*/
currentFrame = int(currentRatio * monito_mc._totalframes);
 
/*Con tellTarget decimos que monito avance y se detenga según el resultado de currentFrame*/
tellTarget ("monito_mc") {
gotoAndStop(/:currentFrame);
}

5.-Agregamos un frame normal en el layer actionscript para que no corra como si fuese animación.

6.-Creamos el movieClip (Ctrl + Alt + Shift + S) y lo guardamos en el celular, no es necesario moverle a las propiedades del Flash Lite.

Desconozco los limites de flash lite y es mi primera practica en el, y no sé que tantos movie clips, tweens son los máximos, pero estos han funcionado en mi celular Nokia 6300.

Código fuente final monito-bateria.fla

Respondo dudas