Я писал скетч для инкубатора в вечерней кухне при одной люстре: среда стояла из коробки, светлая тема, шрифт по умолчанию. Буквы были мелкие, и я вчитывался, наклоняясь к экрану всё ниже. Через неделю нашёл ошибку, которую пропускал пять вечеров подряд: лишний ноль в пороге, pot > 1000 вместо pot > 100. Компилятору эта строка была безразлична — синтаксис честный, — а мой глаз её не ловил на том размере шрифта. Вечер отладки, испорченная партия яиц с тестовым обогревом и полчаса в настройках среды — вот цена того урока.
Настройки среды — не косметика. Шрифт определяет, сколько ошибок вы ловите глазами до компиляции, автосохранение — переживёт ли вечер внезапный сон ноутбука, а галочка проверки после загрузки — узнаете ли вы о битой записи во flash по понятному сообщению, а не по странной работе на даче через неделю. В этом уроке я пройду по Файл — Настройки как по своему профилю: что меняю сразу после установки, с какими числами, где у каждой настройки граница применимости и что дешевле выключить, когда скорость важнее страховки.
Шрифт, тема, масштаб: то, во что вы смотрите часами
Первое, что я меняю на любом новом компьютере, — размер шрифта редактора. По умолчанию он рассчитан на яркое помещение и хорошее зрение: на ноутбуке с масштабом интерфейса 100% я ставлю 16 и больше не трогаю. Сам шрифт оставляю моноширинным — в коде Arduino пропорциональный шрифт ломает выравнивание отступов, и глаз перестаёт считывать структуру вложенности: где кончился if, где начался цикл. Рядом лежат ещё две галочки, которые я сразу ставлю в удобное положение: номера строк — без них сообщение об ошибке с номером приходится считать абзацами, и перенос по словам для длинных строк протокола. Пара минут в настройках — и мой лишний ноль из первой истории ловится взглядом с дивана, а не с расстояния вытянутой руки.
Тема — вещь вкусовая, и притворяться иначе я не буду: в IDE 2 тёмная стоит по умолчанию, светлая и контрастная лежат рядом в том же выпадающем списке. Единственное, что вкусовщиной не является, — контраст букв и фона: при солнце из окна тёмная тема выцветает на матовом экране, и светлая честно выигрывает. Отдельно держите в голове масштаб интерфейса: на мониторе 4K без него среда превращается в надписи с другого конца зала, а на старом ноутбуке наоборот — 100% вместо автоматического масштаба спасает от гигантских панелей.
Язык интерфейса переключается там же, и это спорное удовольствие: переводы обновляются с задержкой от версии к версии, а половина инструкций в сети пишет про File — Examples и Preferences по-английски. Я оставляю английский, потому что гуглю сообщения среды дословно, вместе с кодом ошибки. Если русский привычнее — ставьте, ничего не сломается: названия настроек, о которых дальше, находятся по смыслу в обоих языках.
Автосохранение: страховка, у которой есть цена
Второй провал из моей истории: сорок минут правок ушли вместе с севшей батареей — я редактировал длинный скетч и не сохранял, потому что собирался «дописать и сохранить». С тех пор автосохранение включено всегда: среда хранит скетч на диске автоматически (по умолчанию — при компиляции и загрузке, а файлы редактора ещё и по таймеру). Тонкость, которую стоит знать: автосохранение проявляет себя не всегда мгновенно, и после правки одним движением стоит нажать Ctrl+S привычкой — на скорости оно ничего не стоит. Но у страховки есть обратная сторона, о которой молчат инструкции: автосохранение честно сохраняет и поломанные эксперименты. Я однажды сломал рабочую поливалку неудачным рефакторингом, закрыл среду — и последняя рабочая версия осталась только в моей памяти, чего память, к слову, не заслужила.
Проверка после загрузки — галочка, которую я не снимаю на учебных и выездных платах. После записи среда читает flash обратно и сверяет байт в байт: если провод хлюпал, клон с CH340 отмер посреди заливки или USB-хаб деградировал, вы увидите ошибку верификации, а не «загрузилось, но работает странно». Цена вопроса — секунды: скетч под потолок памяти Uno, 28 672 байта, при 115200 бодах едет в плату около двух с половиной секунд; проверка добавляет столько же сверху. Граница честности у этой галочки есть: она проверяет запись во flash, но не вашу логику — скетч с перепутанным пином пройдёт сверку байт в байт и ляжет в плату как родной. На дачной плате с длинным кабелем через хаб эти секунды — самая дешёвая страховка во всём проекте.
Выключаю проверку в одном случае: гоняю десятки мелких правок подряд при отладке, когда каждая секунда цикла «правка — загрузка — взгляд» складывается в минуты. Побочный эффект замечен и оплачен: если канал деградировал, без верификации вы узнаете об этом по загадочному поведению прошивки, а не по внятному сообщению. Моё правило: отладка на столе — можно без проверки; плата уезжает на объект — проверка возвращается. Полный список этапов, через которые проходит заливка, разобран в уроке про загрузку скетча.
| Настройка | Где искать | Моё значение | Когда менять |
|---|---|---|---|
| Размер шрифта редактора | Настройки, внешний вид | 16 | Меньше 14 — только на большом мониторе |
| Тема | Настройки, внешний вид | Тёмная | Солнце в экран днём — светлая |
| Автосохранение | Настройки, sketchbook | Включено | Причин выключать не вижу |
| Проверка после загрузки | Настройки, компиляция | Включена | Десятки правок подряд при отладке |
| Подробный вывод | Настройки, компиляция | Выключен, включаю при странных ошибках | Нужен сам avr-gcc и avrdude с флагами |
| Предупреждения компилятора | Настройки, компиляция | More вместо None | На All среды без ядра иногда ругаются лишним |
Подробный вывод компиляции и загрузки — две галочки, которые я держу выключенными, но точно знаю, где они. Включите — и вместо аккуратной полосы прогресса увидите настоящие команды сборки: avr-gcc с флагами, avrdude с параметрами порта и файлом прошивки. При странной ошибке компиляции это единственный способ понять, какой именно файл споткнулся, — тот случай, когда ошибка сидит не в вашем коде, а в чужой библиотеке, как мы разбирали в уроке про компиляцию и ошибки. Там же, рядом, живёт выпадающий список предупреждений компилятора: по умолчанию стоит None, я ставлю More — среда начинает подсказывать про неиспользованные переменные и подозрительные приведения типов до того, как они превратятся в баг. На All она доходит до замечаний, которых не стеснялся бы и учебный пример из комплекта, — поэтому More, а не максимум.
void setup() { Serial.begin(9600); pinMode(12, OUTPUT); digitalWrite(12, HIGH); int nazad = digitalRead(12); // прочитали то, что записали Serial.print("ver=1 ok="); Serial.println(nazad); // ok=1 значит: плата отвечает осмысленно} void loop() { delay(1000);}// Идея та же, что у верификации: записал — прочитал обратно — сверил. Только байтами.Профиль за пять минут
На новом компьютере мой порядок такой: поставить среду по шагам из урока про установку на Windows, открыть Файл — Настройки, выставить шрифт 16 и тему, включить автосохранение и проверку после загрузки, поднять предупреждения до More, глянуть путь sketchbook — там уже лежат ваши проекты и библиотеки, о чём рассказывает урок про структуру папок. Пять минут, и среда начинает работать за вас там, где раньше работала надежда. Профиль один и тот же на всех машинах — рабочий ноутбук, старый дачный комп, поезд: привычки мышки остаются там, куда вы их поставили. Скорость порта для монитора — отдельная привычка, её разбирает урок про первый запуск монитора.
- 1. Верификация после загрузки выдала ошибку. Что она вам сэкономила?
- 2. Шрифт редактора стоит оставить…
- 3. Что делает автосохранение, когда вы ломаете рабочий скетч неудачным рефакторингом?
- 4. Скетч 28 672 байта, скорость 115200 бод. Сколько примерно добавляет проверка после загрузки?
- 5. Что показывает подробный вывод компиляции?
- Шрифт 16 и моноширинный — первое, что я меняю: лишний ноль ловится взглядом, а не носом в экран.
- Тема — вкусовщина, контраст при солнце — нет: днём светлая честно лучше.
- Автосохранение спасает от севшей батареи, но сохраняет и поломанное: «Сохранить как» перед рискованной правкой.
- Проверка после загрузки — около 2,5 с на полный скетч Uno; страховка для кабелей, клонов и хабов, отладку она замедляет.
- Подробный вывод и предупреждения на More — способ увидеть ошибку до первого запуска на плате.
Частые вопросы по теме урока
- Верификация после загрузки выдала ошибку. Что она вам сэкономила?
- Ошибка верификации означает: flash прочитана обратно и не совпала с файлом. Причина — кабель, хаб, порт или клон платы, и искать надо там, а не в логике скетча. Поиск по железу: запись точно не доехала целой
- Шрифт редактора стоит оставить…
- Моноширинный шрифт держит выравнивание отступов — глаз считывает структуру кода. Пропорциональный рвёт колонки, и вложенный if сливается с соседним. Моноширинным: отступы и вложенность читаются глазами
- Что делает автосохранение, когда вы ломаете рабочий скетч неудачным рефакторингом?
- Автосохранение не различает удачные и неудачные правки. Единственный откат, на который можно рассчитывать, — копия, сделанная через «Сохранить как» до правок. Добросовестно сохраняет и поломанную версию: откат надо готовить заранее
- Скетч 28 672 байта, скорость 115200 бод. Сколько примерно добавляет проверка после загрузки?
- 28 672 байта при 115200 бодах — это около 2,5 секунды передачи в одну сторону; проверка читает столько же обратно. Секунды против вечера поиска битой заливки. Около 2,5 секунды
- Что показывает подробный вывод компиляции?
- Подробный вывод раскрывает, какие файлы и с какими флагами собираются и чем заливаются. При странных ошибках это способ увидеть виновника вне своего кода. Настоящие команды сборки: avr-gcc, avrdude, файлы и флаги