Skip to content

shigobu/CH9329_Keyboard

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CH9329_Keyboard Library for Arduino

Check Arduino status Compile Examples status Spell Check status

このライブラリと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」で検索し、インストールを押してください。


手動インストールの方法

  1. 最新の Releases で「Source code(zip)」をクリックして、ソースコードをダウンロードする。

  2. Arduino IDE を起動する。

  3. 「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール…​」を選択する。

  4. ダウンロードしたzipファイルを選択し「開く」を押す。

ATtiny202 (またはフラッシュサイズの小さいマイコン) サポート

ATtiny202のようなフラッシュサイズが2KB以下のマイコンでは、print関数を無効化することでフラッシュ使用量を削減しています。 これは、FLASHEND マクロ使用して自動で判定されます。
前述の通り、フラッシュサイズが2KB以下の場合は、print関数が使用出来ません。

Serial を使わない方法

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送信関数。ライブラリに含まれていません。

サポートしているマイコンボード

Serial(Streamを継承している)が利用可能なボード全て。
または、シリアル通信ができるボード全て。

謝辞

いちかわ(ICHI) (Twitter) さんが公開している 和訳したデータシートはとても役に立ちました。

License

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

About

CH9329 Keyboard Library for Arduino

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 74.8%
  • C 25.2%