ESP8266: #include <Keyboard.h>вызывает фатальную ошибку: HID.h: No such file or directory
ОС: Mac Arduino: 1.8.13 Библиотека клавиатуры: 1.0.2
У меня есть универсальная плата ESP8266, и у меня есть следующий код
void setup() {
// put your setup code here, to run once:
pinMode(LED_BUILTIN, OUTPUT);
Keyboard.begin();
}
void loop() {}
Однако я получаю следующий вывод:
In файл включен из /Users/quba/Sandbox/sketch_feb07a/sketch_feb07a.ino:1:0:
/Applications/Arduino.app/Contents/Java/libraries/Keyboard/src/Keyboard.h:25:17: fatal error: HID.h: Нет такого файла или каталога
#включить "HID.h"
^
компиляция прекращена.
статус выхода 1
Ошибка компиляции для общего модуля платы ESP8266.
Не мог найти boards.txt in /Users/quba/Library/Arduino15 / packages / arduino/hardware/megaavr/1.8.7. Это pre-1.5?
@Quintin Balsdon, 👍1
2 ответа
Библиотека клавиатуры предназначена только для Arduino ATmega32U4 на базе Arduino (и других подобных с USB). ESP8266 не имеет USB, так как же он может использовать библиотеку клавиатуры?
Я искал ответ и нашел отличное объяснение здесь:
Arduino/Genuino Uno не поддерживает клавиатуру. Вы можете увидеть его в hardware/ardunino/avr/libraries/HID/HID.h. Этот файл включен из Keyboard.h и содержит
#if defined(USBCON)
. Но USBCON не определен для Arduino/Genuino Uno. Вам нужно использовать другую плату для клавиатуры.
Его поддерживают следующие контроллеры:
* ATmega32U6
* ATmega8U2
* ATmega16U2
* ATmega16U4
* ATmega32U2
* ATmega32U4
* и некоторые ATxxUSBxx
Arduino/Genuino Uno использует ATmega32U8.
Таким образом, ESP8266, как любезно упомянул StarCat выше, не может напрямую взаимодействовать с шиной USB. У него нет оборудования, которое позволяет ему быть скрытым
Короче говоря, сама плата должна определить поле USBCON (и иметь соответствующее оборудование), которое позволяет Arduino быть USB-мастером.
Я все еще хотел бы знать, как найти код, стоящий за этим, чтобы я мог видеть, что я получаю, когда покупаю плату, но это часть процесса обучения.
Нет, правлению не нужно ничего "определять". Плата должна быть основана на микроконтроллере, который поддерживает библиотека. Короче говоря: НЕ ESP8266. Если вы хотите все-в-одном WiFi/Bluetooth и USB, то вы должны использовать (только что выпущенный) чип ESP32-S2. Я думаю, что вы путаете плату (всю большую черную штуку) с микроконтроллером (серебряная коробка на одном конце) и думаете, что платы обеспечивают такую функциональность, когда речь идет исключительно о MCU и о том, что он может обеспечить. Вам нужно научиться читать спецификации и понимать спецификации, прежде чем вы сможете узнать, что предоставляется, @Majenko
Все на плате, что *не является* серебряной коробкой, - это просто вспомогательные компоненты, которые либо позволяют MCU функционировать, либо просто облегчают жизнь конечному пользователю. Одним из таких "вспомогательных компонентов" является чип, который соединяет контакты UART MCU с вашим компьютером через USB. Просто чисто для удобства. Это длинный тонкий черный чип в нижней части вашей фотографии. Вот и весь USB, который там есть, и не имеет никакого отношения к микроконтроллеру - просто чисто дополнение дизайнера платы, чтобы облегчить программирование., @Majenko
Квинтин, клавиатура-это не USB-мастер. или вы хотите прикрепить клавиатуру к esp8266?, @Juraj
@Juraj - нет, я надеялся использовать ESP8266 в качестве клавиатуры с прикрепленными кнопками. Я решил написать сервер nodejs и вместо этого реагировать на нажатия кнопок как на веб-события (если я собираюсь использовать 8266). Я мог бы просто использовать Nano 33, который у меня лежал, потому что я бы предпочел не правильный код на стороне клиента. Мой код отлично работает, по крайней мере, на Nano. Спасибо, @Quintin Balsdon
- NodeMCU поддерживает внедрение ключей?
- Ввод текста в ESP8266 с помощью USB-клавиатуры
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Arduino nano как клавиатура HID
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
Я добавил картинку, чтобы вы могли видеть контакты TX и RX, а также USB, @Quintin Balsdon
Библиотека клавиатуры предназначена для устройств, которые могут напрямую подключаться к шине USB, таких как AVR ATmega32U4. ESP8266 на NodeMCU, который вы показываете на картинке, не имеет такой возможности, но у него есть отдельный чип Serial-to-USB, который может общаться с ПК через USB. Даже в этом случае он может действовать только как периферийное устройство для ПК, а не как USB - "Мастер", который может управлять своими собственными USB-периферийными устройствами (например, клавиатурой)., @StarCat