Hi Enrique,
The short answer is: I have not solved this.
The long answer: point 3 and 6 are software design issues that should be pretty simple to fix. Point 4 is a bug in the EncoderMotorDriver software.
I have not determined the cause of point 5, but suspect it is related to hardware or power supply issues.
Fixing the issues (or making modifications to the code in general) is one thing, but distributing them is another. First the fixes require changes to both the arduino makeblock library and to the firmware embedded into the encodermotordriver. The first one only makes sense if MakeBlock makes (or adopts) the changes in their code, otherwise one would have to make these modifications after each update of this library.
The embedded firmware has this issue, but is less relevant since people are not likely to update this firmware when a new version is released. The major issue here is how to upgrade (program) this controller without special tools.
My intention was to use the encodermotordriver with micros beyond the arduino. For my application it is mandatory I can read the encoders while the motors are running. Other features like the PID controller are less important. And since the i2c protocol used by makeblock has a lot of overhead (and hence, requires relatively long i2c bus time) and it’s implementation is quite complicated (partly due support for the serial setup tool, but also for reasons I can’t comprehend).
This provides me with a dillema: create new, simpler firmware with less features that matches my requirements or spend a lot more time to extend the makeblock software to maintain compatibility, knowing this will have limited benefits for current users and only have benefits for future users if makeblock adopts the changes?
I’m afraid it will probably be the first option, and only then when I reliable read the position when the motors are running.
Joep