Леонардо - всегда включен, статус сохраняется между перезагрузками компьютера?

Я ищу здесь два ответа.

  1. Можно ли обеспечить постоянное питание Leonardo, отдельно от питания USB-хоста? Я пробовал использовать полноразмерный Leonardo и адаптер питания, но по какой-то причине код не запустился. когда я это сделал. Я также купил аккумуляторный щиток, который скоро прибудет.

  2. Я хочу, чтобы он получал питание через переключатель с батарейками, чтобы я мог делать несколько вещей. Для начала избегайте времени загрузки и нажимайте клавишу, как только загружаемый компьютер увидит ее (я запускаю ее как клавиатуру/мышь через USB-HID), а также в какой-то момент компьютер отправляет последовательные данные чтобы Arduino выполнил другую часть своего кода... в этот момент главный компьютер перезагружается. Очевидно, это означает, что Arduino увидит, что его USB-хост исчез, а затем снова подключится к сети, автоматически перезагрузит его и, таким образом, снова запустит его с самого начала, или я могу настроить его так, чтобы он всегда был включен, и он продолжал делать то, что он есть, независимо от того, подключено ли оно к хосту?

Нужно ли мне менять код или библиотеки, чтобы добиться чего-либо из этого?

После ответа на теорию, вот часть моего реального кода, большую часть которого я удалил, так как это всего лишь несколько нажатий клавиш

#include <Keyboard.h>
#include <Mouse.h>
char returnKey = KEY_RETURN;
char tabKey = KEY_TAB;
void setup() {
Keyboard.begin();
Mouse.begin();
// задержка(60000); //Задержка развертывания
delay(3000); //Задержка тестирования
// Команды клавиатуры
Keyboard.write(returnKey);
delay(14000);
// Экран приветствия
Mouse.click(MOUSE_LEFT);
delay(100);
}

void loop() {
}

, 👍0

Обсуждение

Пожалуйста, покажите нам код и сообщите, какие библиотеки вы используете и откуда они взяты (только для библиотек, которые не входят в стандартную комплектацию Arduino). Помимо клавиатуры Arduino, есть и другие способы реализации USB-клавиатуры: https://github.com/NicoHood/HID/wiki/Keyboard-API., @Jot

Добавил пример моего кода, @Danny Shepherd

Когда вы ожидаете выполнения этих команд клавиатуры и мыши?, @Majenko

@Маженко, на данный момент прошло 3 секунды после подключения к компьютеру. Или в идеале мгновенно. Я подключаю блок питания, и загораются светодиоды ON и L, но при подключении USB ничего не происходит. Мне приходится вынимать блок питания, а затем он снова подключается к USB и начинает работать. Как будто блок питания не позволяет USB-порту что-либо делать на моем устройстве., @Danny Shepherd

Ну, они запускаются через 3 секунды после включения платы. Независимо от того, что делает USB. Мне не известен какой-либо способ сказать «Запустите это после подключения USB» в текущем API., @Majenko

@Маженко, хорошая мысль, я об этом подумал, однако у меня также была 60-секундная задержка, и я подключил его через несколько секунд после подачи на него питания, и он ничего не сделал. У меня также есть еще один эскиз, в котором я запускаю эскиз с помощью последовательной команды в Терминале, но при использовании силового ствола Mac даже не видит его, пока я не сниму ствол. Может у меня неисправна плата, которая отключает USB при питании от ствола? (Я очень рад, что он запускает код сразу после включения, если мне нужна более длительная задержка, я могу просто запустить его с помощью внешней кнопки), @Danny Shepherd

поместите некоторый код в цикл() ..... прямо сейчас вы не можете сказать, произошел ли сбой скетча или он прошел полностью, @jsotola

@jsotola, но на данный момент это не моя проблема. Когда я подключаюсь через USB, скетч запускается, как только я подключаю цилиндрический разъем, кажется, что USB-соединение отключается. Я использую официальную Arduino Leonardo, сделанную в Италии, а не клон., @Danny Shepherd


2 ответа


1

Можно ли обеспечить постоянное питание Leonardo, отдельно от питания USB-хоста

Да, именно для этого и нужен домкрат.

Я пробовал использовать полноразмерный Leonardo и адаптер питания, но по какой-то причине код не запустился.

Тогда ваш код неправильный. Используете ли вы while (!Serial); или что-то подобное в верхней части кода?

Для начала избегайте времени загрузки

Самый верный способ сделать это — не использовать загрузчик. Вместо этого запрограммируйте плату напрямую с помощью аппаратного программатора, отключив (или удалив) загрузчик.

Очевидно, это означает, что Arduino увидит, что его USB-хост исчез, а затем снова подключится к сети, автоматически перезагрузит его и, таким образом, снова запустит его с самого начала, или я могу настроить его так, чтобы он всегда был включен, и он продолжал делать то, что это так, независимо от того, подключено ли оно к хосту?

Leonardo перезагружается только в том случае, если вы откроете последовательный порт на скорости 1200 бод или переключите контакт/кнопку RESET.

Нужно ли мне менять код или библиотеки, чтобы добиться чего-либо из этого?

Похоже, что вам это может понадобиться, да, поскольку он не работает в тот момент, когда, если бы код был правильным, он должен был бы работать.


ВАЖНО

Большинство компьютеров не распознают Leonardo до полной загрузки операционной системы. Это означает, что вы не можете использовать Leonardo для взаимодействия с BIOS или меню загрузки. В Leonardo нет клавиатуры «Протокол загрузки», которая необходима для взаимодействия с BIOS или другой средой предварительной загрузки.

,

Спасибо Маженко - похоже, тогда я теоретически могу делать то, что хочу. Теперь нет «пока (!serial)» вверху, но как только я использовал цилиндрический разъем на моем полноразмерном Леонардо, код перестал работать - он включился, а затем, казалось, просто игнорировал соединение USB. К счастью, в ходе моего тестирования macOS работала с клавиатурой по умолчанию и с BootKeyboard, доступной в библиотеке HID-Project, так что, к счастью, я тоже здесь., @Danny Shepherd

Добавил пример моего кода, @Danny Shepherd


0

Можно определить, открыл или закрыл компьютер последовательный порт.

Последовательный порт расположен на плате Arduino.
Проверив if(Serial), вы можете проверить, активен ли последовательный порт на компьютере.
Вы можете отправлять события клавиатуры и мыши после того, как они станут активными.

Затухание и исчезновение светодиода на контакте 13 осуществляется загрузчиком. Вы можете загрузить скетч с помощью программатора, чтобы он работал без загрузчика.

Насколько я знаю, даже без загрузчика последовательный порт все равно создается.
Платы Teensy имеют немного больший контроль над интерфейсом USB.

Знать, что происходит и когда компьютер подключен, гораздо проще с помощью компьютера Mini Linux. Например, Raspberry Pi.
У ATmega32u4 Arduino Leonardo есть возможности и информация доступна, но, насколько мне известно, для его использования нет библиотечных функций.

,