Virtual Serial Port Mico (Lenardo)-ATmega32U4

HI guys ,

I am us After long research I found out that the Micro Arduino board (Or lenardo) uses A virtual Com Port as it says in the arduinoWebsite.

However, because the serial port is virtual, it disappears when the board resets, the Arduino software uses a different strategy for timing the upload than with the Uno and other boards. In particular, after initiating the auto-reset of the Leonardo, Leonardo ETH or Micro (using the serial port selected in the Tools > Serial Port menu), the Arduino software waits for a new virtual (CDC) serial / COM port to appear - one that it assumes represents the bootloader. It then performs the upload on this newly-appeared port.

Since the Micro is a microcontroller board based on the ATmega32U4 ,Then I went and looked up the datasheet and I found that the ATmega32u4 has Six Programmable Endpoints with IN or Out Directions and with Bulk, Interrupt or Isochronous Transfers

and from the data sheet looks like it can be configure to be just like a regular USB ,where you can communicate with the endpoints and read dataout and data in.MY question now

How can I configure my Arduino board as A usb device not as a virtual serial port ?

When you create a Keyboard or Mouse, they will be added to USB serial port.
https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

This will keep you busy for a while: GitHub - NicoHood/HID: Bring enhanced HID functions to your Arduino!.

There was a discussion in the past about the USB CDC serial port and how to get rid of it. I don’t know the current status.
You can remove the bootloader by uploading the sketch via a programmer. I use USBasp, but others use a Arduino Uno as ISP.
Then there is the Arduino environment with a serial port automatically added to your project, even when the ‘Serial’ or ‘SerialUSB’ was not used. I don’t know if there is a solution for that at the moment. In the past the solution was to use a Teensy board.