Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Arduino Leonardo. Имитация клавиатуры с помощью Keyboard.h и сообщение с другим устройством с помощью SoftwareSerial.h

TIP_CHACK Знаток (288), открыт 2 недели назад
Возникла у меня проблема с имитацией клавиатуры. для того чтобы это делать нужна плата с поддержкой HID. Под рукой была только Leonardo. И все работало хорошо: я подключил библиотеку Keyboard.h и для проверки выводил единицы. Потом я соединил это с кодом, где используется библиотека SoftwareSerial.h для того чтобы устанавливать коммуникацию с сенсорным дисплеем NEXTION, выступающий в роли самой клавиатуры. До этого я тоже тестировал код без ввода непосредственно в саму строку, а просто в сериал порт, и оно работало. Заменил все так чтобы теперь оно печаталось и всё. Не работает. У меня есть подозрения на то что библиотеки не сильно дружат и поэтому работают только врознь, но это не точно. ссылка на ino файл (без его папки) , так как код слишком громоздкий и сюда не помещается.

P.S. здесь много неиспользуемых нерабочих функций, поэтому обратите свое внимание на "Check()".
Ну и еще кое-что. Если здесь:

 void Check(){  

if(mySerial.available()){

num = mySerial.read();

Serial.println(num);

if убрать или заменить на:

 if(mySerial.available() == 0){...} 
, то ардуинка заспамит вам весь порт -1. + когда я подключаю плату, проходит время, и система издает звук отключенного устройства, а потом снова подключает, она не распознает ардуину как устройство(хотя последнее время это не проявляется но все равно странно). Ну и ардуина сама китайская (DaVinchi) но определятся как Leonardo и работала вроде исправно.
1 ответ
/bin/laden Искусственный Интеллект (101135) 2 недели назад
у тебя два порта на одних и тех же пинах, немудрено что ты проблемы поимел.
USB чувствителен к задержкам, использовать программные порты такое себе.
TIP_CHACKЗнаток (288) 2 недели назад
Нет два порта на пинах абсолютно не причем. Оказывается что на некоторых платах ардуино библиотека softwareSerial.h может использовать только определённые пины в качестве RX. Нужно было всеволишь прочитать документацию повнимательней :)
TIP_CHACKЗнаток (288) 2 недели назад
и вообще что вы имейте ввиду под портами... пины... несовсем понимаю
Похожие вопросы