Closed 91volt closed 2 years ago
Memory usage change @ ffd88d704b2ca93b44d5c2cd7b487c42236ffec1
Board | flash | % | RAM for global variables | % |
---|---|---|---|---|
arduino:mbed_nano:nanorp2040connect | 0 - 0 | 0.0 - 0.0 | 0 - 0 | 0.0 - 0.0 |
I updated the code with the Braccio.lvgl_lock/unlock statements and commented on it. The code is good, but it is slow to respond to the commands with the joystick. That is something that we don't see in the project 02 code.
With this new example, we will have two similar codes (Controlling_Manually_Braccio.ino
and 01_controlling_manually_Braccio.ino
). In this case, don't recommend making the codes identical because of the target audience of the content.
The code is good, but it is slow to respond to the commands with the joystick. That is something that we don't see in the project 02 code.
I couldn't test it with the braccio attached, tomorrow morning I'm going to investigate on it. It might be due to the delay inside the if statement of the loop.
_Is a scope creep of this PR - but - a refactoring in the library on how the lvgl driver functions are exposed would be helpful in order to allow to customize the KEY events paired with the physical buttons. This slowness would be surely overcome if all input buttons could be read as KEY_ENTER events in this sketch, making possible to use the LV_EVENT_PRESSING and LV_EVENTRELEASED inside the event handler when left,right,up,down joystick buttons are used. Discussion regarding this behavior of lvgl KEYs: lvgl forum link
After you test it, you could try to create multiple screens for each layout (shoulder, elbow, wrist, and gripper), or you can delete the button matrix object and recreate it again with the new design. I think one of these updates should fix the problem.
After you test it, you could try to create multiple screens for each layout (shoulder, elbow, wrist, and gripper), or you can delete the button matrix object and recreate it again with the new design. I think one of these updates should fix the problem.
Good input, I'll take it into considerations.
Hi @91volt @Esquirio :coffee: :wave:
I did a fair bit of rework on the example. Please test it and let me know what you think.
I'm experiencing a bit of jerkiness of the arm which is caused due to a) mechanical tolerance of the servo motors when holding zero position and b) our way of controlling the servo by providing target angles to be reached. If we provide a too small angle increment the servo does not move at all. If we provide a too big angle increment it moves in starts and stops (i.e. jerky movement). Feel free to fine-tune angle increments and run time.
CC @clodpheasant
This code is the most stable of all. I ran the code many times, and it worked most of the time correctly. Now, the response of the movements when we move the joystick is quick.
Once or twice, I had to restart the Arduino because the movement of the Elbow and the wrist didn't work well, but I couldn't figure out why it was necessary.
Enhanced version of the manually-controlling-braccio example:
Note: since the driver definition and hardware buttons mapping happens inside the library and that only the "KEY_ENTER" lvgl input triggers the LV_EVENT_PRESSED/PRESSING/RELEASED, is not possible to achieve a "push button" behavior without adding a routine in loop that check if Braccio.getKey() has changed to zero in order to remove the checked state. The definition of another input driver for this example where each input is identified as KEY_ENTER would make possible to exploit the states of lvgl with all the physical inputs.