1. //(1)シリアルLEDライブラリ(配布先 https://github.com/adafruit/Adafruit_NeoPixel)
  2. #include <Adafruit_NeoPixel.h>
  3. //(2)Arduino HID Project 2.4.4(配布先 https://github.com/NicoHood/HID#arduino-hid-project-244)
  4. #include <HID-Project.h>
  5. #include <HID-Settings.h>
  6. //LED制御用 I/O定義
  7. #define NUMPIXELS 1 // シリアルLED個数
  8. #define NUM_LOCK_LED 21 // NumLock/動作モード状態LEDポート番号
  9. //シリアルLED定義
  10. // D2812 = NEO_RGB
  11. // WS2812B = NEO_GRB
  12. Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, NUM_LOCK_LED, NEO_GRB + NEO_KHZ800); //NumLock LED制御Pin初期化
  13. //NumLock・LED制御
  14. int R[3]; // LED色 Red (0-255)
  15. int G[3]; // LED色 Green(0-255)
  16. int B[3]; // LED色 Blue (0-255)
  17. void setup()
  18. {
  19.   // put your setup code here, to run once:
  20.   //LED表示初期化(各動作モード別にRGBで色指定する)
  21.   //色1=緑
  22.   R[0]=0;
  23.   G[0]=10;
  24.   B[0]=0;
  25.   //色2=青
  26.   R[1]=0;
  27.   G[1]=0;
  28.   B[1]=10;
  29.   //色3=赤
  30.   R[2]=10;
  31.   G[2]=0;
  32.   B[2]=0;
  33.   //シリアルLEDライブラリ初期化
  34.   pixels.begin();
  35.   //HIDデバイス初期化(ホストLED状態取得用)
  36.   BootKeyboard.begin();
  37. }
  38. void loop()
  39. {
  40.   // put your main code here, to run repeatedly:
  41.   static int mode = 0;//色変更用
  42.   //ホスト側のLED状態を取得
  43.   int cur_led_sts = BootKeyboard.getLeds();
  44.   
  45.   //ホスト側NumLock状態はONか
  46.   if( cur_led_sts & LED_NUM_LOCK )
  47.   {
  48.     //LED点灯(key_modeに従いRGB指定する)
  49.     pixels.setPixelColor(0, pixels.Color(R[mode],G[mode],B[mode]));
  50.   }
  51.   else
  52.   {
  53.     //LED消灯(黒)
  54.     pixels.setPixelColor(0, pixels.Color(0,0,0));
  55.   }
  56.   //LED出力
  57.   pixels.show();
  58.   //色変更
  59.   mode++;
  60.   if(mode>=3)
  61.   {
  62.     mode = 0;
  63.   }
  64.   //500ms遅延
  65.   delay(500);
  66. }