Начало работы с Arduino Leonardo, Leonardo ETH и Micro
Первые шаги по настройке Arduino Leonardo, Leonardo ETH и Micro
Примечание
Leonardo ETH — это снятый с производства продукт.
Платы Arduino Leonardo, Leonardo ETH и Micro используют ATmega32U4, предоставляющий больше функциональности по сравнению с Uno.
Leonardo, Leonardo ETH и Micro программируются с помощью Arduino Software (IDE) — нашей интегрированной среды разработки, общей для всех наших плат и работающей как онлайн, так и офлайн. Для получения дополнительной информации о начале работы с Arduino Software посетите страницу «Начало работы».
Использование Leonardo, Leonardo ETH и Micro в Arduino Web IDE
Все платы Arduino, включая эту, работают «из коробки» с Arduino Cloud Editor, вам нужно лишь установить Arduino Create Agent, чтобы начать работу.
Arduino Cloud Editor размещён онлайн, поэтому он всегда будет содержать последние функции и поддержку всех плат. Следуйте этому простому руководству, чтобы начать программировать в браузере и загружать скетчи на вашу плату.
Использование Leonardo, Leonardo ETH и Micro в Arduino Desktop IDE
Если вы хотите программировать Leonardo, Leonardo ETH и Micro в офлайн-режиме, вам необходимо установить Arduino Desktop IDE.
Установка драйверов для Leonardo, Leonardo ETH и Micro
Драйверы должны устанавливаться автоматически при подключении платы к ПК через USB-кабель, но в некоторых версиях операционной системы Windows (таких как Windows 7, Vista и 10) может случиться, что ваша плата не будет распознана и вы получите сообщение Unknown USB device. В этом случае необходимо установить их вручную, следуя руководству Ручная установка драйверов в Windows.
Откройте пример Blink
Теперь, когда вы настроили IDE, давайте убедимся, что ваш компьютер может связаться с платой. Пришло время убедиться, что вы можете загрузить программу. Для этого откройте пример мигания светодиодом: File > Examples > 1.Basics > Blink.
Выберите плату
Вам необходимо выбрать плату в меню Tools > Board:
Arduino Leonardo
Arduino Leonardo ETH
Arduino Micro
в зависимости от имеющейся у вас платы.
Выберите последовательный порт
Выберите серийное устройство платы в меню Tools > Serial Port.
Загрузите и запустите первый скетч
Нажмите кнопку Upload в верхнем левом углу для загрузки и запуска скетча на вашей плате:
После завершения процесса компиляции и загрузки вы должны увидеть сообщение Done Uploading, и встроенный светодиод платы должен начать мигать.
Учебные проекты
Теперь, когда вы настроили и запрограммировали свою плату Leonardo, Leonardo ETH или Micro, вы можете найти вдохновение на нашей платформе Project Hub.
Дополнительные примеры на следующих страницах библиотек помогут вам создать интересные проекты:
Важная информация
Хорошие практики программирования с Leonardo, Leonardo ETH и Micro
Предупреждение
Предупреждение об использовании библиотек USB Mouse и Keyboard: если библиотека Mouse или Keyboard постоянно работает, программирование платы будет затруднено. Такие функции, как Mouse.move() и Keyboard.print(), перемещают курсор или отправляют нажатия клавиш на подключённый компьютер и должны вызываться только тогда, когда вы готовы их обработать. Рекомендуется использовать систему управления для включения этой функциональности, например физический переключатель или реагирование только на конкретный ввод, который вы можете контролировать. При использовании библиотеки Mouse или Keyboard лучше сначала протестировать вывод с помощью Serial.print(). Таким образом, вы можете убедиться, какие значения передаются. Обратитесь к примерам Mouse и Keyboard для некоторых способов обработки этого.
Эффективное использование монитора последовательного порта: поскольку последовательный порт проходит только через один процессор, плата способна заполнять буфер последовательного порта компьютера быстрее, чем Uno или более ранние платы. Вы можете заметить, что если непрерывно отправлять данные по последовательному порту, например так:
void loop() {
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
}
Serial Monitor в IDE значительно замедляется, пытаясь не отставать. Если вы столкнулись с этим, добавьте небольшую задержку в ваш цикл, чтобы буфер последовательного порта компьютера не заполнялся так быстро. Даже задержка в одну миллисекунду поможет:
void loop() {
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
delay(1);
}
Последовательные приложения, использующие нативные библиотеки, отличные от библиотеки RXTX, читают буфер последовательного порта быстрее, поэтому вы можете не столкнуться с этой ошибкой вне Serial Monitor, Processing или других приложений на базе RXTX.
Отличия от Arduino Uno
В целом вы программируете и используете Leonardo, Leonardo ETH и Micro так же, как и другие платы Arduino. Однако есть несколько важных отличий.
Единый процессор для скетчей и USB-связи
Leonardo, Leonardo ETH и Micro отличаются от других плат Arduino тем, что используют один микроконтроллер как для выполнения ваших скетчей, так и для USB-связи с компьютером. Uno и другие платы используют отдельные микроконтроллеры для этих двух функций, что означает, что USB-подключение к компьютеру остаётся установленным независимо от состояния основного микроконтроллера. Объединяя эти две функции на одном процессоре, Leonardo обеспечивает большую гибкость в связи с компьютером. Это также помогает снизить стоимость платы за счёт отсутствия необходимости в дополнительном процессоре.
Переинициализация последовательного порта при сбросе. Поскольку у плат нет выделенного чипа для обработки последовательной связи, это означает, что последовательный порт является виртуальным — это программная процедура как в вашей операционной системе, так и на самой плате. Точно так же, как ваш компьютер создаёт экземпляр драйвера последовательного порта при подключении любого Arduino, Leonardo/Micro создаёт экземпляр последовательного порта при каждом запуске загрузчика. Плата является экземпляром драйвера USB Connected Device Class (CDC).
Это означает, что каждый раз, когда вы сбрасываете плату, USB-подключение последовательного порта будет разорвано и восстановлено. Плата исчезнет из списка последовательных портов, и список будет переинициализирован. Любая программа, имеющая открытое последовательное подключение к Leonardo, потеряет его. Это отличается от Arduino Uno, где вы можете сбросить основной процессор (ATmega328P) без закрытия USB-подключения (которое поддерживается вторичным процессором ATmega8U2 или ATmega16U2). Это различие влияет на установку драйверов, загрузку и связь; они обсуждаются ниже.
Нет сброса при открытии последовательного порта.
В отличие от Arduino Uno, Leonardo и Micro не перезапускают ваш скетч при открытии последовательного порта на компьютере. Это означает, что вы не увидите данные, уже отправленные платой на компьютер, включая, например, большинство данных, отправленных в функции setup().
Это изменение означает, что если вы используете операторы Serial print(), println() или write() в setup, они не появятся при открытии монитора последовательного порта. Чтобы обойти это, вы можете проверять, открыт ли последовательный порт, после вызова Serial.begin() следующим образом:
Serial.begin(9600);
// while the serial stream is not open, do nothing:
while (!Serial) ;
Эмуляция клавиатуры и мыши. Одно из преимуществ использования одного чипа для скетчей и USB — повышенная гибкость в связи с компьютером. В то время как плата отображается как виртуальный последовательный порт для вашей операционной системы (также называемый CDC) для программирования и связи (как с Arduino Uno), она также может работать как (HID) клавиатура или мышь. Смотрите раздел «Хорошие практики программирования» выше для предупреждения об использовании этой функциональности.
Разделение USB и последовательной связи. На Leonardo, Leonardo ETH и Micro основной класс Serial относится к виртуальному последовательному драйверу на плате для подключения к компьютеру через USB. Он не подключён к физическим пинам 0 и 1, как на Uno и более ранних платах. Для использования аппаратного последовательного порта (пины 0 и 1, RX и TX) используйте Serial1. (Дополнительную информацию смотрите на справочных страницах Serial.)
Различия в возможностях пинов. Leonardo, Leonardo ETH и Micro имеют некоторые различия в возможностях и назначении различных пинов (особенно для SPI и TWI). Подробности приведены на странице аппаратного обеспечения.
Загрузка кода на Leonardo, Leonardo ETH и Micro
В целом вы загружаете код на Leonardo или Micro так же, как и на Uno или другие платы Arduino. Нажмите кнопку загрузки в Arduino IDE, и ваш скетч автоматически загрузится на плату и затем запустится. Это работает примерно так же, как с Uno: программное обеспечение Arduino инициирует сброс платы, запуская загрузчик, который отвечает за приём, сохранение и запуск нового скетча.
Однако, поскольку последовательный порт виртуальный, он исчезает при сбросе платы, и программное обеспечение Arduino использует другую стратегию синхронизации загрузки по сравнению с Uno и другими платами. В частности, после инициирования автоматического сброса Leonardo, Leonardo ETH или Micro (используя последовательный порт, выбранный в меню Tools > Serial Port), программное обеспечение Arduino ждёт появления нового виртуального (CDC) последовательного/COM-порта, который, предположительно, представляет загрузчик. Затем оно выполняет загрузку через этот вновь появившийся порт.
Эти различия влияют на способ использования физической кнопки сброса для выполнения загрузки, если автоматический сброс не работает. Нажмите и удерживайте кнопку сброса на Leonardo или Micro, затем нажмите кнопку загрузки в программном обеспечении Arduino. Отпустите кнопку сброса только после появления сообщения «Uploading…» в строке состояния программы. При этом загрузчик запустится, создавая новый виртуальный (CDC) последовательный порт на компьютере. Программное обеспечение обнаружит появление этого порта и выполнит загрузку через него. Опять же, это необходимо только в том случае, если обычный процесс загрузки (т.е. просто нажатие кнопки загрузки) не работает. (Обратите внимание, что автоматический сброс инициируется, когда компьютер открывает последовательный порт на скорости 1200 бод и затем закрывает его; это не сработает, если что-то мешает USB-связи платы — например, отключение прерываний.)