マイコンをUSBデバイスとして設定する - KawaSwitch/Poke-Controller GitHub Wiki

Windows10の環境での説明を行います
OSが違う方は適宜読み替えてください
疑問や不明な点があればお気軽にIssueまで

別OSの参考ページ
macOSでArduino UNO R3にDFUモードでプログラムを書き込む by 酢ろぐ! 様
(最終アクセス: 2020/01/24)

準備物

  • メス-メスのジャンパワイヤ1本
  • Joystick.hex
    リリースページの最新版のAssets欄から"Joystick.hex"をダウンロードできます
  • dfu-programmer
    ここからダウンロードできます
    ダウンロード後は展開してdfu-programmer.exeのみ使います

書き込むマイコンのMCUの名称を把握しておく
Arduino UNO R3であればatmega16u2となります

注意
使用するマイコンのMCUがatmega16u2でない場合は自分でJoystick.hexを作成してください
作成の仕方はこのページの一番下のセクションに記述しています

手順

1. Poke-Controllerをダウンロードしておく

Poke-Controllerの使い方にて説明しています

2. Joystick.hex, dfu-programmer.exeを配置する

ダウンロードしたJoystick.hexとdfu-programmer.exeをPoke-Controllerのフォルダ内に置く
※説明を簡単にするためにここに置いています
dfu-programmer.exe

3. シェルを開いておく

コマンドを実行するための画面を開いておきます

  1. Poke-Controllerフォルダ内で何も選択していない状態で"Shiftキー"を押しながら右クリック
  2. "PowerShellウィンドウをここで開く"をクリックして開く

powershell

もしくは...
上記のPoke-Controllerの使い方ではAnaconda Promptを導入しているのでこれでも大丈夫です
この場合, Poke-Controllerディレクトリまでcdコマンドで移動しておいてください

4. dfuモードに入る準備をする

次の画像のようにジャンパワイヤを繋いでショートさせる
DFUモード_ジャンパワイヤ

5. PCに接続しdfuモードに入った状態で接続する

USBでPCに接続したら, 2秒ほど待ってジャンパワイヤを外しショートを解除する
dfuモードに入れたかどうかは次のコマンド実行時の返答で判断できます

.\dfu-programmer.exe [マイコン名] erase
(日本語環境では\と表記されます)

[返答1]
dfu-programmer: no device present.
→ dfuモードに入っていない, もしくは正しく接続できていません
ジャンパワイヤを外しているか, USBケーブルを正しく接続しているかを確認してください

[返答2]
'dfu-programmer.exe' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
→ dfu-programmer.exeがPoke-Controllerフォルダ内に配置されていません

[返答3]
Checking memory from 0x0 to 0x2FFF... Not blank at 0x1.
Erasing flash... Success
もしくは
Checking memory from 0x0 to 0x2FFF... Empty.
Chip already blank, to force erase use --force.
→ 成功しています

6. 次のコマンドを順番に実行していく

1行ずつ下記コマンドを実行してください

.\dfu-programmer.exe [マイコン名] erase (5で実行していなかったら)
.\dfu-programmer.exe [マイコン名] flash .\Joystick.hex
.\dfu-programmer.exe [マイコン名] reset

2番目実行時に Success の文字が出ていれば成功です
3番目は安全に取り外すためのおまじないとして実行することをお勧めします

これでマイコン側の準備は完了です!
USB接続を外しても内容は消えないので安心してください

マイコンプログラム作成とJoystick.hexファイルの作成方法について

デフォルトMCUコマンドとデフォルト/自作Pythonコマンドを使うのであれば上記の方法でOKです

MCUプログラムを追加して使用したい場合は, 自分でこのファイルを作成して書き込む必要があります
また, MCUがATmega16U2でない場合も同様です

自分でmakeして.hexを生成したい場合は以下の記事を参考にしてみてください
Issueで質問してもらえれば分かる範囲で回答いたします

Windowsで.hexファイルを作成する by ゲーム好きの和菓子 様
(最終アクセス日: 2020/01/24)

make時にエラーが出ることがあるのでその際は以下のIssueも参考にしてください