USBホストシールドでキーボードを使ってみる(Arduino)
では、このキーボードを使って、
デジタル3番ピンに接続されたLEDの
明るさを、PWM出力で変化させてみます。
PWMの値は、
キーボードの ”u”、”d”キーを使って、
10~250までを10刻みで変化させることにします。
PWMの初期値は、120 とします。
回路は図の通りです。
この回路図の作図には fritzing を利用させて頂いております。
https://fritzing.org/home/
※この図の USB Host Shield は、私の製品とは違うものですが、
配線位置は同じです。
この、USB Host Shield で、
デジタルピン8番~デジタルピン13番を使用していますので、
このピンを使用する場合は、使用用途に注意が必要です。
※製品により使用ピンは異なります。
また、この USB Host Shield には、
0から7番の入出力ピンがあり、
ライブラリを使用することでこのピンを利用することができます。
LEDの明るさ変化のスケッチは、
スケッチ例の ”USBHIDBootkbd” に、
少し書き足させて頂くことにします。
記述内容は、
・グローバル変数の追加記述
・void KbdRptParser::OnKeyPressed(uint8_t key)
関数への追加記述
・void setup() 関数への追加記述
となります。
追加記述した部分のスケッチです。
~ 略 ~
// グローバル変数宣言
int led_pin = 13; // LED接続ピン
int led_val = 120; // PWM値保持
void KbdRptParser::OnKeyPressed(uint8_t key)
{
Serial.print("ASCII: ");
Serial.println((char)key);
// 'u' 'd'キー時にPWM値を設定(加算減算 10~250)
if ( 'u' == (char)key && led_val < 241 ) {
led_val += 10;
} else if( 'd' == (char)key && led_val > 19 ) {
led_val -= 10;
}
// LED指定ピンへPWM値を出力
analogWrite( led_pin, led_val );
};
void setup()
{
Serial.begin( 115200 );
#if !defined(__MIPSEL__)
while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
Serial.println("Start");
if (Usb.Init() == -1)
Serial.println("OSC did not start.");
delay( 200 );
HidKeyboard.SetReportParser(0, &Prs);
// LED指定ピンへPWM値を出力
analogWrite( led_pin, led_val );
}
~ 略 ~
アイコンメニューの〔検証〕をクリックし、検証します。
問題が無ければ、
アイコンメニューの〔マイコンボードに書き込む〕をクリックし、
マイコンボードに書き込みます。
キーボードの、”u”、”d” キーを打鍵して、
LEDの明るさが変化すればOKです。
※このとき、連続入力(押しっぱなし)を受け付けていませんので、
1打鍵の度にキーを放す必要があります。