我正在尝试使用带有蓝牙HID模块(bluesmirf)的arduino来控制Galaxy选项卡上的音量。我有arduino设置,所以我按下一个连接的小按钮,它就像键盘一样将ascii文本发送到平板电脑,这很好用。我想为这个“蓝牙键盘”创建一个自定义键盘布局文件,这样当平板电脑通过蓝牙接收来自arduino的按键时,它会控制相应的项目,如音量,静音等。但是,当使用keytest时从蓝牙模块捕获传入按钮按下,扫描码始终为0. Keytest正在读取右键并在发送A时将其显示为keycode_a(例如),但该键的扫描码始终为0而不是唯一标识符。奇怪的是,arduino自动放在serial.println命令结束时的回车(我用来发送按钮按蓝牙的命令)显示正确,因为ENTER和DOES有一个扫描码。
我不明白。我一定是做错了,但我还是新手/学习所以我一定要错过它。我无法设置自定义键盘布局来执行我想要的操作而无需使用扫描码进入平板电脑。
如有必要,我可以发布我的arduino代码。非常感谢任何和所有的帮助。我非常接近完成我需要的东西,它让我疯狂。
编辑 - 以下代码:
// test code for sending keystrokes from arduino
// to computer via HID bluetooth module
// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
// begin serial communication at 115200 baud rate
Serial.begin(115200);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH,
//the LED turns on, and the line is printed via bluetooth.
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // turn LED on:
Serial.println("A"); // write the line via bluetooth
delay(1000); // delay one second
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
所以在上面的代码中,Serial.println(“A”);发送到平板电脑,我可以看到在文本编辑器中打印的A.平板电脑看到在关键测试应用程序中按下A,但它将扫描码显示为0.由于某种原因,发送的每个字符显示为0,除了草图在Serial.println之后抛出的自动回车。我甚至尝试使用Serial.print,因为它不会抛出回车符,我也得到相同的扫描码0。
答案 0 :(得分:0)
不是从Arduino发送,而是首先通过Cool-Term尝试,3ms内部字符和3ms内部数据包延迟。在行结束时只使用0D而不是0D 0A 在发送任何内容之前请注意,您的BlueSMiRF应该处于HID模式,我无法在上面发布的代码中看到该部分。对于HID模式,您应该从凉爽的学期开始学习 $$$(CR) S~,6(CR) R,1(CR) $$$ 现在红色指示灯应该快速闪烁,连接你的手机,并从冷却期发送A(回车)你应该直接在手机上接收它。
享受!