chipKIT coreを使用することにより、Arduino IDEでArduinoと同じ方法でプログラムを作ることが可能となります。

基本的にはPIC32MXなのでmikroC PRO for PIC32等のPIC32用コンパイラを使って開発しますが、chipKITの導入で現在人気のあるArduino IDEでスケッチをつくるのと同じ方法でプログラムを作成してボードに書き込むことができます。

 

■Arduino IDEでchipKIT coreを使えるようにする

 

1.Arduino IDEを公式サイトからダウンロードしてインストールします。

https://www.arduino.cc/en/Main/Software

※web editionではなくダウンロードして利用するIDEを選択してダウンロードしてください。

 

2.Arduion IDEを起動し、”ファイル”→”環境設定”をクリックします。

 

3.”追加のボードマネージャのURL”と書かれた所に次のURLをコピーして貼り付け、OKボタンを押します。

https://github.com/chipKIT32/chipKIT-core/raw/master/package_chipkit_index.json

 

4.”ツール”→”ボード”→”ボードマネージャ”の順でクリックします。

 

5.ボードマネージャが表示されたら”検索をフィルタ・・”と書かれた所に chipkit と入力して検索します。

 

6.クリックして選択すると”インストール”というボタンが表示されますので、クリックしてインストールします。

7.”ツール”→”ボード”で使えるボード一覧が選択できます。この中に、上記で正しくchipKIT coreがインストールされると下図の通り”MikroElektronika Clicker 2″が選択できますので、これを選択します。

選択できたら、これで使えるようになりました。

 

■最初の一歩 ~LEDを点滅させる~

 

まずは、簡単に使い方を試してみます。最初にLチカ(LED点滅)を試してみます。

書式はArduinoと全く同じです。Clicker2 for PIC32MXには2つのLEDと2つのタクトスイッチが実装されています。このLEDとスイッチを利用してみます。最初はLEDの点滅だけを試してみましょう。

LEDは”LD1″がRE3に、”LD2″がRA10に接続されています。PICの場合ピン名はRE3やPORTE.B3などと「ポート名+ビット」で表現しますが、Arduino IDE内では番号で記述します。どのピンが何番なのかは対応表がありますので、こちらをご参照ください。PDF版はこちらです。

上の図を見ていただくと分かるとおり、LED1は85、LED2は86となっています。よってこの番号を指定することになります。

次のようにスケッチを記述してみましょう。

const int LED1 = 85; 
const int LED2 = 86;

void setup() {

  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
     
}

void loop() {

  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, LOW);
  delay(100); 
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  delay(100); 

}

 

LED1とLED2を交互に100ミリ秒間隔で点滅させる内容です。

では、コンパイルしてボードにプログラムを書き込みましょう。パソコンにClicker2 for PIC32MXを接続してください。初回接続時は、デバイスドライバーがインストールされますので、インストールを確認してから次にすすんでください。

Clicker2 for PIC32MXのブートローダー(マイコンにプログラムをダウンロードするファームウエア)は、あらかじめClicker2 for PIC32MXのPIC32MX460F512Lに書き込まれています。またこのブートローダーは、USB HIDデバイスとして認識されるため、別途デバイスドライバーを用意する必要はありません。自動的にインストールされます。

 

プログラムが正しいことを確認したら、”マイコンボードに書き込む”ボタンを1回押してください。

スケッチがコンパイルされます。

その後、下部のメッセージ欄に「*** Enter programming mode now. ***」と表示されます。この表示が出たら3秒以内にClicker2 for PIC32MXボードのリセットスイッチ(赤いタクトスイッチ)を1回押してください。

これで自動的にブートローダーモードに入り、今コンパイルしたスケッチがマイコンにダウンロードされます。

書き込みが正しく実行されると下図のようにフラッシュメモリーの書き込みがdone、ベリファイがdoneになります。プログラムが正しければ、ボード上でプログラムが動作します。(書き込み終了からプログラム動作開始まで3秒程度かかります。)

ボード上のLED1とLED2が交互に点灯していることを確認してください。

これで最初のプログラム作成は完了です。

 

■もう1つスケッチを試してみる ~ボタン入力と点滅させる~

 

ここでは、タクトスイッチを使ったスケッチを記述してみます。

変数に値を代入して点滅時間を変更する内容も確認してみてください。

const int LED1 = 85; 
const int LED2 = 86;
const int SW1 = 87;
const int SW2 = 88;

int SW1_State = 0;
int SW2_State = 0;

unsigned long milsec = 100;

void setup() {

  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(SW1, INPUT);
  pinMode(SW2, INPUT);
     
}

void loop() {
  SW1_State = digitalRead(SW1);
  SW2_State = digitalRead(SW2);
  
  if(SW1_State == LOW){
    milsec = 100;
  }
  if(SW2_State == LOW){
    milsec = 1000;
  }

  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, LOW);
  delay(milsec); 
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, HIGH);
  delay(milsec); 

}

 

スイッチは、2つあり片方は87番、もう一方は88番です。よって最初にその内容を定数として記述してあります。

このスイッチはアクティブローです。スイッチを押していない時はHレベル、押したときがLレベルになります。

プログラムの内容は最初プログラムは2つのLEDが100ミリ秒間隔で交互に点滅しています。左型のスイッチ(87)を押すとそのまま100ミリ秒間隔で点滅します。右側のスイッチ(88)を押すと点滅する間隔が1秒間隔となります。再度左のスイッチを押すと100ミリ秒間隔となります。

 

そのほか、Arduinoの様々な命令が使えますので、Arduino IDEで作るPIC32MXの世界をお楽しみください。

 

■補足情報(適宜修正いたします)

 

バッテリーの電圧を読み取る場合の注意点です。Clicker2回路図を見ると、BATTERY VOLTAGEピンを読み取る前にBATT SENSE ENABLEピンをローに設定する必要があることがわかります。 読み取り後にBATT SENSE ENABLEをハイに戻すことをお勧めします。これは、センシング抵抗を介したバッテリの放電を防ぎます。