Hoy, como regalo de reyes, ha sido publicada una versión de JavaDiKt, podéis descargarla aquí. Entre las distintas mejoras, se ha mejorado considerablemente la búsqueda por lectura, la búsqueda por radical ahora puede hacerse visual, se ha añadido un sistema de notificación de nuevas versiones y se han arreglado varios problemas gráficos.
Hoy, como regalo de reyes, ha sido publicada una versión de JavaDiKt, podéis descargarla aquí. Entre las distintas mejoras, se ha mejorado considerablemente la búsqueda por lectura, la búsqueda por radical ahora puede hacerse visual, se ha añadido un sistema de notificación de nuevas versiones y se han arreglado varios problemas gráficos.
Como es lógico, los niveles de Sion Tower se almacenarán en ficheros y deberán contener información para poder desplegar el escenario, oleadas de enemigos, música etc. Escribir a mano un un fichero tan complejo es peor que una tortura propia de mafiosos. Por tanto, lo ideal sería disponer de un editor libre y multiplataforma con
Acabamos de definir los requisitos de la versión 0.1 de GeoRemindMe, esperamos que esten (entre otros nuevos) para el 4 de marzo que será el próximo Hackathon.
Todos los requisitos se aplican a ambas aplicaciones (web y móvil) pese a que el desarrollo para Android sufrirá más retraso por diversas razones.
He estado investigando un poco acerca de SQLite y al final he decidido sustituir MySQL por SQLite como sistema de gestión de la base de datos del Servidor de Predesys. Los motivos que me han llevado a tomar esta decisión es la sencillez de instalación de la base de datos, ya que ésta se almacenará en un único archivo sin la necesidad de tener un servidor de datos, ya que SQLite es tan sólo una biblioteca (no un servidor) para manejar bases de datos alojadas en archivos, al igual que hace Microsoft Access.
Casi dos meses hace desde la ultima entrada, pero lo cierto es que han sido dos meses de aupa: presentación en el trabajo, vencimiento de fechas, jornadas maratonianas (entre el miercoles 22 a las 10 de la mañana -tarde, como siempre- y sale el viernes 24 a las 5 de la madrugada...), examenes... y encima, para colmo un antiguo compañero de trabajo ha empezado UnHosted, un proyecto muy interesante y aparte de colaborar con el he participado en el concurso que ha organizado para ponerlo a prueba, asi que el tiempo que le he podido dedicar a PirannaFS ha tendido a 0.Sin embargo no me he olvidado del proyecto y de hecho ha sido uno de mis propositos de año nuevo (otro de ellos era ganar el concurso de UnHosted... :-D ), asi que aqui estoy intentando retomarlo, y una de las primeras que voy a hacer va a ser olvidarme un poco de la obsesion que coji con las unidades de test. Eso lo hice por estabilizar el codigo y poder publicarlo, pero si por dedicarle tiempo dejo de dedicarselo al proyecto, a perder la ilusion de hacer algo y, lo mas importante, dejo de divertirme, entonces ya no merece la pena.Precisamente por eso voy a retomar el desarrollo puro y duro, y debido a lo potente que he visto en estos dos meses que es PyFilesystem (que no haya programado no significa que no me haya documentado, y el estar inscrito a su lista de correo ayuda... :-D ) lo primero que voy a hacer va a ser modificar PirannaFS para que sea una libreria que pueda servir como base para crear una interfaz python-FUSE como hasta ahora y otra nueva interfaz PyFilesystem. Asi, aparte de ser compatible tanto con un sistema que ya es funcional como con otro bastante prometedor pero todavia en desarrollo, me permitira luego desarrollar las utilidades de apoyo sin necesidad de lidiar directamente con el sistema de archivos.Asi que dejando de lado estresses varios y que se presenta un cuatrimestre movidito, dejemos que de comienzo la magia... :-D
He redactado y subido a la forja tres documentos, dos de ellos (Análisis de caso de uso y diagramas de casos de uso) analizan y describen con detalle los casos de uso de la aplicación, el tercero( interfaz gráfica) muestra un borrador de como será la interfaz de usuario de la aplicación. Pueden consultar los documentos en los siguientes enlaces:
Analisis de caso de uso
Diagrama de casos de uso
Interfaz gráfica(Borrador)
Over this period of time, and before coding any idea, I have been looking for a collaboration with a NGO. After some months of efforts, I have found one with an interesting project, MSF (Médecins Sans Frontières, which in english is Doctors Without Borders). This NGO has offered me the opportunity to participate and collaborate with them in a project that involves the creation of a Personal Learning Environment and the integration of this within the Moodle domain. I am eager to start but I think that it is much better to do it once I have scrutinazed the details of the project. Firstly, I would like to write the specification and requirements, thus getting a concise point of view. Secondly, I would like to use a TDD (Test-Driven Development) process, so I can prove to myself whether this development process is useful at all. If it is not, at least those who read me will know that TDD is nothing to write home about.
I’ll post more details once I have it. Right now, I am enjoying my holidays and I think that the very next week I should have something else to write. Auf wiedersehen!!!
Buenas, ayer se me olvidó poner una imagen del circuito ya montado, así que lo pondré ahora.
Bueno ahora vamos a ver el código, primero debemos saber la estructura a seguir:
- Incluimos librerías, creamos constantes y variables necesarias.
- Configuramos el dispositivo.
- Recogemos los datos de los sensores.
- Actualizamos los actuadores según los datos recogidos.
- Otras etapas que aún no explicaremos.
Bien tras saber las etapas, debemos tener en cuenta la linealización de los sensores que según sea el dato recogido por los sensores, arduino lo mostrará de 0 a 1023. Entonces,
- Sensor de Humedad:
50% de Humedad corresponde a 2,41 V.
Y arduino da el valor de 1023 para 5 V.
- Sensor de Luminosidad:
Y arduino da el valor de 1023 para 5 V, según nuestro conexionado sería que no hay luz.
- Sensor de Temperatura:
1ºF corresponde a 10 mV.
1ºC corresponde según esta fórmula (ºF-32)/1,8
Y arduino da el valor de 1023 para 150 ºC.
- Sensor de Movimiento:
Y arduino da el valor de 0 para 0V, es decir no se ha producido movimiento.
Bien sabiendo todo esto, proseguimos a rellenar el código en las etapas correspondientes,
Primero definir las constantes y variables necesarias, así como las librerías necesarias:
#include // para uso general
// Constantes
#define SECOND 1000 // Tiempo de espera (1 seg)
#define BAUDIOS 9600
// Direccion Nodo
int direccionNodo= 55; //modificar para cada nodo
// puertos de los sensores
int sensorTem = 5; //temperatura
//proseguir para cada sensor
// puertos de los leds, que serán nuestros actuadores
int ledPinGreenTem = 13;
//...
int ledPinRedHum = 2;
// proseguimos con los demás pines de salida...
//puertos para hacer funcionar el sensor de movimiento
int entsensorMov=4;
// valores de los sensores por defecto
int valorLum = -1; //luminosidad
// damos valores que nunca podrían darse...
// valores predefinidos
float temMin = 20; //temperatura minima
float temMax = 25; //temperatura maxima
float humMin = 30; //humedad minima
Bien, ahora proseguimos con la configuración del dispositivo,
void setup(){
Serial.begin(BAUDIOS);
//Configuracion de los sensores que son de entrada
pinMode(sensorLum,INPUT);
//para cada sensor rellenar...
//Configuracion de los leds, nuestros actuadores
pinMode(ledPinGenLum, OUTPUT);
pinMode(ledPinMesLum, OUTPUT);
//Y otras entradas
pinMode(entsensorMov, OUTPUT);
delay(SECOND);
}
Ahora recogemos los datos de los sensores,
void loop(){
//Inicializacion
digitalWrite(entsensorMov, HIGH);
//Recogida de datos
Serial.println("Recogiendo Datos...");
valorLum = analogRead(sensorLum); // valor de la luminosidad lo pasamos en %
valorTem = analogRead(sensorTem)*4.8875/10; // valor de la temperatura, segun linealizacion y conversion, lo tenemos en ºF
valorTem = (valorTem-32)/1.8; // pasamos el valor de la temperatura a ºC
valorHum = analogRead(sensorHum)*0.0977; // valor de la humedad lo pasamos en %
valorMov = analogRead(sensorMov);//maximo del sensor movimiento 1023 y minimo 0
//Muestra de datos...
Serial.print("Luminosidad: ");
Serial.print(valorLum);
//hacemos lo mismo para cada dato
Y por último accionamos los actuadores, en nuestro caso encender los leds correspondientes.
//Comprobación de los datos de cada sensor hacemos igual...
//Comprobación de la temperatura
if (valorTem > temMax){
Serial.println("Estado Temperatura Alta");
digitalWrite(ledPinRedTem, HIGH);
digitalWrite(ledPinBlueTem, LOW);
digitalWrite(ledPinGreenTem, LOW);
}else if (valorTem < temMin){
Serial.println("Estado Temperatura Baja");
digitalWrite(ledPinRedTem, LOW);
digitalWrite(ledPinBlueTem, HIGH);
digitalWrite(ledPinGreenTem, LOW);
}else{
Serial.println("Estado Temperatura OK");
digitalWrite(ledPinRedTem, LOW);
digitalWrite(ledPinBlueTem, LOW);
digitalWrite(ledPinGreenTem, HIGH);
}
delay(SECOND);
Serial.println("");
}
Bueno hasta aquí por hoy, el código ha sido resumido, el completo lo podéis ver en Mi forja.
Como todo buen hijo de vecino, Sion Tower necesitará reproducir efectos de sonido y música de fondo, de otro modo al jugador se le caerían dos lagrimones y lo cerraría para siempre. Ogre es un motor de renderizado y no incorpora elementos como un subsistema de audio, por tanto, debía buscarlo en otro lugar. Como