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番の入出力ピンがあり、
ライブラリを使用することでこのピンを利用することができます。

USB Host Shield にある0から7番の入出力ピン
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打鍵の度にキーを放す必要があります。

キー操作によるLED明るさ変化の確認
キー操作によるLED明るさ変化の確認