Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



domingo, 30 de diciembre de 2012

Proyecto de construcción y programación de un seguidor solar

Proyecto de construcción 

y programación 

de un seguidor solar


Oleguer Canal y Ricard Lado, han realizado un proyecto de construcción y programación de un seguido solar, y parte de su proyecto  esta realizado en gambas2.
Os dejo aquí información sobre su proyecto:


Presentación:

A través del trabajo, mostraremos el proceso para llegar a construir y programar un seguidor solar, basado en un algoritmo de posicionamiento solar, y no en un sistema de sensores de luz, matiz muy importante a tener en cuenta en cuanto precisión. A partir de este algoritmo astrofísico crearemos un programa que pueda prever la posición solar en cualquier momento y durante un intervalo cualquiera, paralelamente,
construiremos una maqueta de un seguidor solar, y programaremos un PLC (Programable Logical Controller) para que a través de los datos generados por el primer programa, aquel coordine las acciones los motores de la maqueta y así poder obtener siempre el ángulo óptimo para el aprovechamiento máximo de energía.
Todo ello siguiendo los ideales de la filosofía que se esconde tras el software libre, que iremos mostrando  en varios apartados del trabajo. Queremos destacar que creemos profundamente en los principios del software libre, es por eso que cedemos todos los avances que hacemos a la comunidad, para garantizar su mejora y inmortalidad. Procuraremos utilizar el máximo en el que nos sea posible este tipo de programas a la hora de crear el trabajo.

Objetivos
Nuestro proyecto tiene como objetivos el diseño, la construcción y la programación de un seguidor solar. Así como de todos los apartados que se puedan derivar como la solución de problemas.
Los principales objetivos de este trabajo son:
- Definir el concepto de seguidor solar y sus aplicaciones.
- Diseñar un prototipo de seguidor solar en dos ejes.
- Programar un sistema de control del seguidor solar teniendo en cuenta los algoritmos de seguimiento solar.
- Construir una maqueta funcional de un seguidor solar, como apoyo para la explicación del software creado."

Como comentan en su presentación el software que han realizado es libre, os dejo los enlaces donde podeis descargaros los programas que han realizado.
Captura de la aplicación realizada en gambas2:
Nota sobre las gráficas que se obtienen con el programa:

Gráfica azul: Da la posición solar expresada en el ángulo Zenith, el que determina a altura a la que llega el sol respecto la vertical del observador, siendo 90º en el horizonte y 0º justo encima. (azul por el color del cielo)

Gráfica verde: Simboliza la posición del sol desde el punto de vista de la posición cardinal (es como una brújula que da la posición del sol) [se ven los puntos cardinales N,S,E,O] (verde de tierra hierba)

Gráfica pestaña negra: Combinando esos dos ángulos, altura y orientación cardinal, puedo localizar el sol en la bóbeda celeste desde cualquier punto de la tierra, ese seria el grafico negro, este me determina el movimiento real, sin un eje temporal.


Video de demostración:



Enlace Traducido a Castellano: enlace web del proyecto
Enlace Original en Catalán:  web del proyecto original


Copia espejo:
Documentacion del proyecto en Pdf

Codigo fuente en gambas:
Programa para pantallas pequeñas
Programa para pantallas grandes





Goear-xtract: Escucha musica desde Goear.com

Goear-xtract: Escucha musica desde Goear.com


razaAztk ha comentado en el foro gambas-es.org (enlace) que esta trabajando en  una nueva versión de su antiguo programa Downloadergoear actualizado a gambas3:

"estoy realizando una nueva aplicación, pero en gambas3, con la misma idea - descargar música de goear.com -. Ahorita lo que he hecho es solamente un pequeño programa que busca y despliega una lista, cuando se le dá un dobleclick a un resultado comienza a reproducir la canción....... Quiero hacer una aplicación sino mejor escrita de menos más funcional y estética, je. Estoy en ello. De mientras les dejo lo que tengo a ver que les parece. "



 Para la descarga del programa: foro gambas-es.org: Goear-xtract: Listen To Music From Goear.com

Gambas2 y Gambas3 para Raspberry PI



Ver la documentación oficial
http://gambaswiki.org/wiki/install/raspbian



Aunque ya había leído algo de RaspberryPi y Gambas, que se podía compilar el código fuente directamente en la RaspberryPi (eso si, el proceso dura bastantes horas), he encontrado en el foro linuxbasic.net, una antigua noticia (del 1 de Junio de 2012), de SteveDee, que comenta donde conseguir los archivo .deb de instalación:




"Si eres uno de los afortunados que tienen un Raspberry Pi, o tal vez usted está esperando el suyo para ser entregado en cualquier momento, te alegrará saber que puede ejecutar gambas2 y Gambas3 en él!

Gracias a la entusiasta holandés Tom Vijlbrief, puede descargar un deb para gambas2 o Gambas3 desde aquí: -
http://tomv.home.xs4all.nl/raspberry/

No he probado todavía Gambas3, pero esto es lo que hice por gambas2: -
Copie el gambas2_2.24.0-1_armel.deb a (por ejemplo) / home / {usuario} / Downloads

En el terminal:
CD a este directorio.

A continuación, escriba:
sudo dpkg-i-gambas2_2.24.0 1_armel.deb

sudo apt-get-f install

Para crear un lanzador en el escritorio, cree un nuevo archivo en blanco en el escritorio y lo llaman "Gambas.desktop"

Ahora agregue el texto siguiente: -
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=gambas2
Name=Gambas
Icon=/usr/share/gambas2/icons/application-x-gambas.png


Programación feliz!"
 En el enlace: http://tomv.home.xs4all.nl/raspberry/ podeis decargaros los archivos .deb de instalación tanto de gambas2 como de gambas3

Os dejo dos enlaces como copia espejo de la descarga, por si no se puede del enlace principal.

gambas3_3.1.1-1_armel.deb

gambas2_2.24.0-1_armel.deb



Entrada original: 
 http://www.linuxbasic.net/news/gambas-runs-on-raspberry-pi/msg1864/#new 


Nota:
 Si no teneis una RaspberryPi, podeis emularla con Qemu en vuestro ordenador, siguiendo los pasos de este blog: Enlace: Qemu y Raspberry Pi


Nota 10/4/2014:Tanto gambas3.1 como gambas 3.5.2, ya se pueden instalar y usar en Raspberry PI

domingo, 23 de diciembre de 2012

videotutoriales de LaTex (usando Texmaker)

Iniciciación a LaTex, usando Texmaker, explicados en videotutoriales



He encontrado en youtube, una serie de videos realizados por Mrs. Krummel   que explican como usar el programa Texmaker, que usa Latex, para escribir documentos científicos, matemáticos, etc...

Aunque están en inglés, se entiende bastante bien lo que esta haciendo, ya que va mostrando cada vez que escribe una orden el resultado que se obtiene en el visor del documento.

Tienes que tener instalado texmaker:
$ sudo apt-get install texmaker


Esta es la dirección del canal de youtube: enlace
Videotutoriales de latex




La página del proyecto es esta: http://mrskrummel.com/tutorials , donde podeis ver los videotutoriales con mayor definición.

Te dejo tambien un pequeño manual de latex que he encontrado y que te servirá para complementar los videos: Manual Latex.pdf

Este es su indice:
1. Software necesario
2. ¿Porqué usar LATEX?
3. Compilando TEX 3
4. Iniciando
  1. Notas
  2. Fuentes
5. Ambientes
  1.  Verbatim
  2.  Listas
  3.  Espaciando y Centrando
  4.  Tablas
6. Fórmulas Matemáticas
7. Cuestión de detalle
8. Mi propia página
  1. Numerando páginas
9. Cajas
10. Inclusión de gráficos
11. Elementos flotantes
12. Secciones,
13. Título, Autor, Resumen e Índice.
14. Bibliografía
15. Colores
16.Aprender más


Fuente:
http://www.xm1math.net/texmaker/
http://mrskrummel.com/tutorials
Foro de latex en castellano: Foro Latex

sábado, 22 de diciembre de 2012

LibreOffice: Como Modificar un documento para poderlo leer con facilidad en tu movil o tablet

LibreOffice:

Como Modificar un documento para 

poderlo leer con facilidad

 en tu movil o tablet



Bien este es un pequeño truco que uso para modificar el formato de documentos y asi poderlos leer en un movil.

Cuando voy en autobus, metro o tren, me gusta leer algun libro o apuntes. Tengo un tablet pero es demasiado grande e incomodo para llevar y encima le dura poco la bateria...

¿usar un móvil? Es pequeño yle dura la batería días....el problema me viene es que se ven demasiado pequeña la letra y si uso zoom, tengo que estar desplazando la barra de la pantalla con el dedo para leer la linea entera....un rollazo!! :(

Solución:
Formatear el texto para que el ancho de la pagina sea el ancho de nuestra pantalla

Pasos a seguir:
1º Si tus apuntes o libro estan en pdf, los tienes que convertir en texto.
En linux puedes usar varios programas: (ver enlaces en nota 1)
  • xpdf
$ pdftotext -layout archivo.pdf archivo.odt 
  •  kword


2º Abres el archivo que has convertido (.odt) en el libreoffice.




 Vas al menu "Formato" y luego "Pagina". Aparece un nuevo formulario, vete a la pestaña "Página"



Eliges el formato "Usuario"



Ahora modificamos el Ancho y los Margenes Izquierdo y Derecho:

  1. Ancho:
    Según las dimensiones de la pantalla de tu movil, cambialo. A mi me viene bien dejandolo en 11.60 (realizando alguna prueba, y consiguiras el valor del ancho que te venga mejor)
  2. Margenes Izquierdo y Derecho:
    Lo mejor es dejarlos a cero
Le das al botón "Aplicar", y luego al boton "Aceptar"

El resultado es el siguiente:


3. Ahora solo tenemos que guardarlo en formato .pdf,  (botón "pdf")



 Y ya lo tenemos... ahora solo hay que pasar el documento a la memoria interna o tarjeta SD del movil para que podamos leer nuestros apuntes o libros tranquilamente en los viajes sin dejarnos las pestañas...



Fuentes:
Nota 1:
Como pasar de pdf a odt: http://guisheca.wordpress.com/2007/12/11/pasar-de-pdf-a-odt/
Convertir pdf a txt y viceversa con comandos:
http://travesuras.wordpress.com/2011/11/04/20111104-1/
Nota 2:
Lector gratuito de pdf para android: https://code.google.com/p/apv/downloads/list

lunes, 17 de diciembre de 2012

8 reinas: solución en gambas

8 Reinas:

Solución en Gambas


Os dejo aqui una solución del clásico problema de poner 8 reinas (mejor dicho, damas) de ajedrez en un tablero sin que se ataquen entre ellas.

 
Basicamente el programa lo que hace es:
      1-Coloca una reina en el tablero
      2-Comprueba que no esta en una casilla atacada por otra reina
      3- Si esta atacada la quita, y va al paso 1.
      4- Si no lo esta, marca en el tablero las casillas que ataca esta reina
      5- Si lleva 8 reinas termina el programa sino, va al paso 1.



Código fuente:Enlace

Nota:
Como vereis en la wikipedia, existen un total de 92 soluciones a este problema, el programa da la solución que primero encuentra.


Fuentes:
http://es.wikipedia.org/wiki/Problema_de_las_ocho_reinas
http://spaz.ca/aaron/SCS/queens/Board.java


domingo, 16 de diciembre de 2012

Clase: Dado Electrónico con sonido y movimiento

Clase: Dado Electrónico


He hecho una clase para un dado electrónico, que además de darte un numero aleatorio, se autodibuja en un DrawingArea dando el resultado.

Para crearlo, tenemos que definir los datos del numero máximo (por ejemplo si queremos un dado normal pondremos 6) y el color de fondo del dado.


 dado = New ClassDado(DrawingArea1, 6, color.red)


Para hacer una tirada, usamos el método tirar():

print dado.tirar()

Que nos devuelve un  número aleatorio.

Ademas se le ha añadido una pequeña animación y sonido, que es opcional según el valor del atributo "dibujado":

 dado.dibujadado = True


Captura de la aplicación

Enlace de descarga: enlace








miércoles, 12 de diciembre de 2012

Logica Difusa: Usándola en la IA de juegos

Logica Difusa

Usándola en la IA de juegos:

Valoración de Amenazas

En el libro de AI for Game Developers
, hay un capitulo dedicado al uso de la lógica difusa en la inteligencia artificial de juegos.

He creado un módulo de funciones  con los distintas funciones de permanencia (Grade, ReverseGrade, Triangular y Trapezoidal) y funciones  lógicas (Or, And, Not) para poder reutilizarlas en cualquier programa. (ver al final del articulo enlace de descarga del ejemplo)


Además he pasado el siguiente ejemplo a Gambas3:

El ejemplo trata de valorar una fuerza enemiga, sabiendo su número (muy pequeño/pequeño/moderado/grande). Este es el conjunto difuso que tenemos predefinido:
 (nota 1)
  y su distancia  (cerca, media, lejos)  a nosotros, siendo este el conjunto difuso predefinido:
 (nota 2)

 Así podremos conocer su nivel de amenaza, viendo la siguiente tabla predefinida, dándole una clasificación de Baja/Media/Alta:
 (nota 3)
 Para dar una respuesta con un número de fuerzas necesarias para nuestra defensa (ndeploy), tenemos esta tabla de el nivel de amenaza y  un valor de salida:

Y sabiendo los valores de Bajo/Medio/Alta de la fuerza, haremos una media aritmética para calcular la fuerza de respuesta:

-->
ndeploy = (mLowR * mlowData + mMediumR * mMediumData + mHighR * mHighData) / (mLowR + mMediumR + mHighR)


La variable ndeploy, nos define el numero de fuerzas necesarias.

Aquí tenéis una captura del ejemplo:




¿como sería el código?
 Para nota 1 y 2 (conjunto difuso predefinidos): -->
'distancia
mclose = MFunDi.FuzzyTriangle(valueboxHexes.value, -30.0, 0.0, 30.0)
mMedium = MFunDi.FuzzyTrapezoid(valueboxHexes.value, 10.0, 30.0, 50.0, 70.0)
mFar = MFunDi.FuzzyGrade(valueboxHexes.value, 50.0, 70.0)
'tamaño
mTiny = MFunDi.FuzzyTriangle(ValueBoxUnits.value, -10.0, 0.0, 10.0)
mSmall = MFunDi.FuzzyTrapezoid(ValueBoxUnits.value, 2.5, 10.0, 15.0, 20.0)
mModerate = MFunDi.FuzzyTrapezoid(ValueBoxUnits.value, 15.0, 20.0, 25.0, 30.0)
mLarge = MFunDi.FuzzyGrade(ValueBoxUnits.value, 25.0, 30.0)

 Para nota 3 (tabla de nivel de amenaza) :
 mLowR = MFunDi.FuzzyOr(MFunDi.FuzzyOr(MFunDi.FuzzyOr(MFunDi.FuzzyAND(mMedium, mTiny), MFunDi.FuzzyAND(mMedium, mSmall)), MFunDi.FuzzyOr(MFunDi.FuzzyAND(mfar, mTiny), MFunDi.FuzzyAND(mfar, mSmall))), MFunDi.FuzzyAND(mfar, mModerate))

mMediumR = MFunDi.FuzzyOr(MFunDi.FuzzyOr(MFunDi.FuzzyAND(mClose, mTiny), MFunDi.FuzzyAND(mModerate, mMedium)), MFunDi.FuzzyAND(mlarge, mFar))

mHighR = MFunDi.FuzzyOr(MFunDi.FuzzyOr(MFunDi.FuzzyOr(MFunDi.FuzzyAND(mClose, mSmall), MFunDi.FuzzyAND(mClose, mModerate)), MFunDi.FuzzyAND(mClose, mLarge)), MFunDi.FuzzyAND(mLarge, mMedium))


Os dejo aqui el enlace de descarga del ejemplo que lleva incluido el modulo de funciones de lógica difusa "MFundi": Enlace de descarga




Nota:
Gráficas realizada con PlotDrop (frontend de gnuplot)






domingo, 9 de diciembre de 2012

Clases: Buscar e Interpolar lineal




 Clases: Buscar e Interpolar lineal










Haciendo operaciones con la hoja de calculo, he visto varias funciones interesantes, por ejemplo buscarV ( ejemplo ) y he realizado 2 clases para hacer algo parecido:


- BuscarV
Dado una lista de dos columnas, buscar un valor en la primera columna y devolver el valor de la segunda columna.

Por ejemplo con los datos anteriores, si la calificación es 5, devuelve "Suficiente", si le ponemos 8.5 devuelve "Notable" (porque esta entre el 8 y el 9)


- Interpolar
Dado una lista de valores de X e Y, dado un valor X' obtener el valor interpolado linealmente de Y'
En la gráfica, podemos ver la lista de valores, y el valor de X' (9.5) y el Y' obtenido: 125


Las clases tienen un método que facilita la introducción de la lista de valores:
Definida:
 Public Sub add(valorB As Float, valorC As Float)

Ejemplo de uso:
  lista.add(0, 10)
  lista.add(1, 20)
  lista.add(2, 30)
  ...

Y para calcular..
Ybuscada=lista.InterpolacionLineal(Xvalor)


Enlaces de descarga: buscarV y InterpolacionLineal







sábado, 8 de diciembre de 2012

A fondo: Shutter ¿el mejor capturador de pantalla?

Shutter ¿el mejor capturador de pantalla?

Para capturar pantallas de tu escritorio, normalmente uso el capturador que viene por defecto gnome-screenshot, pero navegando encontré Shutter, que le saca años luz de ventaja.

Pasa a continuación a describiros el programa:


Tipos de capturas:
- Por selección
- Por ventanas: podemos elegir la ventana de la aplicación que deseemos

- Por escritorio: también si tenemos varios, podemos elegir cual.
Pestañas: 
Podemos ver todas las capturas que hayamos hecho: "Sesión" y las pestañas de cada captura realizada


Como veis, si estamos en la pestaña "Sesión" no nos deja editar ni exportar....(los botones  están en gris)

Si cambiamos a una pestaña de imagen capturada, ya tenemos activados los botónes "Editar" y  "Exportar"


Editar:
Si pulsamos en editar, podemos añadir a nuestra captura diferentes cosas (con distintos colores de borde y rellenado.)

  • Linea a mano alzada
  • Marcador
  • Flechas
  • Textos
  • Rectángulo
  • Círculos
  • Censurar zonas (si queremos ocultar datos)
  • Pixelar zonas (emborronamos zonas)
  • Autonúmeros (muy interesantes para indicar pasos o zonas de la pantallas capturadas)
  • Insertar imágenes y formas ya prediseñas o imágenes de nuestras carpetas


Añadiendo formas
Ejemplo de imagen modificada





Esto hace que la edición de imágenes para tutoriales sea realmente fácil y cómoda.

Una vez que hayamos terminado la edición podemos "guardar" o "guardar como.."



Exportar:
Tenemos varias opciones:
  • Hosting público
  • FTP
  • Lugares (nuestro carpeta)
  • Ubuntu One


Nota:
En el momento de hacer este post, el hosting "ImageShack invitado", no me llego a funcionar bien (no conseguí subir ningún archivo), en el resto de hosting, todo fue correcto.

Como vemos, también nos permite  subir las imágenes a Ubuntu One (hay que tener instalado la libreria, que la podemos instarlar desde synaptic)



Como última nota, comentaros, que las imagenes las podemos guardar en diversos formatos



O exportar a .PDF o .PostScript, o enviar por correo eléctronico...




 La instalación:



    $sudo add-apt-repository ppa:shutter/ppa
    $sudo apt-get update
    $sudo apt-get install shutter




En definitiva, una aplicación muy completa y recomendable
Fuentes:
http://shutter-project.org/ 
Libertad Tux: Capturar pantalla en Linux Ubuntu
Instalar-ubuntu-one-en-linux-mint


Añadido:
30/12/2012: En el menu Editar / Preferencias, accedemos a este formulario
Donde podemos definir muchas opciones, entre ellas el tiempo que tarda en realizar la captura desde que le damos al botón de captura.





 

viernes, 7 de diciembre de 2012

Efecto Cortinilla para unidades en construccion

Efecto Cortinilla

 para unidades 

en construcción

En muchos juegos del tipo  Command & Conquer , Red Alert , vemos como al hacer click en el icono de construir algo (soldados, tanques, fabricas) , aparece una cuenta atrás y se ve como poco a poco va apareciendo la unidad que estemo construyendo.

Me he hecho este efecto en gambas3...


Os dejo un video para que veais como funciona:



Os dejo el código, por si le sirve a alguien


Enlace: descarga

Nota:
9/12/2012: He añadido varias mejoras, ahora lleva un contador que va acumulando unidades. Ademas tambien se pueden cancelar estas unidades que hayamos dicho que construya (menos la 1º). Añadido un observer para controlar desde la clase los eventos que le llegan al  drawingArea.


miércoles, 5 de diciembre de 2012

Ver TDT digital en tu ordenador usando tu conexión de internet

 

Ver TDT digital en tu ordenador usando tu conexión de internet


He visto en usemos linux este interesante artículo:

"Sencillo script en bash para ver y grabar televisión en sistemas GNU/Linux / BSD sin tarjeta capturadora / sintonizadora. Solo se necesita una conexión a Internet, tener instalado Mplayer, Curl, Rtmpdump y Zenity para entornos Gtk o Kdialog para escritorio que usen Qt como KDE. Actualmente hay más de 80 canales de la TDT española."

Hay que instalar las siguientes dependencias:

En Debian / Ubuntu:
$sudo apt-get install mplayer rtmpdump curl

Descargar este archivo script:
 - enlace oficial
 - copia espejo (por si se pierde el enlace oficial)

Darle permisos de ejecución, y ejecutarlo....

Saldrá un listado con las cadenas y lo que están emitiendo, haciendo click en la cadena, arrancará Mplayer con el canal elegido... y a disfrutar..


Nota:
No olvidéis que con la tecla Mays + t, la ventana donde tengais la imagen reproduciendo el Mplayer, se pone siempre encima de todas las ventanas, asi podeis ver siempre la imagen, de hecho estoy realizando este post viendo a la vez un programa de tv :)


Para más información, visita estas fuentes:
http://usemoslinux.blogspot.com/2012/12/script-para-ver-toda-la-tv-digital.html
http://www.tvenlinux.com/

martes, 4 de diciembre de 2012

Mini mapa: Clase para crearlos

Mini mapa: 

Clase para Crearlos



En muchos jugos aparecen mini mapas para indicar una zona mayor del mapa del que aparece en pantalla. Es muy habitual verlos es los juegos de estrategia.

En gambas, hay un control especifico para dibujar, el DrawingArea, además también esta el contenedor ScrollView para contener controles que sean de mayor dimensión que el formulario que tengamos, apareciendo barras de desplazamiento (scrollbar) para movernos por  todo el área.

He creado una clase que con un formulario que contiene:
-. Un contenedor  ScrollView, y dentro  de este un drawingarea
-. Otro drawingarea, de menor dimensión (que usaremos como minimapa)
os ayudara a tener un minimapa con un rectángulo de la zona que estéis actualmente viendo en el ScrollView.

Además con un pequeño código insertado en los eventos _MouseMove() y _Scroll, haréis que el desplazamiento sea simultaneo tanto en el scrollview como en el minimapa:

-->
Public mini As New ClassMiniMapa
….
…..


'configuro la dimensión h de minimapObjeto
mini.configuro(ScrollViewVentana, areaMayor, MinimapObjeto)
…...

'------------------------------- usando la clase classMiniMapa
'
Public Sub MinimapObjeto_MouseMove()
mini.movimientoRaton(mouse.x, mouse.y)
End

Public Sub ScrollViewVentana_Scroll()
mini.movimientoVentana()
End

Aqui os dejo una captura del formulario:


 
Y aqui una captura funcionando



Os dejo aqui un video para que veais como resulta:





Código de descarga: Enlace


Nota:
No confundir con él nuevo componente gb.map para el uso de mapas en nuestras aplicaciones utilizando los mapas de Google y OpenStreetMaps. (enlace foro gambas-es.org)