<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8374928888845700965</id><updated>2011-12-31T09:23:04.417Z</updated><category term='lliurex'/><title type='text'>La cubierta de Ingenieria</title><subtitle type='html'>Las aventuras de un informático</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-1296137115173919839</id><published>2011-12-18T12:16:00.003Z</published><updated>2011-12-18T12:38:25.114Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='lliurex'/><title type='text'>El misterio de Marty</title><content type='html'>Supongo que todo el que haya probado ya la última versión de Lliurex, se habrá preguntado que significa y de donde viene eso de Marty. Todas las versiones de Lliurex tienen una numeración y un nombre en clave; 9.09 indi, 10.09 leia, 11.09 marty... La numeración indica el año y mes de publicación de la versión estable. El nombre en clave, es un nombre que se decide internamente tomando como punto de partida la letra del abecedario correspondiente. Marty McFly es el personaje principal de una trilogía cinematográfica de los años 80. Los desarrolladores de Lliurex crecimos con las aventuras en el tiempo de este personaje y decidimos hacerle un guiño. Colores, tipografías, decoración, Lliurex Marty nos invita a viajar en el tiempo, hasta los años 80.&lt;br /&gt;&lt;br /&gt;Mientras tanto, el equipo de Lliurex ya esta manos a la obra preparando la próxima versión denominada Nemo. Parece fácil, ¿No? Habrá que esperar un poco para conocer que nos deparará Lliurex Nemo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-1296137115173919839?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/1296137115173919839/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=1296137115173919839' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/1296137115173919839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/1296137115173919839'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2011/12/el-misterio-de-marty.html' title='El misterio de Marty'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-4905898739476296989</id><published>2007-11-18T21:18:00.000Z</published><updated>2007-11-18T23:18:53.645Z</updated><title type='text'>El truco del hombre del tiempo</title><content type='html'>Tras mas de un mes atareado hoy voy a desvelar la "magia" que permite al hombre del tiempo, entre otros, para superponerse a un fondo virtual.&lt;br /&gt;&lt;br /&gt;Básicamente el objetivo consiste en reemplazar unas zonas de la imagen original, y sustituirlas por  fragmentos de una segunda imagen. La técnica mas comun es el chroma key.&lt;br /&gt;&lt;br /&gt;Esta es la famosa técnica en la que los actores realizan su papel delante de paredes verdes "fosfi" y azules. Seguro que todos hemos visto esto en el "como se hizo" de algún DVD. Después de tomarse la imagen original, se procesa pixel a pixel, substituyendo el color que hemos puesto de fondo por nuestra imagen virtual, donde Anakin y ObiWan se dan leches sin parar sobre magma incandescente.&lt;br /&gt;&lt;br /&gt;Así de primeras puede parecer sencillo, pero en la práctica surgen dificultades. Paso a explicar el algoritmo donde se apreciará con mas facilidad donde reside el problemilla. Recorremos el fotograma en cuestión pixel a pixel, si el pixel tiene el valor RGB que hemos configurado como fondo, substituimos el pixel en cuestión por su correspondiente en la imagen virtual. Fácil no? Esto con imagenes sintéticas funciona perfectamente, en la práctica no acaba de ir tan bien sin unos ajustes. Porque? Bien, porque el fondo nunca es homogéneo en un 100%, las cámaras arrastran también mayores o menores desviaciones en el color y por buena que sea la iluminación del plató, siempre habrán pequeñas sombras o brillos. Cuando el algoritmo tira a procesar la imagen, se encuentra con colores parecidos, pero no iguales dando como resultado un fracaso !&lt;br /&gt;&lt;br /&gt;Que no cunda el pánico ! Solo sera necesario modificar el algoritmo para que admita colores parecidos. Imaginar los 3 ejes cartesianos, el centro es negro total (0,0,0) sobre un eje va creciendo el color rojo, de igual manera con los otros dos, verde y azul. De esta manera, cada color rgb se interpreta como un punto en el espacio cartesiano (x,y,z). Por tanto, cuanto menor sea la distancia entre dos colores, mayor su semejanza.&lt;br /&gt;&lt;br /&gt;Tomemos una distancia, que la llamaremos Delta y dos colores, el del pixel de entrada P, y el de referencia para contrastar el chroma C. El valor de Delta se ajusta de manera empírica (en castellano: probando hasta que quede bien) ya que depende de las condiciones que tengamos a la hora de capturar la imagen.&lt;br /&gt;&lt;br /&gt;//calculamos el vector entre los dos puntos&lt;br /&gt;Vr = Cr - Pr&lt;br /&gt;Vg = Cg - Pg&lt;br /&gt;Vb = Cb - Pb&lt;br /&gt;&lt;br /&gt;//modulo del vector&lt;br /&gt;dist = sqrt(Vr*Vr + Vg*Vg + Vb*Vb)&lt;br /&gt;&lt;br /&gt;//son colores parecidos ?&lt;br /&gt;if(dist &lt; Delta)&lt;br /&gt;{  &lt;br /&gt;   putPixel (..... )&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ajustar la distancia es primordial para que chroma de buenos resultados, valores muy bajos, provocaran que parte del fondo no consiga ser discriminado.  Sin embargo valores muy altos tomarían como fondo demasiados colores, desintegrando el aspecto de la imagen. Por poner un ejemplo, es como si el hombre del tiempo, fuera deshaciendose conforme el Delta aumenta, viéndose solo el mapa metereológico.&lt;br /&gt;&lt;br /&gt;Tras haber entendido todo esto, se intuye el porqué se emplean colores tan llamativos como fondo para el chroma key. Por un lado se debe de usar un color que no vaya a estar presente en los actores. Por otra parte, estos colores tan exagerados permiten aumentar el Delta reduciendo el riesgo de "amputarle" algún miembro a nuestro presentador :-)&lt;br /&gt;&lt;br /&gt;Por supuesto el algoritmo aquí explicado es perfectamente mejorable, los chicos  de George Lucas usan chroma keys bastante mas sofisticados, que permiten tratar transparencias y reflejos. Si alguien le da por jugar con la webcam, ya aviso que con webcams malas (si Logitech, estoy hablando contigo) los resultados son algo decepcionantes.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.kudlian.net/products/screen/images/0001-large.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.kudlian.net/products/screen/images/0001-large.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-4905898739476296989?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/4905898739476296989/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=4905898739476296989' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/4905898739476296989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/4905898739476296989'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/11/el-truco-del-hombre-del-tiempo.html' title='El truco del hombre del tiempo'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-676286582423877391</id><published>2007-10-09T20:25:00.000+01:00</published><updated>2008-12-09T07:25:32.719Z</updated><title type='text'>Una cita con la naturaleza</title><content type='html'>Como ya adelantaba la semana pasada, he aprovechado la festividad del 9 de Octubre para hacer una escapada mtb por tierras Valencianas. La escapada ha sido un auténtico éxito; buen tiempo, hermosos paisajes, ruta divertida...&lt;br /&gt;&lt;br /&gt;La ruta está bastante bien definida, puesto que transcurre en su mayoría por carriles bici. Además, si no dispones de vehículo o manera de transportar las bicis en él, no es problema, ya que esta ruta tiene la especial peculiaridad de poder valerse del transporte público tanto en la ida como en su regreso.&lt;br /&gt;&lt;br /&gt;El recorrido nace donde finaliza la linea de metro con destino a Lliria. Desde este histórico pueblo pedaleamos dirección Olocau, valiéndonos de un magnifico carril bici que une sendos pueblos. Una vez visitado Olocau, ya por terrenos algo mas abruptos, realizamos un divertido descenso hasta la localidad de Bétera.&lt;br /&gt;&lt;br /&gt;Aunque no recomiendo la ruta para principiantes, puesto que tiene dos ascensos pronunciados, sus casi 35 km si son altamente recomendables para cualquier amateur de la bici. Eso si, de montaña ! no importa si rígidas o dobles, puesto que un tramo del trayecto (el mas divertido) no esta asfaltado.&lt;br /&gt;&lt;br /&gt;Ciclistas que te devuelven un cordial buenos dias, hermosas vistas y hermosos árboles, y siempre relativamente cerca de núcleos habitados por si tenemos un susto. Que maravilla ! :D&lt;br /&gt;&lt;br /&gt;Por cierto quiero aprovechar para saludar al chaval con la topbike del carrefour que en un intento de impresionarnos con sus acrobacias ha reventado la cámara trasera con su característico Bloom! Ha sido la nota cómica del día :_D&lt;br /&gt;&lt;br /&gt;Os dejo un link con toda la información necesaria para llevar acabo la excursión. Aunque los datos no son muy precisos, con una brújula y preguntando a los paisanos se completan los detalles.&lt;br /&gt;&lt;br /&gt;Aquí va el link: &lt;a href="http://www.upv.es/%7Ecsahuqui/r5metrov.html"&gt;&lt;span style="font-size:100%;"&gt;LLíria-Olocau-Bétera (33,8 Km)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y aquí unas cuantas fotos:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0netjHEIzNs/RwvrBO81swI/AAAAAAAAACI/ebFn7DF86Ug/s1600-h/hpim0543.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_0netjHEIzNs/RwvrBO81swI/AAAAAAAAACI/ebFn7DF86Ug/s320/hpim0543.jpg" alt="" id="BLOGGER_PHOTO_ID_5119443807862371074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para los ciclistas, el cielo no esta arriba, mas bien el infierno.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0netjHEIzNs/RwvsIe81sxI/AAAAAAAAACQ/vvWMoayGSX4/s1600-h/hpim0551.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_0netjHEIzNs/RwvsIe81sxI/AAAAAAAAACQ/vvWMoayGSX4/s320/hpim0551.jpg" alt="" id="BLOGGER_PHOTO_ID_5119445031928050450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Asi se ve el mundo desde la Calderona.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0netjHEIzNs/Rwvs4u81syI/AAAAAAAAACY/R_msiLhaZLw/s1600-h/hpim0552.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_0netjHEIzNs/Rwvs4u81syI/AAAAAAAAACY/R_msiLhaZLw/s320/hpim0552.jpg" alt="" id="BLOGGER_PHOTO_ID_5119445860856738594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Alguien estaba muy nervioso y se lió a tiros :S&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0netjHEIzNs/Rwvtku81szI/AAAAAAAAACg/Grh5EMSG1iM/s1600-h/hpim0569.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_0netjHEIzNs/Rwvtku81szI/AAAAAAAAACg/Grh5EMSG1iM/s320/hpim0569.jpg" alt="" id="BLOGGER_PHOTO_ID_5119446616770982706" border="0" /&gt;&lt;/a&gt;Las bicis, bautizadas como "Agonia" y "Sufrimiento" en el vagón de regreso a casa. Les vendrá bien una buena lavada y un engrase....vaya, igual que a mi :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-676286582423877391?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/676286582423877391/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=676286582423877391' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/676286582423877391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/676286582423877391'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/10/una-cita-con-la-naturaleza.html' title='Una cita con la naturaleza'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_0netjHEIzNs/RwvrBO81swI/AAAAAAAAACI/ebFn7DF86Ug/s72-c/hpim0543.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-857545968043376472</id><published>2007-10-04T15:53:00.000+01:00</published><updated>2008-12-09T07:25:32.860Z</updated><title type='text'>Fallo de diseño</title><content type='html'>Vaya ! Ando algo atascado con el scalextric digital casero. La etapa lógica se ha comportado bien, pero en la etapa de potencia es donde no consigo pasar. Tras un medio-éxito con un L298, decidí simplificar el esquema usando transistores en su lugar. Me decanté por un TIP-41, sinceramente sin tener las ideas demasiado claras. Monté un pequeño prototipo y no parecía hacer mención alguna. Polímetro en mano me percaté que el voltaje que proporcionaba la etapa lógica era de no mas de 4.8 V, voltaje que creo que es insuficiente para que el tip-41 abra entre colector y emisor. Bueno...de los errores se aprende, ahora manos a la obra en busca de una solución.&lt;br /&gt;&lt;br /&gt;Mientras tanto, dejo colgada un esquema de lo que es la etapa lógica para una sola pista (extenderlo a dos es replicar parte del circuito, no tiene demasiado misterio).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0netjHEIzNs/RwUBC-81stI/AAAAAAAAABs/2gyczShA-AI/s1600-h/out.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_0netjHEIzNs/RwUBC-81stI/AAAAAAAAABs/2gyczShA-AI/s320/out.png" alt="" id="BLOGGER_PHOTO_ID_5117497702345978578" border="0" /&gt;&lt;/a&gt;Por supuesto se admiten críticas ! :D&lt;br /&gt;&lt;br /&gt;Aprovecho para adelantar que en este primer puente de octubre voy a marcarme una pequeña ruta BTT por tierras Valencianas, y de paso igual hago un pequeño reportaje fotográfico de la sierra Calderona ^_^&lt;br /&gt;&lt;br /&gt;Que tengáis buen finde !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-857545968043376472?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/857545968043376472/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=857545968043376472' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/857545968043376472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/857545968043376472'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/10/fallo-de-diseo.html' title='Fallo de diseño'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0netjHEIzNs/RwUBC-81stI/AAAAAAAAABs/2gyczShA-AI/s72-c/out.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-4346215616181865538</id><published>2007-09-21T17:58:00.000+01:00</published><updated>2008-12-09T07:25:33.166Z</updated><title type='text'>Contacto en 3,2,1.... BANG !!!</title><content type='html'>Para que luego digan que la electrónica es aburrida. Cual cerdo en barro me he reido hoy al ver explotar un pequeño integrado. Si es que... los datasheets  no estan llenos de cifras para impresionar a los novatos, esas cifras estan para algo. Y cuando no respetas o no te da al gana respetarlas pasa lo que debe de pasar. En mi caso una pequeñita explosión.&lt;br /&gt;&lt;br /&gt;Estabamos usando un L293 a modo de etapa de potencia, faltos de un transistor que encajara mejor ahi. Y se nos ha ido la mano con la corriente, supongo que fruto de las prisas y la ignorancia dando como resultado un pequeño cráter en la superficie del integrado. Imagen que obviamente adjunto con orgullo :D&lt;br /&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_0netjHEIzNs/RvP51u81ssI/AAAAAAAAABk/UyQRUvmxIlQ/s320/09_21_0.JPEG" border="0" alt="" id="BLOGGER_PHOTO_ID_5112704703527236290" /&gt;&lt;br /&gt;&lt;br /&gt;Según mi colega, una burbuja del aire que se ha dilatado debido a las altas temperaturas ha sido la causante de tal explosión. Y yo los habia visto medio derretirse, pero esto... ha sido gracioso !!! Y tu?? Que has hecho explotar en esta vida ?? :_D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-4346215616181865538?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/4346215616181865538/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=4346215616181865538' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/4346215616181865538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/4346215616181865538'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/09/contacto-en-321-bang.html' title='Contacto en 3,2,1.... BANG !!!'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0netjHEIzNs/RvP51u81ssI/AAAAAAAAABk/UyQRUvmxIlQ/s72-c/09_21_0.JPEG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-855464128083552953</id><published>2007-09-20T21:59:00.000+01:00</published><updated>2008-12-09T07:25:33.317Z</updated><title type='text'>Cacharreando con PyGame</title><content type='html'>Como echo de menos mi adolescencia, cuando tenía mas horas para programar juegos. Antaño (1999) surgió un lenguaje de programación llamado DIV Games Studio que causó furor entre la comunidad hispana de programadores. Como toda idea revolucionaria, tenía sus seguidores y sus detractores, pero el caso es que se llegó a editar una revista sobre DIV, y noche tras noche nos reuníamos cerca del centenar de usuarios en el irc-hispano para hablar sobre la programación de videojuegos. Pero la empresa que sacó DIV al mercado cerró al poco de sacar su segunda versión, y esto sentenció la vida de este lenguaje. La gente lejos de quedarse de brazos cruzados, trató de mantener al dia este lenguaje y surgieron varios proyectos con su versión libre de DIV (Fenix y eDIV). A varios colaboradores de sendos proyectos he tenido el gusto de charlar con ellos y aprovecho para mandarles un saludo :)&lt;br /&gt;&lt;br /&gt;Aunque proyectos como Fenix han conseguido mantener el lenguaje DIV hasta nuestros dias, su poca aceptación fue desperdigando a la gente hacia otras alternativas. Yo encontré la mia en la combinación de C con SDL, pero quedaba lejos de ser tan fácil como DIV, y los lenguajes basados en BASIC siempre han estado ligados a licencias no libres y a una baja o nula portabilidad.&lt;br /&gt;&lt;br /&gt;En python he encontrado la manera mas productiva de desarrollar juegos caseros y seguir disfrutando de este mundo fruto de la combinación de técnica y arte.&lt;br /&gt;&lt;br /&gt;Vamos a comentar un ejemplo sencillito, que puede servir a su vez como un esqueleto básico con el que hacer unos primeros pinitos.&lt;br /&gt;&lt;br /&gt;Empezaremos incluyendo la/s librerias que nos hacen falta, que por ahora será exclusivamente pygame:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" id="codemain"&gt;&lt;span class="keyword"&gt;import&lt;/span&gt; pygame&lt;/pre&gt;&lt;br /&gt;Tecnicismos a un lado, esto es algo similar al &lt;span style="font-style: italic;"&gt;import&lt;/span&gt; de java o al &lt;span style="font-style: italic;"&gt;include&lt;/span&gt; de C. Ahora veamos como ponemos la maquinaria a rodar:&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre class="code" id="codemain"&gt;&lt;span class="keyword"&gt;def&lt;/span&gt; main():&lt;br /&gt; &lt;span class="keyword"&gt;print&lt;/span&gt; &lt;span class="literal"&gt;"Python game tutorial 01"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; pygame.init()&lt;br /&gt;&lt;br /&gt; screen=pygame.display.set_mode( (800,600),pygame.DOUBLEBUF)&lt;/pre&gt;&lt;br /&gt;Para los nuevos en python, respetar las tabulaciones ! es la forma que tiene este lenguaje para delimitar los bloques de código. Aunque al principio parece algo bizarro, cuando te acostumbras te ayuda a mantener el código algo mas elegante. Bien, pasemos a comentar este trozo. Las tres primeras lineas no tienen mucho que decir, se define la funcion &lt;span style="font-style: italic;"&gt;main&lt;/span&gt;, se imprime por consola una cadena de texto y se inicializa pygame. Es necesario llamar a &lt;span style="font-style: italic;"&gt;pygame.init()&lt;/span&gt; antes de cualquier otra función de pygame. Analicemos ahora la cuarta instrucción: &lt;span style="font-style: italic;"&gt;pygame.display.set_mode&lt;/span&gt; establece el modo gráfico y si lo consigue nos devuelve el buffer para dibujar en el. En el ejemplo se desea una resolución de 800 x 600 pixeles y con la opción de doble buffer (para animaciones mas suaves). Si no se especifica lo contrario, será en modo ventana. La pantalla completa suele dar algun problema que otro, no recomiendo usarla hasta no tener algo estable.&lt;br /&gt;&lt;br /&gt;Una vez en marcha pygame y el modo gráfico establecido, es un buen momento para poner a punto las variables de nuestro juego:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" id="codemain"&gt; default_fnt=pygame.font.Font(None,24)&lt;br /&gt;&lt;br /&gt; quit_request=False&lt;br /&gt; x=0&lt;br /&gt; y=0&lt;br /&gt; dx=1&lt;br /&gt; dy=1&lt;/pre&gt;&lt;br /&gt;De aquí poco hay que comentar, se genera una fuente de tamaño 24 y se inicializan unas cuantas variables que mas tarde se usarán. Para los mas culebrines, es fácil ver que no hemos declarado las variables, se declaran en el mismo momento que se les asigna por primera vez un valor, a la par que toman el tipo del tipo de dato que se les asigna (Integer, bool, string....) que comodidad no !??? :D&lt;br /&gt;&lt;br /&gt;Teniendolo todo preparado, es momento ahora de entrar en un bucle y comenzar la animación. En la primera parte del bucle, vamos a leer la cola de eventos de pygame buscando aquellos eventos que nos interesen, como es el caso de las pulsaciones de teclado. Esto quedaría asi:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" id="codemain"&gt;&lt;span class="keyword"&gt;while&lt;/span&gt; &lt;span class="keyword"&gt;not&lt;/span&gt; quit_request:&lt;br /&gt;  &lt;span class="keyword"&gt;for&lt;/span&gt; event &lt;span class="keyword"&gt;in&lt;/span&gt; pygame.event.get():&lt;br /&gt;   &lt;span class="keyword"&gt;if&lt;/span&gt; event.type == pygame.QUIT:&lt;br /&gt;    quit_request=True&lt;br /&gt;   &lt;span class="keyword"&gt;if&lt;/span&gt; event.type == pygame.KEYDOWN:&lt;br /&gt;    &lt;span class="keyword"&gt;if&lt;/span&gt; event.key==pygame.K_ESCAPE:&lt;br /&gt;     quit_request=True&lt;/pre&gt;&lt;br /&gt;Tenemos un while, cuyo comportamiento es idéntico al de otros lenguajes, sin misterio alguno, iteraremos mientras se de la condición. La que viene a continuación es un bucle &lt;span style="font-style: italic;"&gt;For&lt;/span&gt; algo mas propio de lenguajes mas modernos como el caso de C# o java. La función &lt;span style="font-style: italic;"&gt;pygame.event.get()&lt;/span&gt; nos devuelve una lista con todos los eventos pendientes de ser procesados y la variable event se emplea como variable iteradora. Ahora mismo hacemos mas bien poco, tan solo damos la condición de salir del bucle principal si detectamos que se ha hecho click en cerrar la ventana o se ha pulsado la tecla ESCAPE.&lt;br /&gt;&lt;br /&gt;Bueno, de el siguiente código poco hay que comentar, nos valdrá para darle algo de movimiento al programa.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" id="codemain"&gt;  x=x+dx&lt;br /&gt;  y=y+dy&lt;br /&gt;  &lt;span class="keyword"&gt;if&lt;/span&gt; x&gt;799:&lt;br /&gt;   dx=-1&lt;br /&gt;  &lt;span class="keyword"&gt;if&lt;/span&gt; x&lt;0:&lt;br /&gt;   dx=1&lt;br /&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;if&lt;/span&gt; y&gt;599: &lt;br /&gt;   dy=-1&lt;br /&gt;  &lt;span class="keyword"&gt;if&lt;/span&gt; y&lt;0:&lt;br /&gt;   dy=1&lt;/pre&gt;&lt;br /&gt;Hemos leido los eventos del usuario, actualizamos las variables que le dan la lógica a nuestro juego... pero como dibujamos cosas? Hoy solo dibujaremos algo de texto en pantalla.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" id="codemain"&gt;  screen.fill((0,0,0))  &lt;br /&gt;&lt;br /&gt;  text_srf=default_fnt.render(&lt;span class="literal"&gt;"Hello World"&lt;/span&gt;,False,(255,0,0))&lt;br /&gt;&lt;br /&gt;  screen.blit(text_srf,(x,y))&lt;br /&gt;  pygame.display.flip() &lt;/pre&gt;&lt;br /&gt;Como se vio anteriormente, en screen se guarda la referencia a nuestro buffer gráfico. Se suele emplear el nombre de Surface o Superficie a las imágenes que residen en la memoria RAM.  Como no sabemos en que estado está el buffer,  lo primero que debemos hacer es limpiarlo, llenandolo ( &lt;span style="font-style: italic;"&gt;screen.fill()&lt;/span&gt; ) de otro color, como en este caso, que se emplea un negro total para limpiar el buffer. En la segunda linea se genera una superficie con un texto dibujado en su interior, no es dificil ver que se trata de la cadena "Hello World" ^_^&lt;br /&gt;&lt;br /&gt;Como si de pegatinas se tratara, tenemos que ir montando el buffer "pegando" en el las imágenes que formaran la animación, personajes, fondo, textos... A estos pegados se les llama blits. Ahora mismo no nos vamos a lucir tanto, y tan solo pegaremos en la pantalla esa imagen con el texto que se ha generado anteriormente, indicando además, las coordenadas donde se debe pegar, siendo las variables x e y en este caso.&lt;br /&gt;&lt;br /&gt;Cuando hemos acabado de componer la escena, &lt;span style="font-style: italic;"&gt;pygame.display.flip()&lt;/span&gt; manda el buffer al monitor y se nos da otro buffer para que en la siguiente iteración del bucle, dibujemos otra vez la escena.&lt;br /&gt;&lt;br /&gt;Con todo esto, solo nos queda añadir un par de lineas para completar el ejemplo básico de pygame:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;pre class="code" id="codemain"&gt;&lt;span class="keyword"&gt;if&lt;/span&gt; __name__==&lt;span class="literal"&gt;"__main__"&lt;/span&gt;:&lt;br /&gt; main()&lt;/pre&gt;&lt;br /&gt;Esto no tiene mucho que ver con pygame, es algo de Python. De aquí simplemente entender que cuando se lance el programa se ejecutará la función main anteriormente definida.&lt;br /&gt;&lt;br /&gt;Pues esto es python y pygame ! A mi parecer, es tremendamente fácil aunque nunca hay nada exento de polémica. No hay que olvidarse de que no deja de ser un lenguaje de programación imperativo y que como tal, es necesario tener experiencia programando. Querer hacer juegos sin programar normalmente acaba por no dar muy buenos resultados.&lt;br /&gt;&lt;br /&gt;Tengo que hacer un par de proyectillos con pygame (Entre ellos el scalextric pseudo digital) así que aprobecharé para colgar mas tutoriales sobre pygame :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0netjHEIzNs/RvL4ie81srI/AAAAAAAAABc/Ngv1kM_ZN78/s1600-h/tut01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_0netjHEIzNs/RvL4ie81srI/AAAAAAAAABc/Ngv1kM_ZN78/s320/tut01.png" alt="" id="BLOGGER_PHOTO_ID_5112421798326416050" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-855464128083552953?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/855464128083552953/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=855464128083552953' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/855464128083552953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/855464128083552953'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/09/cacharreando-con-pygame.html' title='Cacharreando con PyGame'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_0netjHEIzNs/RvL4ie81srI/AAAAAAAAABc/Ngv1kM_ZN78/s72-c/tut01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-189642660860406474</id><published>2007-09-17T21:52:00.000+01:00</published><updated>2008-12-09T07:25:33.423Z</updated><title type='text'>Empezamos con Python !</title><content type='html'>Bueno, acabados los exámenes, nos ponemos manos a la obra con los videojuegos y python.&lt;br /&gt;&lt;br /&gt;Antes de empezar a picar código sin mas, repasemos la estructura habitual de un juego:&lt;br /&gt;&lt;br /&gt;A diferencia del software convencional, en los videojuegos es habitual que el código vaya tan rápido como sea posible con el fin de tener FPS generosos. Con lo cual, una primera aproximación seria:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Inicialización del juego y carga de recursos (sonidos, imágenes,...)&lt;/li&gt;&lt;li&gt;Un bucle donde se dibuja y se le da vida al juego, optimizado en la medida de lo posible.&lt;/li&gt;&lt;li&gt;Descarga y cierre del juego.&lt;/li&gt;&lt;/ol&gt;Aquí la parte que mas chicha tiene es la segunda. Ese bucle que le da la vidilla a nuestro juego, a su vez consta de otros tres apartados:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Lectura de dispositivos de entrada (teclados,ratones, joysticks...)&lt;/li&gt;&lt;li&gt;Cálculo del juego, posiciones de los personajes, física ...&lt;/li&gt;&lt;li&gt;Dibujado de la escena&lt;/li&gt;&lt;/ol&gt;Si alguien anda algo perdido, que imagine por un momento como funcionan las reproducciones en los cines, todos los fotogramas de la película son proyectados uno a uno en la pantalla con una velocidad tal que nos hace ver una animación. Esto es practicamente lo mismo, solo que los fotogramas no estan previamente dibujados, si no que se dibujan al vuelo.&lt;br /&gt;&lt;br /&gt;La tarjeta gráfica proporciona hueco para dos de estos fotogramas. El primero de ellos es lo que se envia al monitor mientras que en el segundo es donde esta nuestro juego preparando el siguiente. En el momento que consideremos que el fotograma esta listo, se le da la orden a la tarjeta gráfica y entonces ocurre un intercambio (conocido como Page Flipping o Page Swapping): El fotograma que hemos dibujado pasa a ser mostrado por la pantalla, y el que se estaba mostrando sale de la pantalla y cae en nuestras manos para que vayamos preparando en él, el próximo fotograma.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0netjHEIzNs/Ru71xfbfYPI/AAAAAAAAABU/vD6itBRivhI/s1600-h/Diagrama1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_0netjHEIzNs/Ru71xfbfYPI/AAAAAAAAABU/vD6itBRivhI/s320/Diagrama1.png" alt="" id="BLOGGER_PHOTO_ID_5111292857711288562" border="0" /&gt;&lt;/a&gt;Con esta pequeñisima introducción teórica, en la próxima entrega lo veremos como se plasma toda esta gallufada en el código, que es realmente sencillo. Y sobre un ejemplo mínimo, se irán añadiendo interactividad hasta hacer un juego... cutre no vamos a negarlo, pero nuestro cutre juego! hecho por nosotros mismos que es lo importante.&lt;br /&gt;&lt;br /&gt;Antes de despedir esta entrada, me gustaría dar un par de consejos, que a su vez, la vida a mi me los dio.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hacer un juego 2D, si tienes nociones de programación, es relativamente sencillo, dependerá casi en mayor medida de tus dotes de artista. Unos gráficos elegantes y buen gusto para los colores es vital para que un juego 2D sea respetado.&lt;/li&gt;&lt;li&gt;Hacer un juego 3D al estilo "quake" y compañía, puede ser mas difícil que bailar la banda sonora de &lt;span style="font-style: italic;"&gt;tiburón&lt;/span&gt;. Es altamente recomendado tener experiencia programando, soltura con el álgebra, e interminables horas de dedicación. Amén de que es aconsejable de partir de un motor 3D ya hecho o incluso, hacer un &lt;span style="font-style: italic;"&gt;Mod&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;No trates de impresionar a nadie que no sea otro programador, y a ser posible de videojuegos. La informática esta infravalorada, la gente prestará mas atención a un perro que trata de morderse la cola, que a tu juego que has tardado 6 meses en hacer tras leerte truñocientos tutoriales y howto's.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Es difícil que el juego de tus sueños salga a la primera, empezarás a hacerlo y llegarás a algún punto que no sabrás resolver. Esto le ha pasado hasta a John Carmack. Cada vez que intentas hacer algo, aprendes cosas, funcione o no tu juego.&lt;/li&gt;&lt;/ul&gt;Bueno, os dejo que le deis vueltas a la sesera y meditéis :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-189642660860406474?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/189642660860406474/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=189642660860406474' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/189642660860406474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/189642660860406474'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/09/empezamos-con-python.html' title='Empezamos con Python !'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0netjHEIzNs/Ru71xfbfYPI/AAAAAAAAABU/vD6itBRivhI/s72-c/Diagrama1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-5344179009511412523</id><published>2007-09-08T14:34:00.000+01:00</published><updated>2007-09-08T15:14:23.284+01:00</updated><title type='text'>Próximamente... Programación de juegos con Python</title><content type='html'>Cuantas veces has visto un videojuego y has creido poder hacerlo mejor? Cuantas de esas veces te han echado atrás los escasos conocimientos de programación? Nunca mais ! Devuelve a la biblioteca ese libro de programación en C del tamaño de un coco, desinstala esos 12Gb de Visual Studio y grábate a fuego esto: "Python".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.python.org"&gt;Python&lt;/a&gt; yo lo defino como el BASIC de los tiempos modernos. Es un lenguaje fácil de aprender, moderno, altamente productivo y... bueno, obviamente no es tan rápido como C/C++, pero no debe de ser un problema. El espectro de aplicaciones que se pueden llevar a cabo con python es muy amplio, este tiene soporte para interfaces gráficas (via Qt,Gtk e Wx entre otras), threads, comunicaciones, Bases de datos, audio, OpenGL... y está portado a un gran número de sistemas operativos !&lt;br /&gt;&lt;br /&gt;Como el tema a tratar es la programación de videojuegos, nos valdremos de la libreria &lt;a href="http://www.pygame.org"&gt;pygame&lt;/a&gt;. El nombre ya lo dice todo, python &amp; juegos :D Aunque  he de remarcar que pygame solo cubre juegos 2D, para gozar del 3D hay que apoyarse también con pyOpenGL.&lt;br /&gt;&lt;br /&gt;Aunque python es fácil y hay inmensidad de tutoriales por la red, partiré de que el que sigue el tutorial no tiene idea de python. (Aunque es altamente recomendable algo de experiencia con lenguajes de programación).&lt;br /&gt;&lt;br /&gt;Asi que, mientras negocio los exámenes de septiembre podeis ir descargando python y trasteando con él. Aunque no os agrade el mundo de los videojuegos, dadle una oportunidad a python, es un gran lenguaje :)&lt;br /&gt;&lt;br /&gt;No hagais maldades! Pero si las haceis, documentadlas :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-5344179009511412523?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/5344179009511412523/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=5344179009511412523' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/5344179009511412523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/5344179009511412523'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/09/prximamente-programacin-de-juegos-con.html' title='Próximamente... Programación de juegos con Python'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-2262627169219198178</id><published>2007-08-30T22:08:00.000+01:00</published><updated>2008-12-09T07:25:33.566Z</updated><title type='text'>Haiku</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0netjHEIzNs/Rtc73kuK5mI/AAAAAAAAABM/4pJCMXkpWfA/s1600-h/tour_03_about-haiku.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_0netjHEIzNs/Rtc73kuK5mI/AAAAAAAAABM/4pJCMXkpWfA/s320/tour_03_about-haiku.jpg" alt="" id="BLOGGER_PHOTO_ID_5104614528583919202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hoy voy a dar a conocer este gran proyecto, que aunque no soy colaborador de el, he estado muy metido en el tema y quiero compartir mis conocimientos :)&lt;br /&gt;&lt;br /&gt;Haiku es una reimplementación partiendo desde 0 de un sistema operativo llamado BeOS. Sin entrar demasiado en rodeos, corrian los años 90 cuando un grupo de ingenieros de Mac abandonaban sus instalaciones para fundar una compañia de software: Be Inc. Este atrevido grupo de ingenieros dieron luz a un sistema operativo muy moderno que haria correr los rumores.&lt;br /&gt;&lt;br /&gt;No reaprobechaba ni núcleos ya existentes ni servidores gráficos, a lo cual muchos hoy dia siguen tachando de una estupidez, pero los resultados hablaban por si mismos.BeOS no solo soportaba threads, sino que hacia uso intensivo de ellos, las aplicaciones se rompian facilmente en 4 o 5 hilos, los servicios del sistema e incluso el mismo núcleo trabajaba con múltiples hilos. Antaño no existian procesadores multicore, en su lugar existian placas multiprocesador lo cual es en esencia lo mismo. BeOS repartia la carga entre 2 o 4 procesadores de manera brillante y de forma totalmente transparente para el usuario. Pero las ventajas no acaban ahi, todo el sistema operativo estaba diseñado para el escritorio, desde el kernel hasta la interfaz, lo que se traducia a una respuesta asombrosa. Los clicks de ratón o los movimientos de ventana eran instantáneos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pero donde realmente se adelantó a su tiempo, es en el sistema de archivos. El BeFS ,cuando los linux frecuentaban el ext2 y los windows las fat32, era un sistema de 64 bits con journaling, infinitos metadatos por fichero e indexación de cualquiera de sus metadatos. Para que nos entendamos, a parte de la fecha y el nombre, un fichero puede contener cualquier tipo de atributo extra. En mi caso podia realizar búsquedas de la música por álbum de forma instantańea una vez mas.&lt;br /&gt;&lt;br /&gt;Era algo maravilloso, pero la leyes de mercado no entienden de maravillas y BeOS no logro hacerse un hueco rentable en el ya acomodado sitio de Windows y acabó muriendo. Sin embargo sus fieles seguidores hemos trabajado duro para resucitarlo, y el trabajo empieza a dar sus frutos.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Haiku no aprobecha nada de material de BeOS por problemas legales, por ese motivo ha sido todo concebido desde 0 usando una licencia BSD/MIT. En la web del proyecto podreis encontrar mas información, ademas de imágenes de disco generadas a diario para emularlo con QEMU o VMware y echarle un pequeño vistazo. Haiku aún no esta completo, hay muchísimo trabajo hecho y muchísimo por hacer. Te animas a echarles una mano??? :D&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.haiku-os.org"&gt;Web del proyecto&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.haiku-os.org"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-2262627169219198178?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/2262627169219198178/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=2262627169219198178' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/2262627169219198178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/2262627169219198178'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/08/haiku.html' title='Haiku'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_0netjHEIzNs/Rtc73kuK5mI/AAAAAAAAABM/4pJCMXkpWfA/s72-c/tour_03_about-haiku.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-4196862165581425304</id><published>2007-08-29T10:55:00.000+01:00</published><updated>2008-12-09T07:25:33.966Z</updated><title type='text'>Valley Of The Wind</title><content type='html'>El valle del viento (en adelante VOTW) es el nombre de otro de mis proyéctos en los que llevo ya tiempo trabajando. El nombre se lo puse en honor al mítico film y manga : Nausicaa del valle del viento (&lt;span style="font-style: italic;"&gt;Kaze no tani no Naushika&lt;/span&gt;) El film quizás es prescindible pero el manga no dejo de recomendarlo para otakus y no tan otakus.&lt;br /&gt;Bueno, sin irse mas por las ramas, votw es un trazador de rayos que comencé después de implementar un primitivo trazador para una asignatura de clase. Aunque sea una definición pobre, un trazador de rayos sintetiza escenas realistas tratando de simular el comportamiento de la luz y su intereracción con los objetos. Uno de los mayores problemas en el trazado de rayos es que el computo es muy elevado y es imprescindible un código eficiente y emplear grafos de escena para reducir el computo.&lt;br /&gt;&lt;br /&gt;Como efectos básicos implemento texturas, bump mapping y sombras arrojadas. Para mejorar el realismo primero probe con tecnicas de sombreado estocástico, como Ambient Occlusion.&lt;br /&gt;&lt;br /&gt;Esta son las imágenes:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0netjHEIzNs/RtVNtEuK5hI/AAAAAAAAAAk/CTgYbEiCxVw/s1600-h/shot1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_0netjHEIzNs/RtVNtEuK5hI/AAAAAAAAAAk/CTgYbEiCxVw/s320/shot1.png" alt="" id="BLOGGER_PHOTO_ID_5104071189451171346" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0netjHEIzNs/RtVNuEuK5jI/AAAAAAAAAA0/slTd5xwQNpc/s1600-h/shot3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_0netjHEIzNs/RtVNuEuK5jI/AAAAAAAAAA0/slTd5xwQNpc/s320/shot3.png" alt="" id="BLOGGER_PHOTO_ID_5104071206631040562" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0netjHEIzNs/RtVNtkuK5iI/AAAAAAAAAAs/b7MsGK998Qg/s1600-h/shot2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_0netjHEIzNs/RtVNtkuK5iI/AAAAAAAAAAs/b7MsGK998Qg/s320/shot2.png" alt="" id="BLOGGER_PHOTO_ID_5104071198041105954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bueno lejos de ser una maravilla, ya me dejan satisfecho ^_^ Aunque no conforme con llegar hasta aquí. Empecé a trabajar en un algoritmo joven llamado &lt;span style="font-style: italic;"&gt;Photon Mapping&lt;/span&gt;,  me quede un poco atascado y  encargué un libro especializado  en Amazon.com. En estos momentos alguno de mis vecinos debe de ser ya un experto en mapeado de fotones ¬¬&lt;br /&gt;&lt;br /&gt;Asi que mientras resuelvo esa eventualidad tengo que dejar pausado este proyecto y centrarme en los exámenes de septiembre. Como siempre escucho sugerencias ^_^ un saludete !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-4196862165581425304?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/4196862165581425304/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=4196862165581425304' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/4196862165581425304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/4196862165581425304'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/08/valley-of-wind.html' title='Valley Of The Wind'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_0netjHEIzNs/RtVNtEuK5hI/AAAAAAAAAAk/CTgYbEiCxVw/s72-c/shot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-8047382164423337943</id><published>2007-08-12T01:33:00.000+01:00</published><updated>2007-08-12T02:00:45.904+01:00</updated><title type='text'>Funciona!!!</title><content type='html'>Bueno, tal y como adelantaba ayer, esta mañana he sustituido el L293 por el mas potente L298. El resultado ha sido mejor del que me imaginaba, la verdad aunque hemos tenido un lapsus de última hora. La señal PWM mueve los coches sensacionalmente, y eso que aún no está del todo ajustada. Al usar el puerto paralelo para comunicarme con el PIC, dispongo de 8 bits para especificar la velocidad en dos pistas, con lo que nos quedamos con 4 bits por pista, osea, 16 posibles niveles de PWM. Como yo en su dia, supongo que pensareis: "solo 16 velocidades?? Vaya patraña!!" Aunque conozco la manera de sacar hasta 64 niveles... con 16 ni se nota, ni saltos ni escalones, una conducción suave con un dualshock de ps2.&lt;br /&gt;&lt;br /&gt;Como todo no iba a ser perfecto, algo ha fallado en el L298 y ha empezado a dejar pasar corriente destrozando nuestras ilusiones :( No se, creo que no he tomado las suficientes protecciones a la hora de proteger el integrado y me lo he cargado. Es lo que tiene la ignorancia :D Ahora toca seguir documentandome y dar con la solución.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-8047382164423337943?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/8047382164423337943/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=8047382164423337943' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/8047382164423337943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/8047382164423337943'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/08/funciona.html' title='Funciona!!!'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-7852127739202665457</id><published>2007-08-10T13:03:00.000+01:00</published><updated>2008-12-09T07:25:34.446Z</updated><title type='text'>Scalextric pseudo-digital casi funcionando!!!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0netjHEIzNs/RrxZQgbpRnI/AAAAAAAAAAM/O7N26iF54g8/s1600-h/DSC00930.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_0netjHEIzNs/RrxZQgbpRnI/AAAAAAAAAAM/O7N26iF54g8/s320/DSC00930.JPG" alt="" id="BLOGGER_PHOTO_ID_5097047018395223666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0netjHEIzNs/RrxZQwbpRoI/AAAAAAAAAAU/gLvaP1icRD4/s1600-h/DSC00931.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_0netjHEIzNs/RrxZQwbpRoI/AAAAAAAAAAU/gLvaP1icRD4/s320/DSC00931.JPG" alt="" id="BLOGGER_PHOTO_ID_5097047022690190978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0netjHEIzNs/RrxZQwbpRpI/AAAAAAAAAAc/iVvmfhz-OFo/s1600-h/DSC00932.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_0netjHEIzNs/RrxZQwbpRpI/AAAAAAAAAAc/iVvmfhz-OFo/s320/DSC00932.JPG" alt="" id="BLOGGER_PHOTO_ID_5097047022690190994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pues no, no habia desaparecido, he estado trabajando en el scalextric pseudo-digital, que me ha dado mas problemas de los que esperaba, la mayoria de ellos debido a mi inexperiencia programando PICS y a mis escasos conocimientos de electrónica.&lt;br /&gt;&lt;br /&gt;El caso es que tras varios dias con resultados nulos, al borde de abandonar el proyecto, y justo anoche conseguí que el pic generara un PWM. Por cierto... que sufrido se hacen estas cosas sin un osciloscópio. Y el caso es que la comunicación PIC-PC no estaba funcionando bien debido a un mal diseño del hardware (a grandes rasgos...que habia metido la pata). Esta mañana soldador en mano le he dado solución. Me he construido un pequeño vehículo con Lego y a probar. Como es costumbre en informáticos atrapados, me he puesto a dar brincos por toda la buhardilla dejandome llevar por la emoción.&lt;br /&gt;&lt;br /&gt;Como todo no iba a ser perfecto, al usar un L293 como etapa de potencia, al montar una pista de scalextric para hacer una prueba, iba algo lento. Como se dice ne mi tierra, &lt;span style="font-style: italic;"&gt;massa pera la carabassa&lt;/span&gt;, los 14V @ 1A desbordan las capacidades del L293, asi que tendre que probar con el L298, supuestamente mas capacitado.&lt;br /&gt;&lt;br /&gt;El manejo del coche lo hago con un dualshock de ps2, con un pequeño programilla en python para capturar los datos del joystick y hacer una pequeña interfaz gráfica. En el futuro además, simulara el comportamiento dinámico de los coches y mostrara vueltas, tiempos y todo lo que se nos antoje.&lt;br /&gt;&lt;br /&gt;Bueno, cuando este operativo al 100% ya aportaré mas datos técnicos. Por ahora habrá que conformarse con unas fotos que prueben la hazaña.&lt;br /&gt;&lt;br /&gt;Por cierto! aún no he quemado nada ! ^_^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-7852127739202665457?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/7852127739202665457/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=7852127739202665457' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/7852127739202665457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/7852127739202665457'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/08/scalextric-pseudo-digital-casi.html' title='Scalextric pseudo-digital casi funcionando!!!'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_0netjHEIzNs/RrxZQgbpRnI/AAAAAAAAAAM/O7N26iF54g8/s72-c/DSC00930.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-2622341420560403459</id><published>2007-07-19T10:48:00.000+01:00</published><updated>2007-07-19T12:29:44.970+01:00</updated><title type='text'>Escapadita con MTB</title><content type='html'>Ayer hice la primera escapadita con la bici, despues del accidente que tube el octubre pasado y que me obligó a dejar el deporte durante un par de meses. Algo mas de dos horas por una ruta de senderismo que cubre Monserrat y Montroy. Para los interesados, la ruta es la PRV-272. Es una ruta mixta, cubre desde zonas perfectamente asfaltadas hasta senderos totalmente olvidados donde la vegetación se abre paso. Amén de los pedrulos que si no te fijas terminas la jornada en la UVI. Pero vamos, en general acaba resultando facilona y a buen ritmo facilmente se hace en 45 minutos.&lt;br /&gt;&lt;br /&gt;El año pasado mi colega y yo tratamos de llegar hasta el mar desde mi xalet (Monserrat) evitando vias con trafico. El mayor problema, no es la distancia (25km en linea recta), si no que tenemos la Albufera como obstáculo y su laberíntico entramado de senderos entre campos de arroz. La misión fracasó :(&lt;br /&gt;&lt;br /&gt;Pero no contentos con el resultado aprobechamos el frio del invierno para estudiar rutas alternativas en los mapas, asi que este verano, esperamos llegar hasta algun playa del Saler :D&lt;br /&gt;&lt;br /&gt;El hecho de llegar es puro orgullo (lease cabezoneria). La ruta es larga (sobre unas 4 horas) tocando firme asfaltado, tierra, y trozos urbanos. Salimos desde mi xalet, y bajamos hasta Picasent. Sorteamos la A7 por un paso peatonal bajo la autovia, que nos lleva a Alcasser, y de aqui a Silla atravesando el pueblo como un vehículo mas. Las travesias urbanas me gustan, se puede hacer un poco el gamberrete subiendo y bajando aceras con algún que otro salto para deleitar a los mas nanos. Lo malo es que la gente nos mira como si fuesemos desprendiendo confetis :S Una vez en Silla es donde nos perdemos, vamos a tener que pedir algun consejo a los sabios del lugar.&lt;br /&gt;&lt;br /&gt;Bueno tengo que meter fotos! que esto pierde mucho encanto sin ilustraciones. Ya sabeis chicos, el verano es tiempo de salir, os animo a desempolvar la "mountainbaik" de vuestra comunión y daros una vuelta :D Además de saludable se puede convertir en divertido. (Como los anuncios de las ensaladas, pero de verdad! )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-2622341420560403459?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/2622341420560403459/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=2622341420560403459' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/2622341420560403459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/2622341420560403459'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/07/escapadita-con-mtb.html' title='Escapadita con MTB'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-3149520022290925193</id><published>2007-07-17T16:15:00.000+01:00</published><updated>2007-07-17T16:58:35.962+01:00</updated><title type='text'>Scalextric pseudo-digital</title><content type='html'>Hara cosa de un par de Navidades, los chicos de Tecnitoys presentaron su nuevo "Scalextric digital". No tardaron en responder los foros de slot, donde se empezo a discutir sobre la viabilidad del asunto, a la vez que las marcas rivales se apresuraban en sacar su version digital al mercado. Bien, el sistema digital incorpora nuevas posibilidades al slot de toda la vida, pero supongo que por cuestiones de mercado, Scalextric hizo su nuevo sistema totalmente incompatible con el material ya existente. Lease coches, pistas, mandos y transformadores. Con lo cual, no fuimos pocos los que nos comimos un "full" mientras maldeciamos a Tecnitoys.&lt;br /&gt;&lt;br /&gt;Historias aparte, hace poco decidí convertir mi obsoleto scalextric en una versión pseudo-digital !! La polémica está asegurada señores !!&lt;br /&gt;&lt;br /&gt;La idea consiste en que sea un PC el que controle directamente la velocidad de los coches, mientras que los jugadores en vez de usar el tradicional mando, ahora pilotan con un joystick o pad para PC (en mi caso el DualShock de ps2). De esta manera, el PC puede simular curvas de potencia, combustible, peso, paso por pit lane, repeticion de la ultima vuelta.... Todo esto sin manipular el scalextric en si.&lt;br /&gt;&lt;br /&gt;Vamos ahora con la parte técnica:&lt;br /&gt;Tradicionalmente, los mandos de scalextric han sido potenciometros, que variaban el voltaje que atravesaba las pista y por consiguiente, la velocidad de los coches. Mi idea (no es realmente mia, ya se empleaba en otros hobbies ) es usar &lt;a href="http://es.wikipedia.org/wiki/Modulaci%C3%B3n_por_ancho_de_pulsos"&gt;PWM&lt;/a&gt; para controlar la velocidad. Básicamente, pwm (Modulación por ancho de pulso) consiste en enviar un tren de pulsos de periodo fijo, y alterar el ancho del pulso. De esta manera se regula la velocidad de los motores, manteniendo un par constante. Los mas astutos ahora estareis preguntando..."y a que frecuencia se debe generar esos pulsos?". Eso lo dejo como ejercicio para el lector. :D Ciertamente, no lo se, lo que si he conseguido averiguar es que las frecuencias mas altas le dan mas par al motor, siendo mas efectivas. Por lo que he podido indagar, 1Khz debería ser mas que suficiente.&lt;br /&gt;&lt;br /&gt;El problema, es que una señal cuadrada de 14V de amplitud y 1Khz de frecuencia, no la genera un PC ni de blas. Hace falta dotar a nuestro amigo de una electronica extra. Si ya estabais escandalizados por lo mal que se me da la informática, agarraos al verme con la electrónica :D Mi idea es ayudarme de un pic 16f876 para generar la señal, a traves de las ordenes enviadas desde el PC a través del puerto paralelo, y amplificarla a 14V usando el integrado L298. Para los mas osados que quieran emular mi hazaña, he tomado también la precaución de aislar el pc usando optoacopladores 4N35, porque ya os adelanto que 14V a través del puerto paralelo no son nada saludables.&lt;br /&gt;&lt;br /&gt;Ahora mismo estoy soldando los componentes, cosa que no se me da demasiado bien, y espero además no haber hecho ninguna aberración que destruya algún componente.&lt;br /&gt;&lt;br /&gt;Bueeeeno pues ya os iré informando de los avances. Stay tuned !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-3149520022290925193?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/3149520022290925193/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=3149520022290925193' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/3149520022290925193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/3149520022290925193'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/07/scalextric-pseudo-digital.html' title='Scalextric pseudo-digital'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8374928888845700965.post-6675558049093790594</id><published>2007-07-16T22:53:00.000+01:00</published><updated>2007-07-16T23:14:04.656+01:00</updated><title type='text'>Presentación</title><content type='html'>Bueno, pues estreno blog !!!  Supongo que lo mas correcto es presentar el blog, y a mi mismo.  Si de algo se me da bien, es hablar poco y escribir menos asi que sere breve :D La idea de este blog es narrar los proyectos en los que trabajo a fin de que otros puedan tomar ideas o aportar sugerencias :)&lt;br /&gt;&lt;br /&gt;En lo referente a mi, pues bueno, soy un estudiante de ingeniería Informática de Valencia aficionado a la informática (vaya, que obvio ¬¬), a los deportes, la mecánica y bueno...casi cualquier cosa creativa.&lt;br /&gt;&lt;br /&gt;Mañana ignaguraré el blog con algo de mas chicha técnica. Un saludo a todos, en especial a mi novia ^_^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8374928888845700965-6675558049093790594?l=engineeringbay.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://engineeringbay.blogspot.com/feeds/6675558049093790594/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8374928888845700965&amp;postID=6675558049093790594' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/6675558049093790594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8374928888845700965/posts/default/6675558049093790594'/><link rel='alternate' type='text/html' href='http://engineeringbay.blogspot.com/2007/07/presentacin.html' title='Presentación'/><author><name>Lt_Henry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
