実現したいこと
Arduino IDEでArduino LeonardoにPoke-controllerのスケッチを書き込みたい。
発生している問題・分からないこと
Poke-controllerForLeonardoをマイコンボードに書き込む際に「スケッチの書き込み中にエラーが発生しました」というメッセージが出てしました。
参考にしているサイトを基にPCのデバイスマネージャーを確認したところ、Arduino Leonardoを認識できていないことが分かりました。
正常であれば、「Arduino Leonardo(COM3)」と表示されるはずなのですが、自分のPCでは「USB cereal port(COM3)」と表示されている状態です。
Googleで一通り解決方法を調べて実行したのですが、認識されませんでした。
エラーメッセージ
error
1スケッチの書き込み中にエラーが発生しました 2 3avrdude: butterfly_recv(): programmer is not responding 4avrdude: butterfly_recv(): programmer is not responding 5avrdude: butterfly_recv(): programmer is not responding 6avrdude: butterfly_recv(): programmer is not responding 7avrdude: butterfly_recv(): programmer is not responding 8Found programmer: Id = "�"; type = � 9 Software Version = i.
該当のソースコード
//日本語キーボード //https://qiita.com/nak435/items/bbe04300c67c37febb7e #define HID_CUSTOM_LAYOUT #define LAYOUT_JAPANESE #include "HID-Project.h" #include "Poke-ControllerForLeonardo_Func.h" #include "UseKeyboardForNintendoSwitch_Func.h" #include <SoftwareSerial.h> #include "switch_controller_plus.h" #include "auto_command_util_plus.h" typedef enum { STATE0,//シリアル通信受信→受信成功 STATE1,//シリアル通信成功時 STATE2,//判定 } LOOPSTATE; LOOPSTATE LOOP_STATE; static String str = ""; static String str_buff = ""; static char chrread[MAX_BUFFER]; static int ProgState = 0; void setup() { Serial1_Init();//RX←0でのシリアル通信 Controller_Init();//コントローラーの準備 Keyboard_Init();//キーボードの初期化 } void loop() { //状態に応じて切り替える switch (ProgState) { case STATE1: SwitchFunction(); break; default: /* バグ回避を兼ねて状態の初期化を行う */ ProgState = STATE0; break; } } //データが利用可能な時に呼び出される関数(Serial1) void serialEvent1() { // one character comes at a time char c = Serial1.read(); if (c == '\n') { pc_report_str[idx++] = c; pc_report_str[idx++] = '\0'; ParseLine(pc_report_str); idx = 0; memset(pc_report_str, 0, sizeof(pc_report_str)); ProgState = STATE1; } else if (idx < MAX_BUFFER) { pc_report_str[idx++] = c; } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
シリアル変換器が認識されているようだったので、シリアル変換器⇔Arduino Leonardoの配線を中心に動いてみました。
・配線の繋ぎ直し、及び導線の全交換
・USBポートを変更
・他のUSBポートに入っているUSBを全て抜く
・Arduino IDEの再起動
・PCの再起動
・全作業工程の再実行
配線方法に関しては下記参考記事では
シリアル変換器TXD ⇔RX←0Leonardo
シリアル変換器GND ⇔GNDLeonardo
という繋ぎ方になっているのですが、別の方の記事を見たところ上記の繋ぎ方に加えて
シリアル変換器TXD ⇔RX←0Leonardo
シリアル変換器GND ⇔GNDLeonardo
シリアル変換器RXD⇔RX←1Leonardo
という繋ぎ方をしている方もおられたため、両方を試しています。
Arduino Leonardoは1機しか持っていないため、マイコンボード本体の故障については検証できていません。
補足
https://pokecontroller.info/SetLeonardo
上記記事を基に作業しています。
今回使用しているArduino Leonardoは新品未使用品で、こちらではまだ一回も書き込みを行っていない状態のものになります。
マイコンボード本体はONランプが点灯、Lランプが点滅しています。