SparkFun Pro Microの互換機をamazonで入手しました。安いですし、なかなかいいですね!
KKHMF 2個 Leonardo Pro Micro ATmega32U4 5V/16MHz ブートローダ マイクロ USB Pro Mini 開発ボード Arduinoに対応
※上記のリンクはamazonへのリンクとなっています。
実はこのボードには「ATmega 32U4 5V, 16MHz」と「ATmega 32U4 3.3V, 8MHz」があるのですが、Arduino IDEで書き込みを行う時にちょっと注意が必要で、うっかり5V版に3.3V版の設定で書き込みを行なってしまうと、その後USB(シリアルポート)で認識できなくなってしまうのです!
しかも、SparkFunのボード一覧から「SparkFun Pro Micro]を選ぶと、デフォルトでは3.3V版の方が選ばれている*ため、やってしまいがちなのです。
*この記事では、Arduino IDE ボードマネージャから、SparkFunのボードをインストールする方法については割愛してしています。
書き込む前に、正しいプロセッサが選ばれているか今一度確認しましょう!
USBケーブルを差し込み直しても、PCを再起動しても全く認識しません。「うわ〜やってもうた!」と思い、何か対策はないのかとググってみたところ、とあるブログを発見。RSTピンとVCCピンを二度ほど素早くショートさせればリセットできるというのです。
…で、書かれている通りに、Arduino IDEの書き込みボタンを押した後、RSTとVCCにジャンパーを挿入し、二度ほど素早く抜き差ししてみたのですが、何度やっても状況は改善せず…。
意気消沈しボードを処分しようかと思ったのですが…ちょっと待てよ。RSTとVCCっておかしくないか?と思い、RSTとGNDでないの?と試しにやってみたところ、すんなり認識しました!
というわけで、正しいリセット方法
このようにRSTとGRDをジャンパーで繋ぎ、素早く抜き差しして、通電させます。リセットに成功すると、再びシリアルポートで認識されますが、そのまま放置しておくと、また認識されなくなるようです。
それで、Lチカのみのような短いサンプルスケッチを用意し、ボード設定で「ATmega 32U4 5V, 16MHz」が選ばれたことを確認してから、書き込みボタンをクリックし、すぐに前述のリセットを実行します。
#define TX_LED 30
#define RX_LED 17
void setup() {
pinMode(TX_LED, OUTPUT);
pinMode(RX_LED, OUTPUT);
}
void loop() {
digitalWrite(TX_LED, LOW);
delay(1000);
digitalWrite(TX_LED, HIGH);
delay(1000);
digitalWrite(RX_LED, LOW);
delay(1000);
digitalWrite(RX_LED, HIGH);
delay(1000);
}
一度5V版の書き込みに成功した後は、継続してシリアルポートにて認識されるようになり正常に戻ると思います。自分が所有している個体2個ではそのようになりました。
まぁ、冷静に考えれば、VCCとRST繋いでも電流流れませんから、リセットできないのは当たり前なのですが、焦っていると頭が真っ白になって、なかなか気がつけないものですよね。
というわけで、ネットには親切な人が沢山いて、ググればいろいろなことを教えてもらえるわけで、その点には感謝しつつも、たまに間違った情報も混じっているので、何でもかんでも鵜呑みにせず、あれっ?と思ったら、冷静に確かめましょうってことですね。