SparkFun Pro Microの互換機をamazonで入手しました。安いですし、なかなかいいですね!

※上記のリンクは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でないの?と試しにやってみたところ、すんなり認識しました!

スポンサーリンク




というわけで、正しいリセット方法

このようにRSTGRDジャンパーで繋ぎ、素早く抜き差しして、通電させます。リセットに成功すると、再びシリアルポートで認識されますが、そのまま放置しておくと、また認識されなくなるようです。

それで、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個ではそのようになりました。

まぁ、冷静に考えれば、VCCRST繋いでも電流流れませんから、リセットできないのは当たり前なのですが、焦っていると頭が真っ白になって、なかなか気がつけないものですよね。

というわけで、ネットには親切な人が沢山いて、ググればいろいろなことを教えてもらえるわけで、その点には感謝しつつも、たまに間違った情報も混じっているので、何でもかんでも鵜呑みにせず、あれっ?と思ったら、冷静に確かめましょうってことですね。