このライブラリとCH9329チップを使用すると、USB機能の無いAruduinoボードをキーボードにすることができます。 シリアル通信モード-モード0に対応しています。
詳細は、Arduino公式のドキュメントを参照してください。 https://www.arduino.cc/reference/en/language/functions/usb/keyboard/
#include "CH9329_Keyboard.h" void setup() { Serial.begin(CH9329_DEFAULT_BAUDRATE); CH9329_Keyboard.begin(Serial); }
SoftwareSerialも使えます。
#include "CH9329_Keyboard.h" #include <SoftwareSerial.h> const byte rxPin = 2; const byte txPin = 3; SoftwareSerial mySerial (rxPin, txPin); void setup() { mySerial.begin(CH9329_DEFAULT_BAUDRATE); CH9329_Keyboard.begin(mySerial); }
他、オリジナルのキーボードライブラリとほとんど同じです。 https://www.arduino.cc/reference/en/language/functions/usb/keyboard/
最新版は、Arduino IDE のライブラリマネージャーからインストールできます。「CH9329_Keyboard」で検索し、インストールを押してください。
手動インストールの方法
-
最新の Releases で「Source code(zip)」をクリックして、ソースコードをダウンロードする。
-
Arduino IDE を起動する。
-
「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール…」を選択する。
-
ダウンロードしたzipファイルを選択し「開く」を押す。
ATtiny202のようなフラッシュサイズが2KB以下のマイコンでは、print関数を無効化することでフラッシュ使用量を削減しています。
これは、FLASHEND
マクロ使用して自動で判定されます。
前述の通り、フラッシュサイズが2KB以下の場合は、print関数が使用出来ません。
ATtiny202 でテストしていると、Serial オブジェクトがフラッシュの大部分を占めていることが判明しました。そこで、Serial を使わない方法を用意しました。
CH9329_Keyboard.begin();
こうすると、 write
関数と print
関数が使えなくなります。その代わり、 press
release
releaseAll
getReportData
を使用して、UARTへ送信すべきデータを取得します。
重要なのは、getReportData
関数です。これは、press
release
releaseAll
関数で登録したキー押下情報を、CH9329プロトコルに変換して返します。
「W」キーを押して、離すコードは以下のようになります。
//global variable uint8_t reportData[REPORT_DATA_LENGTH] = {}; //setup or loop int length = 0; CH9329_Keyboard.press("w"); length = CH9329_Keyboard.getReportData(reportData, REPORT_DATA_LENGTH); USART0_sendValue(reportData, length); //UART送信関数。ライブラリに含まれていません。 CH9329_Keyboard.release("w"); length = CH9329_Keyboard.getReportData(reportData, REPORT_DATA_LENGTH); USART0_sendValue(reportData, length); //UART送信関数。ライブラリに含まれていません。
いちかわ(ICHI) (Twitter) さんが公開している 和訳したデータシートはとても役に立ちました。
Copyright (c) Arduino LLC. All right reserved.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA