フィギュア製作で、クリアパーツはポイントの1つとして使用することが多くなりました。
更にクリアパーツの使いみちを増やすために、LEDによる発光ができれば楽しいかなと思ったので、PICプログラムに挑戦してみました。
とは言っても、挑戦したのは、とっても簡単な超初心者っぽい内容ですので、ベテランの方が見れば、「なんや、それ~(笑)」という内容ですが、もし、PICマイコンに初めて挑戦しようとお考えの際は、参考の1つにでもどうぞ。何かの役には立つかと...。
とってもシンプルな初心者まるだしの内容ですが、PICマイコンを使うには、プログラムの書き方というより、このPICへのプログラムを書き込む部分(開発環境を揃える)が一番大きな問題でした。
どうやって「書き込む」という作業をするのか全く分からず、更に、何がわからないか分からない状態だったので...。
この「書き込む」という部分が一番の山かと思っているので、これを乗り越えれば、あとは楽しいプログラムにいろいろ挑戦できると思うと、夢が膨らみます。(大げさですね...。) でも、それぐらいの気持ちでやりましたので、皆さんのご参考になれば、幸いです。
PICを使わない場合のいわゆるLEDと抵抗と電源のみを使用するシンプルな構造はわかるんですが、PICとなると、今まで触ったことが無かったので、正直、どうしたもんかと思いました。 ただ、このまま使えないというのも製作できるフィギュアの範囲を狭めているようで、悔しいので、挑戦してみました。絶対、習得したいと思います。( ー`дー´)キリッ
以下、できる方が見れば、どーってことない内容だと思いますが、初心者にとって、特に自分にとっては、大きな一歩でしたので、備忘録として書いておきます。
Microchip社Webサイトの「開発ツール」のページよりダウンロードします。
PICへの書き込み用にライタとアダプタを購入します。今回、購入したのは以下のものです。
今回、インストールしたバージョンは、v2.26です。
以前、v3.10をインストールした時にエラーが出たので、安全を考えて少し古いバージョンを入れました。
インストールバージョンは、v1.33です。
コンパイルエラー解決その1.
コンパイル時に、__delay_ms関数の部分で警告が出る場合は、XC8をインストールしたフォルダの「include」フォルダ内のpic.hの149行目あたりの「__PICCPRO__」を「__PICC__」に変更する。
書き込みエラー解決その1.
「Target device was not found. You must connect to a target device to use PICkit 3.」というメッセージが出る場合は、PICkitからパワーをもらうと解決します。
ProjectのPropertiesメニューを選択して、そこからConfのPICkit3を選択します。次に、Option categoriesでPowerを選んで、Power target circuit from PICkit3にチェックを入れます。
これで、PICkit3からパワーをもらえます。
書き込みエラー解決その2.
PICへの書き込み時に、PICを認識しない場合は、IDEと一緒にインストールしたMPLAB IPEやMPLAB driver switcherを起動後、もう一度、X IDEでコンパイル後に書き込みをしたら、スムーズに書き込めました。
画像では、消えてますが、実際は、プログラム通りLEDが点滅しています。よかった(^^)。
多少、エラーなどは出ましたが、手順としては思ったよりも簡単でした。
PICへの書き込む方法がハードルを高くしている部分だと思うので、この書き込み作業の方法が解れば、あとはプログラムでいろんな点滅方法などができるようになるので、楽しくなりそうです。
サンプルはネットでもいろいろありますが、自分なりに理解したものを自分の保存用として、下に書いておきます。
/*
* File: main.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
// PIC12F683コンフィグレーションビット設定
#pragma config FOSC = INTOSCIO // Oscillator Selection bits
#pragma config WDTE = OFF // Watchdog Timer Enable bit
#pragma config PWRTE = ON // Power-up Timer Enable bit
#pragma config MCLRE = OFF // MCLR Pin Function Select bit
#pragma config CP = OFF // Code Protection bit
#pragma config CPD = OFF // Data Code Protection bit
#pragma config BOREN = ON // Brown Out Detect
#pragma config IESO = OFF // Internal External Switchover bit
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit
// クロック周波数指定
// (__delay_ms()関数が必要としているため)
#define _XTAL_FREQ 1000000
int main(int argc, char** argv) {
// PICマイコン初期化
OSCCON = 0x40; //クロック周波数を1MHzに設定
ANSEL = 0x00; //すべてのピンをデジタルモードに設定
TRISIO = 0x00; //すべてのピンを出力に設定
CMCON0 = 0x07;
while(1)
{
GP2 = 1;
__delay_ms(500);
GP2 = 0;
__delay_ms(500);
}
// ここには到達しない
return (EXIT_SUCCESS);
}
なかなかPICをお仕事で使う場面は出ないと思いますが、個人的な作品で使うかもしれないので、プログラムを思い通りに書けるようにがんばります。
PICマイコンについてはマルツオンラインに入門編ページがあります。すごく参考になりました。
もちろん、PICやLEDなど、いろいろ買えますので、挑戦してみようという方はどうぞです。