помогите пожалуйста. у меня есть плата esp32s3 и я хочу подключить туда свою юсб мышку, чтобы плата считывала все движения. возможно ли это сделать?
я новичок в этой теме, мало чего понимаю, объясните пожалуйста простым языком
тоись, гугал тебе простым языком объяснить не смог…
да я много чего пробовал, но когда я подключаю мышку в плату, то ничего не происходит, мышка не загорается, сама плата тоже походу не видит. вот и сомнения мучают, а возможно ли это
Судя по тому, что в тексте отмечено, что мышка именно юсб - то и подключать ты, наверно, хочешь по юсб? А разве на плате есть esp32s3 разъем юсб мама?
вот тут подробнее - как тебе это удается?
в твоем случае нет, выхода два
- читать книжки и учится
- пить пиво, так дед всем советует))
на плате разъем тайп си, подключаю через отг переходник(переходник рабочий, пробовал мышку в телефон вставлять)
А с чего ты взял, что в этом порту есть режим OTG?
Хотя поправлюсь, действительно есть ОТГ…
ESP32-S3 имеет встроенный USB OTG, что позволяет работать в режиме USB Host.
спасибо, поправился
да, я пока писал, не увидел, сорян…
не за что извиняться, правильно поправил
а подробнее?
разные прошивки, настройки все перепробовал, несколько мышек подключал, в разные юсб разъемы плату подключал(юсб 2.0/3.0), но все неудачно. поэтому и пришел за советом
Раз ты всё перепробовал, что мы тебе посоветовать можем? Вариантов не осталось.
Aleksey314 вы хотите сломать мышку, и подключить энкодер от мышки к esp или камеру ?
если есть плата ESP32-S3-DevKitC-1 ломать не придется нечего… но это не интересно, но вот код может пригодится тогда…
#include "USB.h"
#include "USBHIDMouse.h"
USBHIDMouse Mouse;
void setup() {
Serial.begin(115200);
USB.begin();
Mouse.begin();
delay(2000);
Serial.println("USB Mouse Reader Ready");
}
void loop() {
if (Mouse.available()) {
// Чтение данных от мыши
mouse_data_t data = Mouse.mouseData();
Serial.print("X: ");
Serial.print(data.x);
Serial.print(" | Y: ");
Serial.print(data.y);
Serial.print(" | Wheel: ");
Serial.print(data.wheel);
Serial.print(" | Buttons: ");
Serial.println(data.buttons, BIN);
}
delay(10);
}
или так
#include "USBHID.h"
#include "HIDMouse.h"
USBHID HID;
HIDMouse Mouse(HID);
// Функция для обработки событий мыши
void handleMouseEvent(uint8_t buttons, int8_t x, int8_t y, int8_t wheel) {
Serial.print("Mouse Event: ");
Serial.print("Buttons: 0x");
Serial.print(buttons, HEX);
Serial.print(" | X: ");
Serial.print(x);
Serial.print(" | Y: ");
Serial.print(y);
Serial.print(" | Wheel: ");
Serial.println(wheel);
// Анализ кнопок
if (buttons & 0x01) Serial.println("Left button pressed");
if (buttons & 0x02) Serial.println("Right button pressed");
if (buttons & 0x04) Serial.println("Middle button pressed");
}
void setup() {
Serial.begin(115200);
Serial.println("Starting USB HID Mouse...");
HID.begin();
Mouse.begin();
// Устанавливаем callback функцию
Mouse.setMouseEventCallback(handleMouseEvent);
Serial.println("Mouse ready! Move your mouse or click buttons");
}
void loop() {
// Все обработка происходит в callback-функции
// Можно добавить дополнительную логику здесь
delay(10);
}
но я бы все таки посоветовал разломать, и изучить каждый компонент!
Да, возможно. Кури TinyUSB , которая входит в состав ESP-IDF.
Наверняка в интернете полно примеров.
Аппаратно поддерживается лишь CDC режим, если я ничего не путаю. Т.е. консоль. Кажется, но могу наврать, накопитель-флешка еще может быть с аппаратной. Остальное - TinyUSB.
Ты бы свой код на компилябельность проверил. Генереное не всегда компилируется. В частности, в первый фрагмент не компилируется, нет метода available() ![]()
