USB is both the simplest and most complicated interface to use. It is basic to plug in and allow the computer deal with. It is intricate to create and also run a microcontroller with it.
— Links–
My Website: https://sinelab.net
Schematic: https://sinelab.net/pdf/usb_test.pdf
Code: https://sinelab.net/code/usbify.zip
ASF-USB: https://asf.microchip.com/docs/latest/asf_usb.html
LUFA: http://www.fourwalledcubicle.com/LUFA.php
USB Datasheet: https://sinelab.net/pdf/usb-20-specification.pdf
ATmega16u2 Datasheet: https://sinelab.net/pdf/ATmega16u2.pdf
—