Last year, I did a project with the Arduini Micro kit. This is an ATmega32U4 microcontroller.
With it, I built a USB input device, with knobs, to tune my noise fields for Ring Miner.
In that project, I was simultaneously writing USB HID data, reading turn knobs, and writing OLED displays. In order to avoid stalls I had to modify the standard lib so I could skip writing USB data if there was no space available in the buffer, which is what happens when the PC is not reading the USB HID device.
I have recently picked up the Arduino again. This time to see if I can steer LED bar graphs with it. I noticed that out of the box, Ubuntu's arduino IDE will not run. You need to patch a library before it will run.
I have been learning on how to drive LEDs with a constant current shift register. I think I will end up using the TLC5917IN chip. Unfortunately, it is only 8 bit, I would have preferred 10 bits, but it was available in-stock, and affordable.
The simplicity of micro controllers is refreshing, in this age of super complexity. Close to the metal, and straightforward.
When coding for micro controllers, use static PROGMEM const qualifier for your data that you want to reside in ROM, instead of RAM.