Плата не прошивается: разбор по порядку
Симптомы разные, а причин немного. Идите по порядку: следующий шаг имеет смысл только тогда, когда предыдущий выполнен.
Порта нет в списке
Самая частая ситуация и самая простая. Значит компьютер вообще не видит плату — до загрузки скетча дело даже не доходит.
Не поставлен драйвер CH340
Причина номер один для всех недорогих плат. На оригинальных Arduino стоит фирменная микросхема USB, на клонах — CH340 или CH341, и Windows её не знает. Симптом: светодиод питания на плате горит, а в диспетчере устройств висит «неизвестное устройство». Ставится бесплатный драйвер по названию микросхемы, после чего плату надо переподключить.
Кабель только для зарядки
Обидная и очень частая причина. Часть USB-кабелей физически не содержит линий данных — в них только питание. Плата будет светиться, но связи не будет. Проверьте другим кабелем, желательно тем, которым подключается телефон и передаёт файлы.
Плата ESP без автосброса
У дешёвых плат ESP32 и ESP8266 бывает не разведена цепь автоматического сброса. Порт при этом виден, но загрузка не начинается. Решение: держать кнопку BOOT в момент, когда среда пишет «Connecting…», и отпустить, когда пойдут точки.
Порт есть, но загрузка обрывается
Тут сообщения бывают разные, но осмысленных причин по-прежнему несколько.
not in sync: resp=0x00
Классическая ошибка avrdude. Плата не отвечает загрузчику. Три типичные причины: выбрана не та плата в меню, занят вывод 0 или 1, либо у Nano стоит старый загрузчик. Последнее лечится переключением «Инструменты → Процессор → ATmega328P (Old Bootloader)».
Порт занят другой программой
Монитор порта, открытый в другом окне среды, или программа вроде плоттера держат порт и не отдают. Закройте всё лишнее. На Linux бывает, что порт занят службой ModemManager — она принимает плату за модем.
На выводах 0 и 1 что-то подключено
Это тот же последовательный порт, через который идёт прошивка. Bluetooth-модуль или второй Arduino, подключённые к ним, перебивают сигнал. Отключите на время загрузки — это не прихоть среды, а физика.
Нет прав доступа к порту
На Linux порт принадлежит группе dialout, и обычный пользователь в неё не входит. Ошибка выглядит как «Permission denied». Добавьте себя в группу и перезайдите в систему.
Скетч залился, но плата ведёт себя странно
Загрузка прошла, а устройство зависает, перезагружается или печатает мусор в монитор порта. Это уже не про загрузку — тут три обычных виновника.
Кончилась оперативная память
У UNO её всего два килобайта, и каждая строка в кавычках занимает место. Среда предупреждает об этом после компиляции, но предупреждение легко пропустить. Лечится макросом F() вокруг текста: Serial.println(F("текст")) — тогда строка остаётся во флеш-памяти и в ОЗУ не копируется.
Не хватает питания
Плата перезагружается по кругу, когда включается что-то потребляющее: мотор, лента светодиодов, радиомодуль. USB-порт компьютера отдаёт около 500 мА, и этого не хватает. Нужен отдельный источник, а земли соединить вместе.
В мониторе порта иероглифы
Скорость в мониторе не совпадает со скоростью в скетче. Посмотрите на число в Serial.begin(9600) и выставьте такое же в правом нижнем углу монитора.
Среда не запускается
Отдельная история, не связанная с платой. У версии 2.x чаще всего виноват испорченный профиль настроек: удалите папку .arduinoIDE в домашнем каталоге и запустите заново. Скетчи при этом не пострадают, они лежат отдельно, в Документы/Arduino.
Если не помогло — попробуйте версию 1.8. Она гораздо легче и запускается там, где новая падает: на старых машинах, слабых ноутбуках и в системах с агрессивным антивирусом.