Проект на Arduino не работает? Порядок диагностики за 10 минут
Проект на Arduino не работает? Проверь 6 уровней снаружи внутрь: питание, загрузка, подключение, детали, код, датчик. Таблица-алгоритм, тестовый скетч и чек-лист из 8 пунктов.
Если проект на Arduino не работает, не ищи неисправность, выдёргивая провода наугад. Иди снаружи внутрь: сначала питание (включается ли плата?), затем загрузка (дошёл ли код до платы на самом деле?), затем подключение (общая ли GND, на нужном ли пине каждый провод?), затем ориентация и номинал деталей (не перевёрнут ли светодиод, тот ли резистор?), затем код (номера пинов и логика) и, наконец, датчик и окружение (свет, расстояние, напряжение питания). Делай по одному тесту на уровень и меняй только одну вещь за раз. В таком порядке большинство неисправностей находится за 10 минут, потому что самые частые ошибки сидят во внешних уровнях, а их проверить дешевле всего.
Здесь нет списка отдельных сообщений об ошибках — здесь метод диагностики. Сначала два правила метода, затем таблица-алгоритм, где для каждого уровня указаны признак, тест на 1 минуту и вероятная причина. Дальше — короткий тестовый скетч, который с помощью Blink и монитора порта делит схему на части, 4 проверки мультиметром (плюс альтернативы со светодиодом и монитором порта, если мультиметра нет), пошаговая диагностика неисправности в бесплатном проекте BlueGrays, таблица-шпаргалка по признакам и чек-лист диагностики из 8 пунктов для класса.

Два правила диагностики: снаружи внутрь и одна переменная за раз
Логика «снаружи внутрь» проста: внутренние уровни зависят от внешних. Если на плату не приходит питание, неважно, правильный ли код; если код так и не попал в плату, исправление проводов ничего не изменит. К тому же внешние уровни проверяются быстрее всего: взглянуть на светодиод питания — 5 секунд, прочитать сообщение о загрузке — 10, а поиск логической ошибки в коде может занять минуты. Второе правило — правило одной переменной. Если разом поменять провод, резистор и порог в коде, то даже если проект заработает, будет непонятно, что именно помогло; а если не заработает, можно добавить новую неисправность. Сделай одно изменение, проверь, запиши результат и только потом переходи к следующему.
- Опиши признак одним предложением: «Когда я закрываю LDR рукой, светодиод должен включаться, но он не включается никогда». «Не работает» — это не признак; когда ожидаемое и фактическое записаны по отдельности, нужный уровень для проверки часто становится очевиден.
- Отключай USB при сборке: если плата остаётся под питанием, пока меняются соединения, неверное касание может вызвать короткое замыкание. Внеси изменение, проверь его глазами, затем подключи снова.
- Подставь заведомо исправную деталь: заменить подозрительный светодиод, провод или датчик на точно рабочий — самый сильный тест, который можно сделать без прибора.
- Записывай: короткие заметки вроде «провод с 7 на 8 перенесён, без изменений» не дают повторять один и тот же тест, а если придётся спросить на форуме или у преподавателя, они станут готовым кратким описанием.
- Упрощай: если проект большой, убирай модули по одному. Сначала только плата, затем плата плюс выходная часть, затем входная часть. То, на какой части всё ломается, и показывает, где неисправность.
Таблица-алгоритм диагностики за 10 минут
Читай таблицу ниже сверху вниз и не переходи к следующему уровню, пока текущий тест не пройден. Каждый тест занимает около минуты, так что все шесть уровней проходятся за 6–10 минут. Для большинства тестов хватает глаз, светодиодов на плате и монитора порта Arduino IDE; мультиметр ускоряет дело, но не обязателен. В столбце «Вероятная причина» перечислены места, куда стоит смотреть в первую очередь, если тест не пройден, — примерно в порядке того, как часто они встречаются.
| Уровень | Признак | Тест на 1 минуту | Вероятная причина |
|---|---|---|---|
| 1. Питание | Ничего не происходит, светодиоды на плате не горят или плата греется | Горит ли светодиод ON? Отключи USB и потрогай детали: что-то тёплое? | Кабель USB только для зарядки, разболтанный порт, замыкание между 5V и GND, модуль подключён наоборот |
| 2. Загрузка | Код изменён, а плата ведёт себя по-старому | Сообщила ли IDE, что загрузка завершена, или есть строка с ошибкой? Правильно ли выбраны плата и порт в меню «Инструменты»? | Не та плата или порт, ошибка компиляции, нет драйвера, порт занят монитором порта |
| 3. Подключение | Деталь вообще не реагирует или работает через раз | Увеличь схему и пересчитай каждый провод с обоих концов; общая ли GND с платой? | Сдвиг строки на макетной плате, разделённая шина питания, перепутаны пины D и A, оборванная перемычка |
| 4. Ориентация и номинал деталей | Светодиод не горит или горит очень тускло, кнопка всегда читается как нажатая | Идёт ли длинная ножка светодиода к пину? Что говорят полосы резистора? Не повёрнута ли кнопка на 90 градусов? | Перевёрнутый светодиод, 10 kΩ вместо 220 Ω, LDR и резистор поменяны местами, порядок VCC и GND на модуле |
| 5. Код | Плата работает, но ведёт себя неправильно | Сверь каждый номер пина в коде со схемой; выводи контрольные точки в монитор порта | Неверный номер пина, нет pinMode, = перепутан с ==, неподходящий порог или задержка |
| 6. Датчик и окружение | Значения не меняются, не имеют смысла или скачут | Смотри значение датчика в мониторе порта и меняй условия (выключи свет, поднеси руку ближе) | Внешнее освещение, датчик вне диапазона, время прогрева, несоответствие 3,3 V и 5 V, длинные провода и помехи |
Уровни 1 и 2: питание и загрузка
На Arduino Uno первую подсказку по этим двум уровням дают два светодиода. Светодиод ON показывает, что на плату подано питание; если он не горит, сначала замени кабель USB, потому что некоторые кабели только заряжают и не передают данные. Если ON горит, но при подключении пропадает звук USB на компьютере или светодиод мерцает, в схеме может быть замыкание: отключи USB, проследи линии 5V и GND и поищи модуль, вставленный наоборот, или провод, перемыкающий две шины. Нагревающаяся деталь — всегда серьёзный признак; не подавай питание на плату снова, пока её не уберёшь. Если в проекте есть мотор, сервопривод или реле, USB может не дать достаточного тока; тогда признак обычно не «ничего не работает», а случайные перезагрузки или дрожание. Варианты питания от батарей и адаптера — в статье питание Arduino от батарей.
На уровне загрузки нужно ответить на один вопрос: тот ли код на плате, что виден на экране? Когда загрузка завершается, Arduino IDE сообщает об этом в области вывода внизу; если там красные строки, код до платы не дошёл и она продолжает выполнять старую программу. Это коварно: кажется, что исправление просто не помогло. Об ошибках avrdude, порта и драйвера по каждому сообщению рассказывает статья код не загружается в Arduino, а если всё застревает на компиляции, смотри ошибки компиляции. Есть и простой проверочный тест: поменяй в коде задержку со 100 на 1000 и загрузи. Если ритм светодиода не изменился, проблема на уровне загрузки. Некоторым платам ESP32 нужно удерживать кнопку BOOT во время загрузки; на Raspberry Pi Pico проверь, что в правом нижнем углу Thonny выбран интерпретатор MicroPython.
Уровень 3: подключение, GND и пины
Плата под питанием, код загружен — очередь проводов. Две самые частые ошибки — забытая общая GND и неверно понятая макетная плата. Даже если у датчика или модуля своё питание, его GND должна быть соединена с GND Arduino, иначе у сигнального напряжения нет опорной точки. На макетной плате центральная канавка разделяет две половины, а на длинных макетных платах шины питания по краям могут быть разделены посередине; подать 5V на одну половину шины и считать, что это питает деталь на другой половине, — очень частая ошибка. Лучший метод на этом уровне — сверка со схемой один к одному: пересчитай каждый провод, оба конца, и покажи пальцем его пару на схеме. Цифровой 2, перепутанный с аналоговым A2, 5V вместо VIN или провод на одну строку в стороне сразу бросятся в глаза. Если символы на схеме незнакомы, статья как читать электрическую схему проведёт через перенос схемы на макетную плату.
Уровень 4: ориентация и номинал деталей
Если подключение правильное, а деталь всё равно не отвечает, посмотри на саму деталь. Длинная ножка светодиода (анод) должна идти через резистор к пину, а короткая (катод) — к GND; перевёрнутый светодиод обычно не повреждается, он просто не светится. Чаще всего путают резисторы: у 220 Ω полосы красная-красная-коричневая, у 10 kΩ — коричневая-чёрная-оранжевая. Поставь 10 kΩ рядом со светодиодом — и он засветится так слабо, что это легко не заметить; поставь 220 Ω рядом с LDR или кнопкой — и показания потеряют смысл. Полосы можно расшифровать в утилите цветового кода резисторов, а нужный номинал для светодиода подобрать в калькуляторе резистора для светодиода. Четырёхногая тактовая кнопка, повёрнутая на 90 градусов, будет читаться как всегда нажатая или никогда не нажатая. На модулях порядок VCC, GND и сигнала зависит от производителя, поэтому читай надписи пинов на самой плате, а не на картинке из интернета. У трёхвыводных деталей вроде транзисторов и стабилизаторов напряжения порядок выводов тоже зависит от модели.
Уровень 5: код (номера пинов и логика)
Если железо в порядке, проверь, говорит ли код то же самое, что схема. Первая проверка — номера пинов: если светодиод физически на 8, а в коде digitalWrite(9, HIGH), всё выглядит идеально, и ничего не происходит. Вторая проверка — pinMode: если в setup() нет pinMode(pin, OUTPUT), digitalWrite(pin, HIGH) не делает пин выходом, а только включает встроенный подтягивающий резистор, и светодиод светится очень тускло. Помимо резистора, это самая частая причина «тусклого светодиода». Третья проверка — логика: запись if (value = 100) ничего не сравнивает, а присваивает переменной 100, и условие всегда истинно; правильная форма — ==. К этому уровню относятся и пороги с задержками: если порог не подходит к окружению, ничего не срабатывает даже при идеально рабочем датчике. В проектах с библиотеками проверь ещё, что установлена нужная библиотека; подробности — в статье установка библиотек Arduino.
Уровень 6: датчик и окружение
Последний уровень — внешние условия, которые портят результат даже при правильных схеме и коде. Значение LDR зависит от освещения в комнате; порог, который работает днём у окна, вечером под лампой может не сработать. HC-SR04 не получает эха от мягких поверхностей вроде ткани и не меряет ближе 2 см. Газовым датчикам серии MQ перед измерением нужно несколько минут на прогрев. DHT11 возвращает ошибки, если опрашивать его чаще раза в секунду. Пины ESP32 и Raspberry Pi Pico работают на 3,3 V; прямое подключение датчика с выходом 5 V может дать неверные показания и повредить пин. Длинные провода, помехи от моторов и «висящие» входы тоже заставляют значения скакать. Лучший инструмент на этом уровне — монитор порта: смотри «сырое» значение датчика и намеренно меняй условия. Если I2C-дисплей или датчик вообще не отвечает, скетч-сканер из статьи что такое I2C покажет его адрес.
Разделяй и властвуй: проверь плату через Blink, а шаги — монитором порта
Быстрее всего уровни проходятся, если разделить схему и код на части. Первая часть — сама плата: ничего не подключая, загрузи код, который мигает встроенным светодиодом L. Если L мигает, питание, загрузка и плата в порядке, и дальше проблему нужно искать за пределами платы. Вторая часть — выход: в том же коде помигай внешним светодиодом. Третья часть — вход: выведи значение датчика в монитор порта. Скетч ниже делает все три шага и на каждом выводит в монитор порта пронумерованную контрольную точку. Подключи внешний светодиод к пину 9 через резистор 220 Ω, а сигнал проверяемого аналогового датчика — к A0, и выставь в мониторе порта скорость 9600 бод.
1const int LED_PIN = 9; // Harici LED pini / External LED pin
2const int SENSOR_PIN = A0; // Analog sensör pini / Analog sensor pin
3
4void setup() {
5 Serial.begin(9600); // Seri monitör de 9600 olmalı / Serial Monitor must be 9600 too
6 pinMode(LED_BUILTIN, OUTPUT); // Karttaki L ışığı / On-board L LED
7 pinMode(LED_PIN, OUTPUT); // Harici LED çıkış / External LED as output
8 Serial.println("1) setup bitti"); // Kontrol noktası 1 / Checkpoint 1
9}
10
11void loop() {
12 digitalWrite(LED_BUILTIN, HIGH); // Kart canlı mı? / Is the board alive?
13 digitalWrite(LED_PIN, HIGH); // Harici LED açık / External LED on
14 Serial.println("2) LED acik"); // Kontrol noktası 2 / Checkpoint 2
15 delay(500);
16
17 digitalWrite(LED_BUILTIN, LOW);
18 digitalWrite(LED_PIN, LOW); // Harici LED kapalı / External LED off
19 Serial.println("3) LED kapali"); // Kontrol noktası 3 / Checkpoint 3
20 delay(500);
21
22 int value = analogRead(SENSOR_PIN); // 0-1023 arası okuma / Reading from 0 to 1023
23 Serial.print("4) A0 = ");
24 Serial.println(value); // Sensör değeri / Sensor value
25}| Что видно в мониторе порта и на плате | Что это значит | Какой уровень проверить |
|---|---|---|
| Монитор порта пуст, L не мигает | Код не выполняется или так и не попал в плату | 1. Питание, 2. Загрузка |
| Бегут мусорные символы | Скорость монитора порта не совпадает с Serial.begin(9600) | 5. Код (настройка скорости) |
| Время от времени снова появляется «1) setup bitti» (по-турецки «setup завершён») | Плата сама перезагружается, обычно из-за нехватки питания | 1. Питание |
| 2 и 3 чередуются, L мигает, а внешний светодиод не горит | Код и плата в порядке; разорван путь внешнего светодиода | 3. Подключение, 4. Ориентация и номинал деталей |
| A0 всё время около 0 или около 1023 | Сигнальная линия идёт на GND или 5V, на датчик не подано питание или нет резистора делителя | 3. Подключение, 4. Номинал деталей |
| A0 случайно скачет, когда ничего не подключено | Пин «висит в воздухе»; это нормально и должно прекратиться после подключения датчика | 3. Подключение |
Настоящая сила этого скетча — в контрольных точках. Используй тот же метод в своём проекте: добавь короткий Serial.println() в конец setup() и после каждого важного шага в loop(), например «кнопка нажата» или «порог пройден». Последнее сообщение, появившееся в мониторе порта, показывает, где застряла программа. Чтобы понять, почему условие никогда не срабатывает, выведи сравниваемое значение прямо перед условием; если «value < 50» никогда не выполняется, тут же станет видно, что значение никогда не опускается ниже 50. В больших проектах логика та же: временно закомментируй часть кода и проверяй куски по одному. О настройках монитора порта — скорости, конце строки и плоттере — читай в статье как пользоваться монитором порта Arduino.
4 проверки мультиметром (или светодиодом и монитором порта без него)
Мультиметр превращает диагностику из угадывания в измерение, и всего четыре измерения покрывают большинство неисправностей Arduino. Перед измерением выставь нужный режим: DC V для напряжения, прозвонку (со звуком) для проверки проводов и строк, Ω для сопротивления. Прозвонку и измерение сопротивления делай только при отключённом USB. Если мультиметра нет, способы из последнего столбца дают более грубый, но достаточный ответ на тот же вопрос. Диапазоны прибора и то, в какие гнёзда вставлять щупы, с картинками объясняет статья как пользоваться мультиметром.
| Проверка | Режим прибора и щупы | Ожидаемо | Без мультиметра |
|---|---|---|---|
| Напряжение питания | DC V; чёрный щуп на GND, красный на пин 5V (плата подключена к USB) | Примерно 4,7–5,1 V; на пине 3.3V около 3,3 V | Посмотри на светодиод ON и загрузи Blink; если L мигает ровно, питание в порядке |
| Провод и строка макетной платы | Режим прозвонки, USB отключён; коснись обоих концов провода или двух отверстий одной строки | Звуковой сигнал; нет сигнала — провод оборван или это другая строка | Замени подозрительный провод на заведомо исправный; подключи через этот провод светодиод с резистором 220 Ω между 5V и GND |
| Номинал резистора | Диапазон Ω; вынь резистор из схемы и коснись обеих ножек | Примерно 209–231 Ω для 220 Ω (допуск 5 процентов) | Прочитай цветные полосы и проверь в утилите цветового кода |
| Напряжение сигнала | DC V; чёрный щуп на GND, красный на выходной пин или сигнальную линию датчика | Около 5 V при HIGH на выходе, 0 V при LOW; в делителе с LDR — значение, зависящее от света | Смотри значение analogRead в мониторе порта (5 V — примерно 1023, 0 V — примерно 0); подключи светодиод к выходному пину |
Разбор примера: в проекте «Ночник на LDR» не включается светодиод
Опробуем метод на бесплатном проекте BlueGrays: Ночник на LDR. В схеме один конец LDR идёт на 5V, а другой на A0; между A0 и GND стоит резистор 10 kΩ, и вместе они образуют делитель напряжения. Светодиод подключён к пину 13 через резистор 330 Ω. Код читает A0 и, если значение ниже 50, считает, что в комнате темно, и включает светодиод. Признак: «Закрываю LDR рукой, а светодиод так и не включается». Вместо того чтобы переставлять провода наугад, пройдём уровни по порядку.

- Питание: светодиод ON горит, ничего не греется. Идём дальше.
- Загрузка: загрузка прошла без ошибок. Для уверенности временно замени в коде 50 на 2000 и загрузи; analogRead возвращает не больше 1023, поэтому условие всегда истинно и светодиод должен гореть постоянно.
- Подключение и светодиод L: пин 13 подключён ещё и к встроенному светодиоду L. Если с порогом 2000 L загорается, а внешний светодиод нет, код выполняется, и проблема на пути светодиода. Идёт ли длинная ножка светодиода к 13 через 330 Ω, а короткая — к GND?
- Ориентация и номинал деталей: светодиод не перевёрнут, но если рядом с ним стоит 10 kΩ вместо 330 Ω, он светится слишком слабо, чтобы это заметить. Различай эти два резистора по цветам.
- Код и датчик: если с порогом 2000 внешний светодиод загорается, верни 50. Теперь, чтобы увидеть реальные значения, загрузи в ту же схему код проекта Измерение освещённости с LDR: в нём то же подключение LDR, и он каждые полсекунды выводит A0 в монитор порта.
- Прочитай значения: допустим, без руки видно около 600, а если закрыть рукой — около 120. Значение никогда не опускается ниже 50, поэтому светодиод и не включается. Вернись к коду ночника и подними порог куда-нибудь в диапазон от 200 до 300.
- Заметь обратное поведение: если при закрывании значение растёт, а не падает, LDR и резистор 10 kΩ поменялись местами. Если значение случайно скачет, пока рука неподвижна, провод A0 не попал в строку, где соединяются LDR и резистор.
В этом примере неисправность нашли не новые знания, а порядок: сначала мы доказали, что сам светодиод может гореть, затем посмотрели, что на самом деле читает датчик. В приложении в разделе Если не получается на вкладке Разбор кода этого проекта уже есть пять таких признаков в виде пар «признак — решение»: внешний светодиод не загорается в темноте, светодиод горит на свету и гаснет в темноте, не загорается даже под рукой, горит постоянно или мерцает, а также ошибка загрузки. Раздел проекта Если не работает даёт общий чек-лист из 10 шагов, который начинается с питания и проходит через загрузку, номера пинов, макетную плату, перемычки, GND, светодиод и резистор. Как можно заметить, этот порядок почти совпадает с уровнями из начала статьи.
Помощь в приложении: где искать, если проект не работает
- Если не работает: упорядоченный чек-лист на странице проекта, который начинается со слов «Если проект не работает, проверь шаги ниже». Он есть более чем в 170 проектах и открывается с Premium; в бесплатных проектах этот раздел тоже доступен с Premium. Если совсем непонятно, что сломалось, это то место, которое стоит пройти от начала до конца.
- Разбор кода › Если не получается: пары «признак — решение», свои для кода и схемы конкретного проекта. В бесплатных проектах открыто всем, в проектах Premium — с Premium. Если признак удаётся описать одним предложением, загляни сюда первым делом. Весь раздел описан в статье Разбор кода.
- Вернись к шагам «Собираем вместе»: в пошаговом режиме вернись к шагу 2. Собери схему и собери схему с нуля при отключённом кабеле USB; на шаге 3. Загрузи код ещё раз проверь плату и порт в меню «Инструменты» Arduino IDE. Режим запоминает, на каком шаге работа прервалась. Как он работает, рассказано в статье твой первый проект на Arduino.
- Увеличь схему подключения: разведи пальцы, чтобы увеличить Схему, и сверяй своё подключение соединение за соединением; при желании сохрани её кнопкой Сохранить в галерею и отмечай проверенные провода. Так ловится большинство неисправностей 3-го уровня.
- Задай правильный вопрос на форуме: если всё это испробовано, а проект так и не работает, создай тему в категории Вопрос в разделе Учёба › Форум. Укажи плату, полный код, соединения, ожидаемое и фактическое поведение и то, какие уровни уже проверены, и добавь чёткое фото схемы. Как это написать, рассказано в статье как задать вопрос на форуме.
Шпаргалка по признакам
| Признак | Какой уровень проверить первым | Первый тест | Статья по теме |
|---|---|---|---|
| Ничего не происходит, светодиод ON тоже не горит | 1. Питание | Попробуй другой кабель USB и порт; поищи замыкание между 5V и GND | Питание Arduino от батарей |
| Код не загружается, ошибка avrdude или порта | 2. Загрузка | Плата и порт в меню «Инструменты»; кабель с передачей данных | Код не загружается в Arduino |
| Красные строки ошибок при компиляции | 5. Код | Прочитай первую строку ошибки и перейди к строке с этим номером | Ошибки компиляции |
| Светодиод горит, но очень тускло | 4. Номинал деталей, 5. Код | Цвета резистора; есть ли pinMode(…, OUTPUT) в setup()? | Что такое светодиод |
| Датчик всегда 0 или всегда 1023 | 3. Подключение | VCC и GND датчика, строка сигнального провода, резистор делителя | Делитель напряжения |
| Кнопка будто нажимается сама | 3. Подключение | Есть ли стягивающий резистор или используется INPUT_PULLUP? | Как подключить кнопку |
| Сервопривод дрожит | 1. Питание | Питай сервопривод от отдельного источника 5 V и объедини GND | Что такое сервопривод |
| Плата случайно перезагружается | 1. Питание | Убери мотор или реле и проверь; повторяется ли сообщение setup в мониторе порта? | Arduino постоянно перезагружается, просадка питания ESP32 (brownout) |
| Мусорные символы в мониторе порта | 5. Код | Выставь в мониторе порта ту же скорость, что в Serial.begin() | Как пользоваться монитором порта |
Для преподавателей: чек-лист диагностики из 8 пунктов
Допустим, в классе 24 ученика, 8 групп одновременно собирают схемы, и за первые 15 минут шесть групп поднимают руки со словами «не работает». Положи чек-лист ниже на стол каждой группе и с самого начала введи правило: прежде чем поднимать руку, пройти карточку сверху вниз и записать на обороте, на каком пункте всё застряло и что было изменено. Это освобождает твоё время и формирует у учеников привычку решать проблемы; а записи диагностики — ещё и свидетельство процесса, которое можно использовать при оценивании. Об организации групп в большом классе читай в статье урок Arduino в большом классе, а об оценке процесса — в статье критерии оценивания.
- Признак: что ожидалось и что происходит? Записать одним предложением.
- Питание: горит ли светодиод ON? Отключить USB: какая-нибудь деталь тёплая?
- Загрузка: завершилась ли загрузка без ошибок? Правильно ли выбраны плата и порт в меню «Инструменты»?
- Плата: мигает ли встроенный светодиод L после загрузки Blink?
- Подключение: увеличить схему и пересчитать каждый провод с обоих концов. Общая ли GND, на нужном ли пине и в нужной ли строке провода?
- Деталь: идёт ли длинная ножка светодиода к пину? Совпадают ли полосы резистора с номиналом из списка деталей? Правильно ли подключены VCC и GND на модуле?
- Код: совпадают ли номера пинов в коде со схемой? Какая контрольная точка появляется последней при выводе в монитор порта?
- Датчик и следующий шаг: имеет ли смысл значение датчика в мониторе порта и меняется ли оно при изменении условий? Если проблема не решена, заглянуть в «Если не получается» и «Если не работает», затем позвать преподавателя. Менять по одной вещи за раз и всё записывать.
Диагностика — это навык, и с каждой неисправностью она идёт быстрее: поиск, который в первом проекте занимает 20 минут, к пятому сокращается до 3 минут, потому что уровень начинаешь угадывать уже по признаку. В следующий раз, когда проект не заработает, открой этот порядок, прежде чем выдёргивать провода, и иди сверху вниз. Небольшие проекты вроде ночника из этой статьи идеально подходят для тренировки; в приложении BlueGrays у каждого из 60 бесплатных проектов есть схема, код и раздел «Разбор кода», так что при следующей неисправности уже будет понятно, куда смотреть.
Частые вопросы
Почему мой проект на Arduino не работает?
Самые частые причины по порядку: проблемы с питанием, код, который так и не попал в плату, отсутствие общей GND или провод на одну строку в стороне на макетной плате, перевёрнутый светодиод или неверный номинал резистора и неправильный номер пина в коде. Проверяй их в этом порядке, меняя по одной вещи за раз, и обычно неисправность находится за 10 минут.
Как понять, что Arduino сломалась?
Отключи всё, подключи плату одним кабелем USB и загрузи пример Blink. Если светодиод ON горит, загрузка завершается без ошибок и светодиод L мигает, плата, скорее всего, исправна, а проблема в схеме или в остальном коде. Если плата вообще не появляется как порт, сначала попробуй другой кабель с передачей данных и другой порт USB.
Почему код загружается в Arduino, но не работает?
Сначала проверь, что загрузка действительно завершилась; если есть строка с ошибкой, плата выполняет старый код. Если с загрузкой всё в порядке, сверь номера пинов в коде со схемой, проверь, что в setup() есть строки pinMode, и добавь Serial.println() в конец setup(), чтобы увидеть в мониторе порта, доходит ли программа до этого места.
Почему в мониторе порта мусорные символы?
Скорость монитора порта не совпадает со значением Serial.begin() в коде. Если в коде 9600, выставь в правом нижнем углу монитора порта тоже 9600. ESP32 отправляет загрузочные сообщения на скорости 115200 бод, поэтому несколько искажённых строк на 9600 — это нормально.
Как проверить схему Arduino без мультиметра?
Светодиоды ON и L на плате говорят о питании и самой плате, а значения analogRead, выведенные в монитор порта, показывают сигнал датчика. Замена подозрительного провода или светодиода на заведомо исправную деталь заменяет прозвонку. Номинал резистора можно прочитать по цветным полосам и проверить в утилите цветового кода.
Почему аналоговый датчик Arduino всегда показывает 0 или 1023?
Всегда 0 обычно значит, что сигнальная линия идёт на GND или на датчик не подано питание; всегда 1023 — что сигнальная линия подключена прямо к 5V или нет резистора делителя. Проверь VCC и GND датчика, то, что сигнальный провод стоит в нужной строке, а для деталей вроде LDR — что резистор 10 kΩ на месте.
Что собрать после прочтения
Все проекты
Ночник на LDR
Маленький ночник, который сам включается, когда темнеет, и гаснет, когда наступает утро. Датчик освещённости измеряет, насколько светло в комнате, и Arduino включает светодиод, когда достаточно темно,

Измерение освещённости с LDR
Хочешь увидеть яркость своей комнаты в виде числа? LDR — маленькая деталь, реагирующая на свет, — измеряет освещённость вокруг, а Arduino каждые полсекунды выводит значение на экран компьютера. Закрой

Мигающий светодиод
Самое первое «привет» в электронике: включение и выключение одного светодиода. Arduino включает и выключает светодиод через короткие промежутки, поэтому свет быстро мигает. Ты самым простым способом в

Управление светодиодом кнопкой (удержание)
Как дверной звонок: свет горит, пока ты нажимаешь, и гаснет, когда отпускаешь. Arduino всё время слушает кнопку; пока она нажата, светодиод горит, а как только ты убираешь палец, он гаснет. Эта просте

Включение и выключение светодиода кнопкой (вкл/выкл)
Нажми кнопку один раз — свет загорится, нажми ещё раз — погаснет, совсем как выключатель в твоей комнате. Arduino замечает каждое нажатие и переводит светодиод в противоположное состояние, выжидая кор

Измерение расстояния HC-SR04 (вывод в порт)
Датчик HC-SR04 работает совсем как летучая мышь, которая находит дорогу в темноте: он посылает звук, которого ты не слышишь, слушает эхо и измеряет, насколько далеко предмет перед ним. Arduino каждые

Температура и влажность с DHT11
Насколько тепло в твоей комнате и влажный ли воздух или сухой? Датчик DHT11 измеряет температуру и влажность, а Arduino выводит значения на двухстрочный LCD-экран и обновляет их каждые пару секунд. Ес

Raspberry Pi Pico: управление внешним светодиодом (макетная плата)
Следующий шаг после встроенного светодиода Pico: подключить внешний светодиод на макетной плате и управлять им через пин GP14. В этом проекте ты узнаешь, как использовать любой пин GPIO общего назначения у Pico как выход, какая полярность у светодиода (длинная ножка = анод/+, короткая = катод/–) и зачем нужен токоограничивающий резистор (220Ω). Без резистора через светодиод пойдёт слишком большой ток, и он может сгореть. Схема очень простая: Pico GP14 → резистор 220Ω → светодиод → GND.
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

