0

Bluetooth HID モジュール (bluesmirf) を備えた arduino を使用して、Galaxy タブの音量を制御しようとしています。配線されている小さなボタンを押すと、キーボードと同じようにASCIIテキストがタブレットに送信されるようにarduinoのセットアップがあり、これは正常に機能します。この「Bluetooth キーボード」用のカスタム キーボード レイアウト ファイルを作成して、タブレットが Bluetooth 経由で arduino からキープレスを受信したときに、ボリューム、ミュートなどの適切な項目を制御できるようにしたいと考えました。ただし、keytest を使用してブルートゥースモジュールからの着信ボタン押下をキャプチャします。スキャンコードは常に0です.Keytestはキーを正しく読み取り、Aが送信されたときにkeycode_aとして表示しますが、そのキーのスキャンコードは一意ではなく常に0です識別子。奇妙なことに、

理解できません。私は何か間違ったことをしているに違いありませんが、私はまだ新しい/学習しているので、見逃しているに違いありません. タブレットがスキャンコードを受信しないと、カスタム キーボード レイアウトをセットアップして、やりたいことを実行できません。

必要に応じて 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 も取得します。

4

1 に答える 1

0

Arduino から送信する代わりに、最初に Cool-Term 経由で試してみてください。文字間遅延は 3 ミリ秒、パケット間遅延は 3 ミリ秒です。行末では、0D 0A の代わりに 0D を使用してください 何かを送信する前に注意してください。BlueSMiRF は HID モードである必要があります。上記のコードにその部分が表示されません。HID モードの場合は、クール ターム $$$ (CR) S~,6 (CR) R,1 (CR) $$$ に従って実行する必要があります。赤い LED が非常に速く点滅しているはずです。携帯電話を接続し、クール タームから送信します。 A (キャリッジ リターン) は、電話で直接受け取る必要があります。

楽しみ!

于 2017-03-16T11:26:38.013 に答える