<< もどる |
C言語でプログラミング |
コンピュータのプログラムを作成するには、LOGO言語以外にもコンピュータ言語があります。C言語は、ウィンドウを使わないプログラムや小さなコンピュータで利用できる小さなプログラミングで利用されるプログラミング言語です。高速に動作するので、工業製品に使われることがあります。 |
C言語は、ゲームのようなウィンドウ画面を作るにはライブラリーがあれば良いですが、最初から作るのは大変です。 しかし、コンピュータの機能を直接扱うので、おにぎり1個ぐらいの価格のマイコンと呼ばれる小さなコンピュータでも利用でき、高速に動作します。コンピュータの機能を直接扱うために、マイコンごとにコンピュータが持っている機能が異なるので、マイコンごとにプログラミングを合わせる必要が出てきます。この記述をするためには、100ページ以上あるマイコンの仕様書を調べてからプログラミングすることになります。教育用として、この作業を簡単にしたマイコンをボードにセットした基板もありますが、回路が増えて重くかさばり価格が高くなり、実行速度が下がるために、実用品としての性能が落ちてしまいます。 |
1.PICマイコンでプログラミングの準備 |
マイコンを使うために必要な物を調べました。 | ||||||||||||||||||
|
プログラミングソフトをセットアップする | |||||||||
|
2.PICマイコンの使い方を考える |
PICマイコンでラジコン飛行機の発見ブザーを作ります。 |
発見ブザーは、ラジコン飛行機の送信機の操作で、飛行機に載せたブザーを鳴らして、草むらに着陸した飛行機を発見するのに使います。 |
![]() |
![]() ![]() ![]() |
(1)今回使うのは PIC12F683 でいいかな? |
![]() |
(2)PIC12F683のデータシートを調べる 詳しくはデータシートを調べる |
|
![]() ![]() GP0~GP2,GP4~GP5は入出力として使用でき 各ピンは最大25mAの電流が流せる。 GP3は入力専用で出力には使用できない。 |
|||||||||||||||||||||||||||
|
(3)PICの使い方を決める | |||
|
3.プログラムの手順を考える |
受信機から、デジタル信号が出ます。 デジタル信号は、20msec程度の周期で、送信機のレバーがニュートラルのときの1.52msecを中心に1~2msec程度に変化します。 そこで、送信機のレバーを下げたときと、上げたときにブザーが鳴るようにしたいと思います。
|
||||
<手順> | ||||
1 | タイマー0を使って、0.01msecごとに受信機からのGP4を調べ、信号がONになっている回数を調べる。 | |||
2 | 信号が162回以上ONだったら、GP5をONにする。 | |||
3 | 信号が142回以上ONだったら、GP5をOFFにする。 | |||
4 | 信号が142回より短かったら、GP5をONにする。 | |||
4.C言語によるプログラミング |
![]() |
1 | プロジェクトの作成からはじめます。 |
![]() |
|
![]() |
Choose Project → Standard Project ![]() |
![]() |
Select Device → Family = Mid Range 8-bit → PIC12F683 ![]() |
![]() |
Select Header → 変更無し ![]() |
![]() |
「4.Select Plugin Bord」はパス。 |
![]() |
Select Compiler → XC8 ![]() |
![]() |
Select Project Name and Folder → Project Name = PIPI → Encoding = ISO-2022-JP |
以上でProjectに PIPI が追加される。 | |
![]() |
2 | ソースファイルを開きC言語で記述する画面にします。 |
Projects の PIPI のSource File を選び、メニューから File → New File を選択する ![]() ![]() |
|
![]() |
Choose File Tipe → Categries = MicrochipEmbedded → XC8 Compiler 、 FileTipe = main.c |
![]() |
|
![]() |
Name and Location → File Name = PIPI1 、 Extenion = c |
![]() |
|
以上でC言語を記述するソースファイルの画面になる。 | |
![]() |
|
![]() |
/* から */までの間の注釈欄を作品名などに書き換える。 |
![]() |
3 | ソースにコンフィグレーションを書きます。 |
選択するだけで、コンフィグレーションが書き出されます。コンフィグレーションでPICの基本的な使い方を指定します。 | |
![]() |
MLAB X IDEの画面で、 Production → Set Configuration Bits を左クリックする。 |
![]() |
|
![]() |
Option を選択する。 |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
<コンフィグレーションの設定項目> |
FOSC:外部クロックを使うか、内部クロックを使うか → INTFCCLK内部を使う WDTE:ウォッチドッグタイマー(フリーズしたときに復帰させる処理を書くときに使う)を使うか → OFF使わない MCLRE:ハードウェアリセット(スイッチで再起動する)を使うか → OFF使わない CP:プログラムプロテクト(プログラムの読み出しを保護)を使うか → OFF使わない CPP:データプロテクト(データの読み出しを保護)を使うか → OFF使わない BOREN:ブラウンアウト(電源が不安定になったときの処理)を使うか → ONにしてブラウンアウト発生時にマイコンを停止する IESO:2段階クロック(外部クロックを使う前に内部クロックを使う)を使うか → OFF使わない FCMEN:バックアップクロック(外部クロックが壊れたら内部クロックを使う)を使うか → OFF使わない |
4 | メインルーチン、サブルーチンを書き加えます。 |
設 定 |
![]() |
メ イ ン ル | チ ン |
![]() |
サ ブ ル | チ ン |
![]() ![]() |
5 | PICに書き込む形式にビルドして完成です。 |
![]() |
![]() |
![]() |
|
![]() |
Loding completed と表示されれば成功です。 |
5.PICとPICkit3をつなぎプログラムを書き込むアダプターを作る (費用:200円程度) |
PICのピンに直接、PICkit3をつながないで、ソケットを使ってつなぐようにすると便利です。 |
![]() |
![]() |
![]() |
ソケットと10KΩの抵抗で作ります。 小さいソケットでも16ピンの穴があるので、 半分を使います。 レバーを動かして、PICを外したり、止めたりします。 |
6.PICブザーを作る (費用:150円程度) |
PICがブザーを鳴らす回路を作ります。 |
![]() |
ダイオード、コンデンサー、抵抗、トランジスタ、ブザー、PICソケットを使います。 全部で150円程度です。 |
![]() |
|
<抵抗R1> マイコンの出力電圧 = 5V ベースエミッタ間飽和電圧 = 1.0V ベース電流 = 負荷の電流 ÷ 直流電流増幅率 = 30mA ÷ 200 = 0.15 mA (2倍して0.3mA) 抵抗R1 = (マイコンの出力電圧 - ベースエミッタ間飽和電圧) ÷ ベース電流 = ( 5V - 1.0V ) ÷ 0.3mA = 10 kΩ |
7.PICへ書き込む |
MPLAB X IDE を起動してから、 パソコン→PICKIT3→書き込みアダプター→PIC をつなぎ 以下の手順を実行します。 |
![]() |
プロジェクトが開いていなかったら、開きます。 |
![]() |
|
![]() |
書き込みツールを PICkit3に指定します。 |
![]() |
|
![]() |
供給するPowerを指定します。 |
![]() |
|
![]() |
電圧を4Vにします。 |
![]() 4Vにします。 他の電圧だとうまくいかないようです。 |
|
![]() |
![]() |
![]() |
|
![]() |
|
![]() |
Verify completeと表示されれば成功です。 |
8.完成 |
ビルドしたプログラムをPICに書き込んだら、完成です。 動作を確かめ、問題があったら、プログラミングからやり直します。100回ほど書き直しができます。 |
![]() 1.使っている受信機のチャンネルにつなぎます。 2.受信機のスイッチを入れると、プログラムでスティックの位置を初期値として、設定します。 3.つないだチャンネルのスティックを動かすと、初期値から外れるのでブザーが鳴ります。 |
防犯ブザーの利用 |
ブザーは、1個120円程度です。ネットで購入すると郵送料もかかります。ところが、100円ショップに行くと防犯ブザーが100円で売られています。これは使えそうだと思い、試してみました。 |
![]() 電池は、4.76Vなので、受信機の電源をそのまま利用できそうです。 棒を引き抜くと、そのスイッチ部分の回路が切れ、ブザーが鳴るようです。 |
![]() ソケット部分からつながる回路をたどり、 ブザーの回路をオンにしているトランジスタをハンダでショートさせます。 |
電池の代わりにPICでブザーを鳴らす回路をつなぎます。 |
![]() |
ブザーは、共鳴部分となる空間ごと切り取って使います。 |
![]() |