ebayでPro Micro ATmega32U4 3.3V 8MHzを購入しました。このPro MicroをArduino IDE(Ver 1.6.7)、windows7(Professional)でプログラムが作成できるように、プログラム開発環境を構築します。この基板は、SparkFun Pro Microとして動作させることができます。「Pro Micro & Fio V3 Hookup Guide」に従ってプログラム開発環境を構築します。
購入した Pro MicroをPCに接続すると、次のようにデバイスマネージャーにPro Micro 3.3と表示されます。
Windowsドライバのインストール
Pro Micro用のWindowsドライバを「FIO AND PRO MICRO DRIVERS」からダウンロードし、windows7にインストールします。インストールが完了すると、次のようにデバイスマネージャーにSpankFun Pro Microと表示されます。
Arduinoアドオンのインストール
Arduino IDEでPro Microのプログラムを開発するには、開発用のアドオンをArduino IDEにインストールする必要があります。Arduino IDEを起動し、ファイル→環境設定を選択し、「Additional Boards Manager URL」につぎのURLを設定して、OKボタンを押します。
https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
Arduino IDEのメインメニューからツール→マイコンボード→ボードマネージャーを選択し、ボードマネージャーを表示します(すでにインストールされた画面をキャプチャしています)。
表示されたボードマネージャーに「sparkfun」を入力して、検索された一覧表から「SparkFun AVR Boards by SparkFun Electronics」を選択してインストールします。
このインストールにより、ツール→マイコンボードの選択により、次のプルダウンメニューが表示され、「SparkFun Pro Micro」を選択するとマイコンボード「Pro Micro」の設定が終了します。
コンパイルエラー「Board promicro (platform avr, package SparkFun) is unknown」
コンパイルしたときに「Board promicro (platform avr, package SparkFun) is unknown」エラーになる場合があります。これは、新規に「SparkFun AVR Boards by SparkFun Electronics」をインストールしたとき、バージョンが更新され、古いバージョンと新しいバージョンが混在するときに発生するようです(「Arduino IDE suddenly not recognizing sparkfun boards」)。私の場合、フォルダ「C:\Users\(xx)\AppData\Local\Arduino15\packages\SparkFun\hardware\avr」が次のようになっていたので、フォルダ「1.1.3」を削除してコンパイルするとエラーがなくなりました。
LEDの点灯プログラム
構築されたPro Microのプログラム開発環境を使って、ボードに実装されているTXとRXのLEDの点灯プログラムを作成します。更に「tomosoft wu……」をシリアル出力させ、Teratermに表示させます。
TX LEDはあらかじめ定義されたマクロによりコントロールされます。シリアルは9600BPSの転送速度を持ち、デバイスドライバに表示されているCOMポートに出力されます。LED点滅は、TX LEDとRX LEDが、500msと1秒を空けて繰り返します。Serial.begin(speed) は、シリアル通信のデータ転送レートをbps(baud)で指定します。詳細については、Arduino 日本語リファレンスを参照してください。
int RXLED = 17; // The RX LED has a defined Arduino pin void setup() { pinMode(RXLED, OUTPUT); // Set RX LED as an output // TX LED is set as an output behind the scenes Serial.begin(9600); //This pipes to the serial monitor Serial1.begin(9600); //This is the UART, pipes to sensors attached to board } void loop() { Serial.println("tomosoft wu......"); // Print "Hello World" to the Serial Monitor Serial1.println("Hello!"); // Print "Hello!" over hardware UART digitalWrite(RXLED, LOW); // set the LED on TXLED0; //TX LED is not tied to a normally controlled pin delay(500); // wait for a 500ms digitalWrite(RXLED, HIGH); // set the LED off TXLED1; delay(1000); // wait for a second }
Teratermへの出力を次に示します。