はじめに
Arduino Uno R4 WiFiの互換機でKeyboard.h
を使い、HID(Human Interface Device)開発をしていると、突然書き込みができなくなりました。
普通はすぐに書き込みが終わりますが、かなり時間がかかり、以下のようなエラーが出ました。
Cannot perform port reset: 1200-bps touch: opening port at 1200bps: Invalid serial port
No device found on COM5
Failed uploading: uploading error: exit status 1
右下に表示されているのでArduino IDEに認識自体はされており、シリアル通信は正常にできている状態でした。
原因
通常、Upload時にはマイコンが自動で書き込みモードに切り替わります。
しかし、Keyboard.begin()
関数が実行されることによりマイコンがHIDとして認識され、自動で書き込みモードに切り替わらないことが原因です。
※厳密にはこの言い方は正しくないかもしれません。
Mouse.h
のMouse.begin()
でも同様のことが起こります。
解決方法
手動で書き込みモードにすることにより、新しいデバイスと認識され、ポートに新たに出てきます。(私の場合COM7)
これを選択すると、正常に書き込むことができます。
書き込みモードにする方法
公式ドキュメントに以下のような記述があります。
この通り、RESETボタンを2回押すと書き込みモードにできるようです。
私の場合、1回→2回と押すとできました。
おまけ Keyboard.end()
を実行しても書き込めない
KeyboardのドキュメントにKeyboard.end()
関数があったので実行してみたが、書き込めるようにはなりませんでした。