Well, I'm happy with the response we had from the community. Now the French translation is here, and we will release in less than a week the first UpdatePack. This translation was the work of two persons: Jean-Daniel Planterose and Samuel Liaigre. I want to say thanks to them. Here is a small screenshot of the upcoming Minibloq.v0.81 with the UpdatePack-1:
miniBloq is an open source graphical programming environment for Multiplo™, Arduino™, physical computing devices and robots.
Thursday, June 28, 2012
Tuesday, June 26, 2012
Minibloq translated to German (thanks Erik)!
More translations are coming, and faster! This time, we want to say thanks to Erik Hermann for his nice work translating Minibloq to German. As this translation is complete (it includes the GUI itself and the tooltips, and even the HTML helpfiles) it will be available in the upcoming UpdatePack-1. As always, any translation is very welcome, even partial translations. There are other works in progress to translate Minibloq to French, Hebrew, Romanian and Chinese. Here is a small screenshot of the German translation:
Monday, June 25, 2012
Minibloq translated to Dutch (Nederlands, thanks Gijs)!
We want to thanks Gijs Noorlander for his great work translating Minibloq to Dutch. Gijs also manages the mirror from Holland to download Minibloq. This mirror has become the main source to get the software. He runs a blog too (here is a post about Minibloq). Gijs' translation, which includes not only the GUI, but also the tooltips and helpfiles will be available in the upcoming UpdatePack-1 (soon!).
Finally, I want to mention that Gijs sent an email explaining a better way to manage the bunch of .po files when translating the tooltips. I posted it to a forum thread here.
As always, any help regarding translations is very welcome. We would really like to see Minibloq available in as many languages as possible.
Finally, I want to mention that Gijs sent an email explaining a better way to manage the bunch of .po files when translating the tooltips. I posted it to a forum thread here.
As always, any help regarding translations is very welcome. We would really like to see Minibloq available in as many languages as possible.
Thursday, June 21, 2012
New tutorial: How to translate Minibloq
As promised, here is the tutorial about how to translate the new Minibloq.v0.81.Beta to a new language (of course, we are always looking for translators!). This is a fragment of the new Minibloq's Developers Guide (still under construction), where we describe (briefely by now) how to translate, customize the GUI, add new blocks and in the near future, how to compile Minibloq both under Linux and Windows:
1. How to translate Minibloq
The first thing to be translated is the GUI itself. This task is relatively easy, by following these steps:
1. How to translate Minibloq
Since the version v0.81.Beta, Minibloq supports internationalization (i18n) / localization (i10n). This brief tutorial explains how to translate Minibloq, using open source tools. Before start translating, you will need to:
- Download the last Minibloq version from the downloads page.
- Install Minibloq in your computer. For development purposes, it's highly recommended to install it in a directory where you can freely modify files, instead of the default C:\Program Files (or C:\Program Files (x86) folder. For example, in Windows 7, the Program Files folder is protected. So it will be better to install Minibloq elsewhere, in some temporal dir where you can write, copy, delete or edit files without administrative permissions.
- Download Poedit from http://poedit.net (we used the version 1.4.6 for all our internal work).
It's also important to know that there is a specific topic in Minibloq's forum related to internationalization (18n).
1.1. Translating the GUI- Every language has an international 2 letters code, called ISO 639-1. You will need to find your language code first. You can go to this link for that: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
- In Minibloq's installation path (for example C:\Program Files (x86)\Minibloq.v0.81.Beta), go to the following folder: Components\Minibloq\v1.0\GUI\Texts, and make a copy of the files en.po and en.Metadata.po.
- Now rename both new files (the copies you just made) using your 2 letters language code, instead of the English code "en". For example: Supose we are translating to Spanish. The code for Spanish is "es", so you will end with a file named es.po and another named es.Metadata.po (note: the names are case sensitive, so you must take care of using exactly these names).
- Open the Metada "po" file (ie, en.Metadata.po for English, es.Metadata.po for Spanish, etc.) with a raw text editor (in Windows you can even use the Notepad) and change the "en" code in the following line by your new language code:
msgid "en.Name"
For example, for Spanish, you will end with a line like this:msgid "es.Name"
- Now open the Metadata file with Poedit and change the language name ("English" in this case) by the new language name, but written in the new language itself. For example, for Spanish, it will be "Español":
- In Poedit, press the Save button (or go to the menu File->Save). This will not only save the .po file, but will also generate the .mo file, which is the compiled, portable, OS independent file that Minibloq will need to work (but please don't delete the .po file, it will be deployed with Minibloq also!)
- Now open the file xx.po with Poedit (where xx is your language code). In our example with Spanish, it will be the es.po file. Here, you can start translating each text string with the Poedit software. Poedit have, among other features, support for nearly any charset out there. Here is a screenshot with the Spanish file:
- Now you can test the new language files without restarting Minibloq. Just go to the View->Properties menu and press the Reload languages button. If everything is fine, your new language must be listed in the Language combobox:
Every time you advance with the translation, it's good to press the save button. As before, it will generate the .mo file also. Once you finish, you will have for files: xx.Metadata.po, xx.Metadata.mo, xx.po and xx.mo (where "xx" is your language code).
1.2. Translating blocks' tooltips
Now let's translate the tooltips for the blocks. As Minibloq is modular and every user can add his own blocks, each block has its own tooltip files. These files are located in the subdir Doc of each block directory (the blocks directories are here: Components\Minibloq\Lib\CPP\Blocks). So, inside each Doc subdir you will find standard .po files that can be translated easily with Poedit, and saved to .mo. You just need to open them with Poedit, change the tooltip string and save it. Here is a screenshot of Poedit with a .po file:
1.3. Translating help files
The help files do not involve any special program or procedure to be translated. They are just plain HTML files, and they can be edited and translated with any decent HMTL editor. There are only three important things regarding help files:
- You must keep the names of the files, in English, just as they are now.
- You will need to add the directory with the help files for your language, even if you don't translate them. If you don't do this, Minibloq may show an error dialog box when you select your language or when you start the application. If you will not translate the files, our advice is just to copy the English help files directory (called simply "en"), and renaming it. The name must be the 2 letters code (ISO 639-1) mentioned above.
- If you translate the files, try to use a plain text editor, or a good HTML editor which does not add overhead, nor hidden characters.
Wednesday, June 20, 2012
Continuous rotation servo with user defined block
Antonio Lomba, from Galicia, has sent this article, which explains how to use continuous rotation servos with Minibloq and user defined blocks (this is the original post from his blog (Galician): http://www.tecnoloxia.com/index.php/control/224-motor-servo-de-rotacion-continua-con-minibloq.html):
Continuous rotation servos work with small electric pulses. According to the duration of the pulses, the servo rotates clockwise, counterclockwise, or remain stoped. To drive this kind of servomotors is necessary to know it's working characteristics.

Continuous rotation servos work with small electric pulses. According to the duration of the pulses, the servo rotates clockwise, counterclockwise, or remain stoped. To drive this kind of servomotors is necessary to know it's working characteristics.
For example, for a S35/STD de GWS servo, the manufacturer recommends 0.9 ms pulses to rotate clockwise, 1.5 ms pulses to brake the motor, and de 2.1 ms pulses rotate it counterclockwise. It's also important to control the signal period, which is the total sign time taking into account both the high and the low pulse. The recommended period to obtain the optimal rotation speed is between 16 and 23 ms.
To connect the motor to an Arduino Uno board, we will need to take a look to the colours in the conexion cable, connecting as showed in the following image (brown cable = GND, red cable = 5V and yellow cable for the control pin):

The basic programs to control the continuous rotation of the servo both clockwise and counterclockwise (using the digital I/O pin D3) are shown below. The delay times are expressed in microseconds. To do this it was necessary to make a new block (called
delayMicroseconds) and add it to Minibloq. This is because the delay block that comes with Minibloq manages only milliseconds, so it was not possible to program 1.5 millisecond pulses with it:
The delayMicroseconds is a user defined block, which was created using the delay block as the base. In the new Minibloq's Developers Guide we explain, among other tips, how to create this kind of blocks.
Servo de rotación continua con bloque definido por el usuario
Antonio Lomba, desde Galicia, nos ha enviado este artículo que explica cómo utilizar servos de rotación continua con Minibloq y bloques definidos por el usuario (ésta es la versión resumida del original http://www.tecnoloxia.com/index.php/control/224-motor-servo-de-rotacion-continua-con-minibloq.html):
Los motores servo de rotación continua funcionan al recibir pulsos eléctricos. Según la duración del pulso el servo girará en uno u otro sentido, o permanecerá parado. Para gobernar este tipo de motores es necesario conocer sus características de funcionamiento.

Los motores servo de rotación continua funcionan al recibir pulsos eléctricos. Según la duración del pulso el servo girará en uno u otro sentido, o permanecerá parado. Para gobernar este tipo de motores es necesario conocer sus características de funcionamiento.
Para
un servo modelo S35/STD
de GWS el fabricante recomienda pulsos de 0,9
ms para conseguir el giro en el sentido de las agujas del reloj,
pulsos de 1,5 ms para bloquear el motor en una posición y mantenerlo
parado, y pulsos de 2,1 ms para que gire en el sentido antihorario.
También hay que controlar la duración del período, que es el
tiempo total de la zona activa de la señal y la zona inactiva. La
duración del período recomendada para conseguir una velocidad
óptima está entre 16 y 23 ms.
Para
conectar el motor en una controladora Arduino Uno tendremos en cuenta
los colores de los cables de conexión del motor y lo haremos tal
como se indica en la imagen. El cable marrón para GND, el cable rojo
a 5V y el cable amarillo para el pin de control digital:

Los
programas básicos de control para el giro continuo en ambos
sentidos, utilizando el pin de salida digital D3 para el control, son
los que se muestran a continuación. Los tiempos programados en
Minibloq están en microsegundos. Para ello fue necesario incorporar
un nuevo bloque a Minibloq, se trata del bloque delayMicroseconds.
El bloque delay que trae por defecto el programa maneja el
tiempo en milisegundos y con este bloque no era posible programar la
parada del motor con impulsos de 1,5 milisegundos, ya que el bloque
no admite números decimales.
El bloque delayMicroseconds es un bloque definido por el usuario, partiendo precisamente del bloque delay. En la nueva Guía de Desarrolladores de Minibloq (en inglés) se explica, entre otras cosas, cómo crear este tipo de bloques.
Control de motor servo de rotación continua (galego)
Antonio Lomba, dende Galicia, enviounos este artigo que explica a utilización de servos de rotación continua con Minibloq e bloques definidos polo usuario:
Os motores servo de rotación continua funcionan ao recibir pulsos eléctricos. Dependendo la duración do sinal activo o servo xirará nun ou noutro sentido, ou permanecerá parado. Para gobernar este tipo de motores é necesario coñecer as súas características de funcionamento.

Os motores servo de rotación continua funcionan ao recibir pulsos eléctricos. Dependendo la duración do sinal activo o servo xirará nun ou noutro sentido, ou permanecerá parado. Para gobernar este tipo de motores é necesario coñecer as súas características de funcionamento.
Para un servo modelo
S35/STDde GWS o fabricante recomenda pulsos de 0,9 ms para conseguir o
xiro no sentido das agullas do reloxo, pulsos de 1,5 ms para bloquear
o motor nunha posición e mantelo parado, e pulsos de 2,1 ms para que
xire no sentido contrario das agullas do reloxo. Tamén se debe
controlar a duración do período, que é o tempo total entre a zona
activa do sinal e a zona inactiva. A duración do período
recomendada para conseguir unha velocidade óptima está entre 16 e
23 ms.
Para conectar o motor
nunha controladora Arduino Uno teremos en conta as cores dos cables
de conexión do motor e farémolo tal como se indica na imaxe. O
cable marrón para GND, o cable vermello a 5V e o cable amarelo para
o pin de control dixital:

Os programas básicos de
control para xiro continuo a dereita e xiro continuo a esquerda,
utilizando o pin de saída dixital D3 para o control, son os que se
mostran a continuación. Hai que facer notar que os tempos que están
programados en Minibloq son en microsegundos. Para elo foi necesario
incorporar un bloque novo ao Minibloq, trátase do bloque
“delayMicroseconds”. O bloque “delay” que trae por defecto
manexa o tempo en milisegundos e con este bloque non era posible
programar a parada do motor con impulsos de 1,5 milisegundos xa que
este bloque non admite números decimais.
O bloque delayMicroseconds é un bloque definido polo usuario, partindo precisamente do bloque delay. Na nova Guía de Desenvolvedores de Minibloq (en inglés) explícase, entre outras cousas, como crear este típo de bloques.
Subscribe to:
Posts (Atom)