Отладка RN 42 HID Mouse
Я пытаюсь использовать RN 42 и Arduino Uno для управления мышью Bluetooth. Я настроил RN 42 с помощью команд S ~, 6 и SH, 0220 и R, 1, чтобы перевести устройство в режим скрытой мыши. Есть ли что-нибудь, что я пропустил? Ниже приведен скетч, который я использую для отправки отчетов мыши на Bluetooth. Скетч компилируется нормально, но перемещение джойстика не приводит к перемещению курсора. В конце я включил строку кода для печати на последовательном порту любых данных, отправляемых через последовательный программный интерфейс на Bluetooth. Однако, когда я просматриваю последовательный монитор, я получаю много перевернутых вопросительных знаков. Кто-нибудь знает, почему это так? Заранее благодарю.
const int bluetoothTx = 4; // Вывод TX RN-42, Arduino D2 (настроить как вывод RX Ard)
const int bluetoothRx = 3; // Вывод RX RN-42, Arduino D3 (настроить как вывод TX)
const int button = 5;
const int xAxis = A0; // ось X джойстика
const int yAxis = A1; // диапазон ввода по оси Y джойстика
int range = 12; // диапазон вывода движения по X или Y
int responseDelay = 5; // задержка отклика мыши, в мс
int threshold = range / 4; // порог покоя
int center = range / 2; // значение положения покоя
SoftwareSerial BT(bluetoothTx, bluetoothRx); // аргументы SoftwareSerial(RXpin, TXpin)
void mouseCommand(byte buttons, byte x, byte y) {
BT.write((byte)0xFD);
BT.write((byte)0x05);
BT.write((byte)0x02);
BT.write((byte)buttons);
BT.write((byte)x);
BT.write((byte)y);
BT.write((byte)0x00);
}
int readAxis(int thisAxis) {
// считывание аналогового входного сигнала:
int reading = analogRead(thisAxis);
// сопоставьте показания из диапазона аналогового ввода с диапазоном выходного сигнала:
reading = map(reading, 0, 1023, 0, 12);
/* threshold prevents the mouse from reading small unintentional movements.
If the output reading is outside from the rest position threshold, use it: */
int distance = reading - center;
if (abs(distance) < threshold) {
distance = 0;
}
// возвращает масштабированное расстояние для этой оси:
return distance;
}
void setup() {
pinMode(button, INPUT);
pinMode(bluetoothTx, INPUT); // bluetoothTX эквивалентен pinMode вывода arduino RX
pinMode(bluetoothRx, OUTPUT);
Serial.begin(115200); // Запуск последовательного монитора со скоростью 115200 бит/ с
BT.begin(115200); // RN-42 по умолчанию равен 115200 бит/с
}
void loop() {
// считывание и масштабирование по двум осям:
int xReading = readAxis(xAxis);
int yReading = readAxis(yAxis);
int buttonState = digitalRead(button);
// переместите курсор мыши:
mouseCommand(buttonState, xReading, yReading);
delay(responseDelay);
if(BT.available()) // Если на модуль Bluetooth отправляются данные
{
// Отправка любых символов, полученных bluetooth, на последовательный монитор
Serial.print((char)BT.read());
}
}
@ponderosa, 👍2
Обсуждение1 ответ
Проблема с отсутствием ответа от мыши заключалась в том, что Bluetooth не подключался автоматически к компьютеру после выключения питания. Я решил эту проблему, отправив команду SM, 6 для автоматического повторного подключения, а затем R, 1 для перезагрузки.
- Bluetooth HID для проекта мыши
- Bluetooth-модуль HC-05 неправильно считывает данные с моего телефона Android
- Создание Bluetooth-мыши с помощью Arduino
- Я могу отправлять на software serial, но не прочитать?
- Проблемы с подключением Bluetooth OBD2 ELM327
- Буфер чтения из программного обеспечения-Последовательный и запись в последовательный
- SoftwareSerial читается до тех пор, пока не станет пустым, работает только с задержкой
- mySerial.available() возвращает 0
что вы имеете в виду под "управлением мышью по Bluetooth`? ... мышь - это устройство ввода, а не устройство вывода, @jsotola
Я думаю, что OP хочет настроить и использовать RN42 (который является чипом Bluetooth) в качестве скрытой мыши для использования с ПК. Затем Arduino считывает данные с джойстика и отправляет данные на RN42 для соответствующего перемещения курсора на ПК, @chrisl
@Tadashi Есть ли у вас GPIO11 RN42 на высоком уровне при включении питания?, @chrisl
Спасибо за ответы. Проблема с отсутствием ответа от мыши заключалась в том, что Bluetooth не подключался автоматически к компьютеру после выключения питания. Я решил эту проблему, отправив команду SM, 6 для автоматического повторного подключения, а затем R, 1 для перезагрузки., @ponderosa
Тем не менее, я столкнулся с несколькими ошибками, но исправил их после подключения RN 42. Для тех, кто пытается создать скрытую мышь, у меня есть несколько советов по устранению неполадок. Моя мышь отклонялась в верхний левый угол экрана, потому что положение покоя джойстика не находилось в центре диапазона (12), к которому я хотел сопоставить значения аналогового банка. Это было связано с тем, что мой джойстик не выводил 1023 в качестве максимального значения. Я уменьшил 1023 на 0,6, чтобы решить эту проблему. Другая проблема заключалась в том, что при перемещении джойстика моя мышь следовала по одной траектории и больше никуда не перемещалась. Увеличение задержки ответа решило эту проблему., @ponderosa
Я знаю, что прошло много времени, я работаю над тем же проектом, что и вы, Ponderosa, вы смогли заставить его работать? Я использую плату esp32 с тем же джойстиком. В надежде получить от вас ответ. Спасибо, @Gerth