Closed korenevskiy closed 1 year ago
Внимательнее к Readme, библиотека работает только на 16 МГц платах. Примеры дополнил, спасибо
А зачем на дигиспарк, если не секрет? Там своя юсб либа же
Я добавил файлик под 16.5 МГц, но нужно в usbconfig.h вбить другой порт (B, на тиньке85) и нужный пин. Возможно заведётся
Я просто зашел на Али, и купил самую дешевую Ардуинку с USB. Просто ее позиционировали как Аналог. А получается что и не совсем аналог.
#define USB_CFG_IOPORTNAME B
#define USB_CFG_DMINUS_BIT 4
#define USB_CFG_DPLUS_BIT 3
эти параметры?
Компиляция, и прошивка прошла успешно.
.
Но виртуальная клава с примером из репозитория текст Keyboard.println(" Hello world!");
Не печатает.
в конструктор добавил pinMode(1, OUTPUT);
А в конец тела функции добавил
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
delay(200);
В результате модифицированный ваш пример 3 раза моргнул светодиодом. и больше ни чего не происходило. Соответственно тексты не пишет.
Вообще считаю Digispark должен стать более популярным чем Arduino, из-за цены. Проблема Digispark это отсутствие нативной поддержки у ArduinoIDE. Думаю что кто нибудь сделает клон ArduinoIDE со встроенными примерами и драйверами Digispark для пиара своего сайта/форума.
Абсолютно не согласен. Дигиспарк сейчас сильно подорожал и стоит не сильно дешевле чем та же Nano, а в ней простите возможностей на порядок больше. Если уж говорить о цене, то жалкий Дигиспарк стоит почти столько же, сколько esp8266, где жира ещё больше. Arduino ide поддерживает Дигиспарк, достаточно вставить ссылку и установить ядро, как и для всех остальных ардуино-совместимых плат. Делать новую ide и поддерживать её актуальную версию ради предустановленной одной платы (!) Это совсем бред)
Я Digispark купил за 140р. А Arduino Nano стоит более 270р. А esp8266 нашел за 210р. С IDE я наверно многого нафантазировал. Изменения наверно излишне. . Подскажите я правильные изменения внес в usbconfig.h? Посоветуйте пожалуйста что может быть причиной не работы Gigispark у меня с Вашим примером работы клавиатуры.
Раньше 80р он стоил, а есп не подорожала. Если сравнить такие базовые параметры как объем памяти, скорость работы, количество ног... Дигиспарк стоит дороже, чем он должен стоить. По usbconfig - подключу автора либы, пусть помогает. И всё же, зачем это все если у диги есть своя родная либа для юсб?
И всё же, зачем это все если у диги есть своя родная либа для юсб?
@GyverLibs я уже 3тью либу скачиваю и родную пробывал. кроме родной ни одна не заработала. Я через либу не могу отправить сигнал Гибернации либо Сна на ПК. Так как задача в том чтобы при отсутсвии питания в сети выключить ПК. А ИБП сам по себе не имеет интерфейсов в принципе. Он был куплен самый дешовый. Быть може конечно было бы уже задуматся о смене бесперибойника. Денег жалко, да и уже дело на принцип пошёл.
А у Диджи конечно себестоимость ниже. Но половину суммы съедается на доставку. Если взять аналогичные товары, например контроллер зарядки для 16850 microUSB. То там видно что 3 устройства стоит 50 рублей, а 6 устройств стоят 70р (или типа в таком смысле.) В любом случае у всех контроллеров доставка предположим одинаковая. А если цена дешевле, то сильно в ущерб самого устройства. С другой стороны, если задачи простые, то зачем переплачивать, разве что только время сэкономить. В одном из роликов сказали что Digi вроде такой же, но везде есть свои особенности, тонкости и пока в каждой тонкости не разберешься хрен что заработает. Но я не знал что могут быть проблемы.
.
У программного usb есть ограничения, многие кнопки могут не работать. Лучше взять ту же 32u4 и не мучиться, у нее аппаратная поддержка
До момента доставки Диджи, я представлял как запускаю Диджи с прошивкой под HID UPS. Чтобы Диджи определялся как реальный UPS. Когда скачал либу под Ардуино, и посмотрел примеры, я просто офигел и понял что не осилю в принципе.. Тем более как бы разобраться с самим конроллером, а потом уже переходить к переделкам либы под свой дижи. И пришел к тому что ограничусь просто прошивкой от клавы с сигналом гибернации. . У 32u4 аппаратная поддержка USB? А у нее USB как последовательный порт работает или может работать как что угодно, претворяясь любым устройстом?
32u4 (Arduino micro) притворяется хидом и чем угодно
Подключите пожалуйста автора либы.
Он пока не у компьютера, как придет так придёт
Подскажите пожалуйста. Если я подключаю две клавы к ПК, то нажав на одной из них CapsLock, то он же загорается и на другой клаве. А либа эта так же получает сигнал о CapsLock'е?
Я не знаю, не тестировал библиотеку, её сделал мой коллега
Только что нашел, модифицированный Arduino IDE со встроенной поддержкой Digispark. Правда версия старая. Так как поддержка загрузки либ в IDE появилась недавно. Поэтому наверно ктото модифицировал версию IDE. А возможно производители Digispark это и сделали.
Зачем? Задача решается в три клика мышкой....
Зачем? Задача решается в три клика мышкой....
Ну да теперь, да. Но чтобы это сделать надо инструкцию посмотреть. Я вот посмотрел кучу инструкций где это рассказывалось. кое в чем разобрался. А без инструкций не чего не получится. Я работаю UX разработчиком.
Стараемся делать софт интуитивно понятный. Пример хорошей адаптивности. Например как в онлайн сбербанке в поле пароля программа удаляла пробелы за звездочками. Или у них пароли были одинаково восприимчивы к обоим регистрам. Фишка в том что на клавиатуре написаны буквы в большом регистре, но когда человек пишет, то почему то буквы пишутся в маленьком регистре. А за звездочками вообще не видно. Это для программистов и компьютерных аналитиков и дизайнеров все очевидно, а для всех остальных пенсионеров и просто других людей некоторые вещи вообще не очевидны и не понятны.
Я вот после первой прошивки Диджи 2 часа потратил на выяснение почему Диджи перестал прошиваться. Оказывается во всех инструкциях написано и звучит один в один фраза "Ардуино Digispark не нужно заранее подключать к компьютеру." или
Как это нужно понимать? слово "не нужно" воспринимается как не обязательно (типа можно делать а можно и не делать).
Просто иногда оцениваю простоту экслуатации интерфейсов и иногда надуманно преувеличиваю проблему.
Каких кучу инструкций, зачем?? На официальной Вики дигистамп всё написано по пунктам
На офицальной Вики все на английском, русского нет. Я пользовался инструкциями из яндекса и из ютюба.
Жалко что ArduinoIDE v2 не поддерживает Digi.
Инструкции на русском часто нерабочие, или работают только у автора :)
Вы поддержку Диджи добавляли, это Вы добавили usbdrvasm165.inc. А этот файлик является копией usbdrvasm16.inc? Я сравнил эти 2 файла, они очень сильно отличаются. Вы наверно его из другого проекта скопировали?. Просто Вы его очень быстро внесли в репозиторий.
А Вы пробовали Platformio?
является копией usbdrvasm16.inc?
Не знаю, автор либы скинул
Вы пробовали Platformio?
Да, ужасно неудобная и кривая IDE
Дешёвый аналог на STM32 нашёл. Стоит 160р. И работает на 72МГц и памяти всех видов больше . Аппара ный USB есть.
Осталось научиться с ним работать)
Нашел скетч для Arduino, который превращает его в ИБП UPS USB. Совместим со встроенными драйверами Windows и Linux. https://create.arduino.cc/projecthub/abratchik/hid-compliant-ups-with-arduino-75198c К сожалению опять таки Digi выдает ошибку при компиляции.
Digi выдает ошибку
Очевидно, библиотека под 32U4
#define USB_CFG_IOPORTNAME B #define USB_CFG_DMINUS_BIT 4 #define USB_CFG_DPLUS_BIT 3
эти параметры?
Как минимум из того что я могу сказать, в библиотеке используется INT0 прерывание, а вы используете пины B3 и B4 которые не являются прерываниями, вот оно и не работает.
По зависанию тоже есть предположение, библиотека инициализацирует INT0 прерывание на спад а из-за того что пин INT0 весит в воздухе и ловит помехи прерывание срабатывает каждую секунду чем не даёт выполнятся основному коду
Как минимум из того что я могу сказать, в библиотеке используется INT0 прерывание, а вы используете пины B3 и B4 которые не являются прерываниями, вот оно и не работает.
По зависанию тоже есть предположение, библиотека инициализирует INT0 прерывание на спад а из-за того что пин INT0 весит в воздухе и ловит помехи прерывание срабатывает каждую секунду чем не даёт выполнятся основному коду
Посоветуйте пожалуйста, какие именно параметры можно поменять. Примерное наименование параметров в либе скажите, буду очень признателен.
INT0 у меня подключен к резистору на плюс. Как его програмно отключить? Метод pinMode();
отключит прерывание на нем?
PS интересно то что изначально припаяв на P5 сигнал от внешнего БП о наличии питания в сети. Диджи постоянно глючил. Потом понял что P5 работает как сброс. Думается что этот пин переназначить.
Как минимум из того что я могу сказать, в библиотеке используется INT0 прерывание, а вы используете пины B3 и B4 которые не являются прерываниями, вот оно и не работает. По зависанию тоже есть предположение, библиотека инициализирует INT0 прерывание на спад а из-за того что пин INT0 весит в воздухе и ловит помехи прерывание срабатывает каждую секунду чем не даёт выполнятся основному коду
Посоветуйте пожалуйста, какие именно параметры можно поменять. Примерное наименование параметров в либе скажите, буду очень признателен. INT0 у меня подключен к резистору на плюс. Как его програмно отключить? Метод
pinMode();
отключит прерывание на нем? PS интересно то что изначально припаяв на P5 сигнал от внешнего БП о наличии питания в сети. Диджи постоянно глючил. Потом понял что P5 работает как сброс. Думается что этот пин переназначить.
Без прерывания либа не будет работать, прерывание сделанно для получения данных по usb так что без него hid работать не будет
Из того что могу посоветовать это перекинуть Data- на PB2. И ещё важно что бы pull-up резистор(1.5k/2.2K) подключались программно (у дигиспарк припаян резистор между d- и 5V из-за чего даже без запуска библиотеки хост(ПК/ноут и т.д) начинает опрашивать Hid, а библиотека не отвечает)
Но что бы не парится этим всем лучше использовать либу которая создана специально для digispark
Как минимум из того что я могу сказать, в библиотеке используется INT0 прерывание, а вы используете пины B3 и B4 которые не являются прерываниями, вот оно и не работает. По зависанию тоже есть предположение, библиотека инициализирует INT0 прерывание на спад а из-за того что пин INT0 весит в воздухе и ловит помехи прерывание срабатывает каждую секунду чем не даёт выполнятся основному коду
Посоветуйте пожалуйста, какие именно параметры можно поменять. Примерное наименование параметров в либе скажите, буду очень признателен. INT0 у меня подключен к резистору на плюс. Как его програмно отключить? Метод
pinMode();
отключит прерывание на нем? PS интересно то что изначально припаяв на P5 сигнал от внешнего БП о наличии питания в сети. Диджи постоянно глючил. Потом понял что P5 работает как сброс. Думается что этот пин переназначить.Без прерывания либа не будет работать, прерывание сделанно для получения данных по usb так что без него hid работать не будет
Из того что могу посоветовать это перекинуть Data- на PB2. И ещё важно что бы pull-up резистор(1.5k/2.2K) подключались программно (у дигиспарк припаян резистор между d- и 5V из-за чего даже без запуска библиотеки хост(ПК/ноут и т.д) начинает опрашивать Hid, а библиотека не отвечает)
Но что бы не парится этим всем лучше использовать либу которая создана специально для digispark
Конечно, я бы с радостью бы ее использовал, но там нет поддержки клавиши Сна. Конечно там есть печать символа по коду, но я не нашёл код клавиши сна. Я пробовал , не получалось. Быть может я пытался печатать правильный код, но делал это не в той кодировке.
. Еще у Вас в описании есть пример, в этом примере не указан #include.