Помогите с кодом для arduino_leonardo
- Войдите на сайт для отправки комментариев
Здравствуйте, есть arduinoLeonardo его функция быть клавиатурой которая напечатает и скачает файл
но при подключении его к компу Windows начинает поиск драйверов для неизвестного устройства и вот
задача что бы он не начинал печатать пока винда не прекратит свой поиск и даст ему права действовать
как клава, но пока идет поиск дров леонардо отрабатывает свой код.
Нужно сделать так ч тобы он нажимал кнопку CapsLock пока не изменится состояние светодиода на клаве
тогда он выключает caps_lock и начинает выполнение кода.
Дак вот этот код:
int ledkeys(void) {return int(keyboard_leds);}
boolean is_caps_on(void) {return ((ledkeys() & 2) == 2) ? true : false;}
void wait_for_drivers()
{
boolean CapsLockTrap = is_caps_on();
while(CapsLockTrap == is_caps_on()) //нажимаем клавишу CapsLock пока не изменится ее состояние
{
Keyboard.press(KEY_CAPS_LOCK); //нажали CapsLock
delay(200);
Keyboard.releaseAll(); //отпустили
delay(200);
}
Но вылазит ошибка вот она:
http://pixs.ru/showimage/screen1jpg_6624538_26639120.jpg
Замучился решать этот вопрос, перепробывал патчи для файлов /usr/share/arduino/hardware/arduino/cores/arduino/HID.cpp и USBAPI.h менял на разные библиотеки не получается ничего, посоветуйти как победить эту ситуацию.
Спасибо.
kurales, нужно стереть бутлоадер, из-за него задержки и запросы дров. Без него всё будет работать моментально, как обычная клавиатура.
Кстати да спасибо за совет, я ещё думал как сменить название Леонардо которое определяется в Винде на название флешки например, а тут оказывается его вообще можно удалить)
А после удаления бутлоадера я смогу заливать туда другие скечи и они будут работать?
Еще не искал как удалить бутлоадер, вот подумал если удалить файл бутлоадера леонардо из программы ардуино и перезалить скетч то получится без бутлоадера или это делается по другому?Или может будет достаточно что-то изменить во фьюзах?
Atmega32u4 пишут вроде как шьется через юсб, вроде как и программатор не нужен.
И тут вот еще что обратная связь с CapsLock я хотел её использовать как проверку на то какой язык включен в Винде и в случае русского языка чтоб нажимал кнопки Alt+Shift и только если проверка пройдена тогда запускать код.
Спасибо.
Всё перерыл, везде написано как прошить мк, а как удалить бутлоадер не могу найти.
Может прошивку.hex забить нулями и перезаписать загрузчик, получится так?
Разобрать не могу её если программатором шить.
kurales, не вводите людей в заблуждение вот ардуино леонардо:
Если МК mega32u4 запихали в флэшку, то это не делает её ардуиной Леонардо. С ней вы обречены на мучение с дровами..
Что хоть это за девайс-то такой? Просто любопытно. Флэшка-убийца? Типа втыкаешь, а она какой-нибудь Format C: набирает. Более полезного что-то ничего на ум не идёт...
Вот что внутри, вроде пишут что леонардо, но я не особо в этом разбираюсь.
А возможности достаточно большие, вопрос только в чем заинтересованность)
А на счет отсутствия бутлоадера вы меня заразили этой идеей, буду пытаться это реализовать, вникаю пока в эту тему.
Ну, я похоже недалёк был от истинного назначения этого девайса. Тут вот прямо написано - Плохой жук, плохой! :)
1PCS BadUsb Beetle Bad USB ATMEGA32U4 Development Board virtual keyboard
Сам-то Beetle может и представляет интерес, как маленькая ардуинка. Но в виде флэшки, однозначно пакостничать! :)
По разному можно что угодно использовать, это просто выступает в роли клавиатуры, а какой текст будет печататься это уже каждый сам выбирает)
Может реферат быстро накатать)
Вот что внутри, вроде пишут что леонардо
Хорош нести пургу, перечитайте ещё раз сообщение #4
В чём пурга, изложи?
Сказал же что не разбираюсь, не леонардо дак не леонардо)
В чем проблема?)
kalapanga Не помешает такую при себе иметь, вдруг пригодится)
В чём пурга, изложи?
Сказал же что не разбираюсь, не леонардо дак не леонардо)
В чем проблема?)
Имеется ввиду, что Ардуино Леонардо - это всё-таки конкретный конструктив. Другое дело, что здесь контроллер такой же и соответственно в IDE эта платка как Леонардо программируется. Вот продавцы его и обзывают иногда smallest Leonardo.
Флэшка-то разбирается? Если там действительно этот жук со всеми выводами, то наверное и запрограммировать получится.
kalapanga как то полюбому разбирается но сидит всё плотно, если только корпус разгибать, а платка этаже которя на фото потому что и цвет и буквы видно в начале разъема, я вот только думаю эти выводы срезаны потому что по размерам она меньше в ширину покрайне мере, но припаятся не проблема, если она не прошивается через юсб то придется в любом случае разбирать, потому что стереть бут это идеальное решение, а то дрова от 20 до 30 секунд устанавливаюстя.
Тоесть по сути я могу выствить фьюз BOOTRST в 1 и этот мк будет начинать загрузку сразу с программы.
А бутлоадер будет загружаться в конце или будет игнорироваться?
И смогу ли я менять скетч привычным способом на этом устройстве при такой настройке фьюза?
Посути даже если нет то не страшно.
Спасибо
kurales, FUSE вы не исправите без программатора. Но это не единственная проблема, есть ещё одна. В ардуинах на этом чипе ком порт создаётся дважды - в бутлоадере и в основной программе, причём во втором случае насильно, даже если вы не используете Serial. Зачем? -а эта штука обеспечивает программную перезагрузку ардуины, без неё пришлось бы давить на ресет. И вот теперь самое интересное -этот ком порт просто так не отключается, он прописан в дуриновский библиотеке, и придётся изрядно повозиться, что б найти как его отключить не отключив при этом возможность эмулировать клавиатуру.
Программатор у меня есть, флеху разобрал, программатор подключил, у самого у меня линукс, так что пробую через виртуальную машину, но пока что то не получается.
А если просто фьюз BOOTRST выставить чтобы программа начиналась не с бутолоадера, тоже будет заморочка с портами?
Можно вообще просто фьюз один изменить и болше ничего не трогать или для этого все равно нужна хекс бутлоадера?
В Винду закачал несколько программ Algorithm Builder, UniProf и еще какая-то прога не помню, пытаюсь просто прочитать фьюзы, но походу нет драйверов программатора, не видят программы его.
kurales, ну а к чему я это писал -именно будет. Поэтому нет смысла отключать, обойдя одни грабли вы тотчас наступите на другие. Так что начинайте копать потроха библиотеки..
Я извиняюсь если где-то переспрашиваю, просто с бутлоадером это тема новая для меня, просто бут на чистый мк я заливал через ардуино, с этим нет проблем, а в этой ситуации это уже сложней.
Как разобраться в потрохах библиотек?Что искать нужно?
Спасибо.
kurales, место, откуда вызывается Communication Device Class. Нужно запретить этот вызов.
dimax вас не затруднит объяснить поподробнее, а то я не чего не понял.
Через какую программу вообще посоветуете работать со фьюзами, arduino-IDE?
И где это запретить, а то пробую сейчас в виндос, драйвера для программатора "USBASP USBISP AVR" установил, но программы не хотят читать фьюзы, пишут что-то про не верный порт.
kurales, универсальная программа одна -avrdude. Есть в составе arduinoIDE , а так же на оффсайте есть версии под другие ОС. Есть для неё какие-то GUI, но это уже дело вкуса. Я из командной строки работаю. мой добрый совет забить на это. Вам эта задача не плечам, по крайней мере сейчас.
Сейчас попробывал залить скетч через программатор в Linux все сработало нормально и порт почему то один показыват или я не там смотрю?
Легко сказать забить на это)
Почему не по плечам?В чем трудность, надо знать программирование?
Что-то напартачил я с этой флешкой, в Винду втыкаю не нажимает клавиши Win+r, а код отписывает если блокнот открыть.
Хотя ни чего не делал, просто пытался диагностировать, а что-то изменилось в этой флешке.
По моги dimax что сделать, как вопрос решить.
Пробывал вчера программу avrdude, окликается нормально, какую команду вбить чтобы всё было хорошо?)
Вчера еще программатор перепрошил, он ошибку показывал при заливки скетча, хотя скетч заливал.
Через что вообще лучше шить через программатор или arduino_UNO?
Спасибо.
kurales, помочь больше нечем. Основную задачу я вам описал в #20, программатор для работы в этом направлении не нужен. Он понадобится в самом конце, что б удалить/запретить бутлоадер.
Понял, спасибо за помощь, буду разбираться, если можно скажите какой матерьял изучить чтобы понять принцип всего что мне нужно делать, может статьи какие.
Communication Device Class запретить его нужно через программу avrdude?Или в самом коде нужно чтото дополнить?
Communication Device Class запретить его нужно через программу avrdude?Или в самом коде нужно чтото дополнить?
Забейте на этот проект, либо помучайте гугля на предмет кто уже решил подобную задачу. Ибо сама поставка вашего вопроса говорит о том, что вам ещё рано лезть в дуиновские библиотеки .
Пока не могу забить, надо как то решить этот вопрос.
Нужно просто понять в каком направлении двигаться, чтобы разобраться в этом.
Как вообще компьютер понимает что устройство это клавиатура? Из залитого скечта со всеми прилигающими библиотеками?
Как вообще компьютер понимает что устройство это клавиатура?
По дескрипторам.
Из залитого скечта со всеми прилигающими библиотеками?
Да, весь функционал программируется в коде (скетче).
Спасибо, ща понял куда копать)
dimax Подскажите пожалуйста, нашел я похожие классы в таких файлах USBAPI.h, USBCore.h, CDC.cpp в этой папке /usr/share/arduino/hardware/arduino/cores/arduino# Это те файлы в которых надо запретить вызов Communication Device Class?
И ещё когда хотел проверить программатор, то прошил тот же скетч про скачке файла через программатор и с этого времени эта "флешка" не хочет нажимать кнопку Win и 'r' по каоманде Keyboard.press('r');
Прочитал что при использовании программатора usbapi он стирает всю flesh память вместе с бутлоадером, дак как стирание бутлоадера могло повлиять на поведение "флешки"?
Может быть изминились фьюзы? Вообще изменение фьюзов могло повлиять на определение устройства операционной системой?
Спасибо.
dimax со всем что я спрашивал, разобрался но с отключением вызова Communication Device Class не могу найти инфу и работы много не хватает не времени не сил разобраться в кодах и библах.
За деньги поделись информацией в каких файлах что нужно изменить.
Спасибо.