USB is both the simplest and most complex interface to use. It is simple to plug in and let the computer handle. It is complex to create and run a microcontroller with it.
— Links —
My Website: https://sinelab.net
USB Datasheet: https://sinelab.net/pdf/usb-20-specification.pdf
ATmega16u2 Datasheet: https://sinelab.net/pdf/ATmega16u2.pdf