Let's Make Robots!

Minibloq: New graphical programming for Arduino, Multiplo and robotics



I'm working on an new graphical programming environment for Arduino, physical computing devices and robots. It's called Minibloq and, although it's not finished yet, it's possible to see something here:

I think it may be specially usefull in schools, and it may have some interesting features as well, like the following:
  • Runs completely offline and it's portable (can execute from a pendrive).
  • It's fast (C++ native program).
  • Really generates C/C++ code, compiles it and sends it to the board's flash, just with one click.
  • Wine compatible: It even runs on an OLPC XO (there are videos on the website).
  • Expandable.
  • Modern GUI, with dockable panes, zoom, key navigation, etc..
  • Made with open source tools (basically wxWidgets, MinGW, Code::Blocks, Inkscape...)
  • Once finished the v1.0 it will become open source (MIT like license, with just a limitation: non-military use).


I'm trying to finish a first public version (v0.4) for the end of the next month (waiting for a possible kickstarter one-month campaign).

Feedback is welcome! Here is a small screenshoot (a blink program):


Ah, and here are examples:







Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.


I’m glad to announce the new miniBloq.v0.82 version. It has a lot of improvements, and it supports the Arduino Leonardo, the new DuinoBot.v2.3 (both in HID and in CDC mode) and a bunch of robots, like the Pi-Bot (pi-bot.org), Sparki (Arcbotics), SparkFun RedBot, etc.. There is a lot of new features too: small 2D simulator for kids (miniSim), more blocks, better usability, improved performance, and a new XML backend to easily add new hardware and new blocks without recompiling anything! This last feature makes it really easy to hack, since miniBloq now can generate code not just for C/C++ Arduino-compatible boards, but also for Python and nearly any imperative/OOP language Take a look at the release post in miniBloq’s website: 




Hi! yesterday, we released the Linux native version of Minibloq:


Feedback, testing and ideas are very welcome...







Last week was released the Minibloq.v0.81.Beta, which is the first version that supports full internationalization.  Soon I will be posting about the roadmap of the project, as well as updating the documentation with the new features. Also, I hope this week to document exactly how to add complete translations to any language.

Here is the post about the release:


This is the changelog:





I forgot to say that we are needing help with translations to other languages (right now Minibloq is only in English and Spanish).

Thanks again!


I could translate it in Romanian. Contact me if you would like to. :)

Great!! Many thanks! I will send to you a message right now.



I could translate to Finnish, but you may don't need it :D

I would love to have it in Finnish! I will send to you my email by personal message.



Hi! As part of the new preliminary documentation, we have added a page with complete examples, most of which include Frizting diagrams, videos and Minibloq code (mbqc files). These examples start from the simple ones (like the well known "blink", to get started fast) adding complexity progressively. All of them include the parts list and most can be built using spare components as well as sets such as the SparkFun Inventor's Kit for Arduino, the ::oomlout:: ARDX or the RobotGroup Multiplo TechBox. We encourage Minibloq users to add their own designs to the forum, so we can post about them too! We want to add more examples soon, specially from other users and with other kits (you can send yours, of course), and to improve the existing.

To see the new examples page, please follow the following link:






Hi Julian,

Thanks for your hard work with Minibloq. I gave it a try last night and I found it a bit un-intuitive (for me), but after a while I figured it out and I could write the code I wanted.

A few observations/questions:

1. I need to be able to use my own hardware. For example, The Robot Builder's Shield with Arduino Uno or Duemilanove 328. For that, I need to reconfigure the way the pins are set on a D328 as you have it. My RBS uses pins 5 and 6 for motor PWM, 4 and 7 for motor direction, 8 through 13 for servos (using the Servo library) or other digital devices, pins A0-A5 for sensors. Also, pins 2 and 3 are available for encoders, pins 0 and 1 for serial comms. Any info how to reconfigure the board pins in Minibloq? For example, if I click on the D8 pin on the board image, I could get a menu where I could select the use for that particular pin, like digital pin, servo pin, motor direction pin, etc.

2. I am not sure how the motor block works. How is the direction set? Automatically? Do you have to set the direction pins before you set the motor speed (by using blocks)? Edit: after looking at the examples, I figured that for reverse I need to add a - sign before the speed value. 

My shield has the possibility to manually configure the motor control method by jumpers, either by using 3 pins per motor (dir0, dir1, pwm) or 2 pins per motor (dir and pwm). While you are familiar with the first mode, the second mode works like this: dir=Low means motor Forward and positive PWM signal sets the speed (0=stop, 255=max), dir-High means motor Reverse and inverse PWM signal sets the speed (255=0, 0=max). Is there a way for me to configure the motor block what pins does it uses? Edit: I can edit the .h file and have it work the way I want it, but it's a hack.

3. Will be available in the future something like a User Block that I can use to create functions that I can colapse or expand as needed? For instance, I would like to create functions like Forward, Reverse, Left, Right, that set the motor direction pins and speed so I don't have to write the same code again and again... Another example would be creating a PlaySong function...

4. Can we rename the motors and servos with more intuitive names? For instance, keep the motor0 name but let me rename the motor above it, just like a variable, with what ever name I want (for example: Left). Then, if I use the motor block again, if I select motor0 then rename the block automatically with the name I gave it before. Same for the servos.

5. Also, for the IRremote pin, it would be nice to have the possibility to set the pin like for a Ping sensor. For instance, to pin D14 (analog 0) just in case I use all digital pins.


I hope this is good feedback!