Можно.Зайдите в Диспетчер Устройств.Даже можно самому назначить необходимый номер http://tinyurl.com/kcxx6qm
Ардуино не знает. Разве что только в нее передать по какому-нибудь каналу (по тому же последовательному порту). Программой на ПК узнать можно. Надо всего лишь перебрать последовательные порты и определить (например, по паре device id - vendor id), что за устройство соответствует последовательному порту. Если в наличии виндовс, для этого можно, например, пройтись по ветке реестра HKLM\SYSTEM\CurrentControlSet\ENUM\USB, вылавливая в названиях подветок (VID_XXXX&PID_XXXX*) знакомые device id - vendor id (например, для Arduino Micro это 8037 и 2341 соответственно). В подветке ищем Device Parameters (несколькими уровнями дальше вглубь). В нем будет искомый Portname
Это не программно. ТС, судя по всему, хочет, чтобы контроллер сам узнал номер порта. Это невозможно, разве что передать ему номер порта с ПК, как говорит geher.