・このボードでプログラムを作成する場合は、初期設定プログラムAVRtraining.bas に、
オリジナルのプログラムを書き足して下さい。
・この、「初期設定プログラム」では、 トレーニング・ボードに搭載されている回路に合わせて、
AVRマイコンの動作を設定しています。
・内容を詳しく知りたい方は、BASCOM-AVRのリファレンス・マニュアルと、ATmega88Pの
マニュアルを参照して下さい。
1.プログラムの作成手順
(1) BASCOM-AVRを起動して、メニューバーから [ File ]→[ Open ] をクリックし、
[AVRtraining.bas] ファイルを開いて下さい。
「応用プログラム集」等を利用する場合は、ダウンロードしたプログラム「XXXXX.bas」を開き、
(3)へ進んで下さい。
(2) 各自のプログラムを作成した後に、メニューバーから、[ File ]→[ Save As... ] を
クリックし、任意の名前を付けて保存して下さい。
・フォルダ名 及び ファイル名は、必ず半角英数字にして下さい。
・日本語のフォルダ名・ファイル名は、エラーになります。
・「Leave the old CFG file ?」 と言うメッセージが出た場合は、[Yes] をクリックして下さい。
・2回目以降は、[ File ]→[ Save ] で、上書き保存できます。
(3) メニューバーから、[ Program ]→[ Compile ] をクリックし、コンパイルを行います。
・問題が無い場合は、画面下のステータス行に、「No errors found」と表示されます。
・プログラムの打ち間違い等がある場合は、画面下に「Error Panel」が開き、エラーのある
行番号とエラー内容が表示されますので修正して下さい。
・エラー報告をダブルクリックすると、プログラムにエラーのある行が、赤く表示されます。
(4) メニューバーから、[ Program ]→[ Send to chip ] をクリックし、書き込み用の
ウィンドウを開きます。
● 「AVRISPmkII」 の場合。
・メニューバーから、[ Chip ]→[ Autoprogram ] をクリックすると、プログラムが
書き込まれます。
● 「AVRWRT」 の場合。
・「FLASH」欄の[参照]をクリックし、(2),(3)でプログラムを保存したフォルダ内の、
「プログラム名.hex」ファイルを開き、同欄の[書き込み] をクリックすると、プログラムが
書き込まれます。
(5) 書き込みが終了すると、ボード上で自動的にプログラムが開始されます。
・[RESET] スイッチを押すと、再度プログラムの最初から実行されます。
2.ボードに搭載されている機能の制御方法
◎ 実際のプログラムは、トレーニング・ボード機能テストプログラム ATBboardTest102.bas を、
参照して下さい。
(1) LED(発光ダイオード)の点灯。
・4つのLEDは、それぞれがポートDのビット4,5,6,7に接続されていますから、下記の命令で
点灯、消灯を行えます。
・それぞれのLEDには、わかりやすい名前も割り付けてあります。
Set PORTD.4
Set Led_1r |
赤LEDが点灯します |
Set PORTD.5
Set Led_2g |
緑LEDが点灯します |
Set PORTD.6
Set Led_3y |
黄LEDが点灯します |
Set PORTD.7
Set Led_4b |
青LEDが点灯します |
|
Reset PORTD.4
Reset Led_1r |
赤LEDが消灯します |
Reset PORTD.5
Reset Led_2g |
緑LEDが消灯します |
Reset PORTD.6
Reset Led_3y |
黄LEDが消灯します |
Reset PORTD.7
Reset Led_4b |
青LEDが消灯します |
|
(2) LCD(液晶表示器)への表示。
・LCDは、16文字×2行分の、英文字、数字、記号、カタカナを表示できます。
(表示できる文字種は、LCDの説明書を参照して下さい)
・LCDへの接続設定は、初期設定プログラム内で行われているので、表示制御の命令のみで
表示が可能です。
CLS |
LCDの表示全体を消去し、カーソルをホーム(画面左上)の位置に移動します。 |
CURSOR |
LCDのカーソル表示を、オン/オフまたは点滅させます。 |
LOCATE |
LCDのカーソルを、指定された位置に移動させます。 |
LCD |
LCDに、変数の値または文字列を表示させます。 |
・他のLCDに関する命令は、キャラクタLCD関連の命令を参照して下さい。
(3) スイッチの検出。
・スイッチの信号を検出するには、何通りかの方法がありますが、このボードではAVRマイコンに
搭載されているプルアップ機能を用いて、簡単に検出する方法を使用しています。
 |
・AVRの初期状態では、ポート端子が開放状態になって
いますが、プログラムによりプルアップの設定を行うと、
電源とポートの間に数十KΩの抵抗が接続されます。
・これにより、ポートは [H] レベルに保たれます。
・このポートとGND間にスイッチを接続することで、
スイッチが押された場合に、ポートが [L] レベルに
変化し、その変化をプログラムで読み取ります。
・プログラムからは、スイッチが押されていない状態で1
[H] 、スイッチが押されると0 [L] が検出できます。
|
・それぞれのスイッチには、わかりやすい名前も割り付けてあります。 (Sw_1, Sw_2, Sw_3, Sw_4)
・プログラムでは、下記のように記述します。
Swdata = Sw_1 |
変数「Swdata」に、スイッチ1の状態が入ります。(OFFで [01] , ONで [00]) |
If Sw_2 = 0 Then |
スイッチ2が押された場合に、条件が成立します。 |
(4) スピーカーを鳴らす。
・圧電スピーカーを使用しているので、AVRのポートに直接スピーカーを接続し、ポートに
[H] と [L] レベルのパルスを出力することで、方形波のブザー音やアラーム音が鳴ります。
・プログラムでは、「Sound」命令によって簡単に鳴らすことができます。
Sound Sp_out , 100 , 1333 |
1KHzの音を100mS間鳴らします。 |
(5) 光センサーの使用方法。
・光センサーは、フォトトランジスタ(NJL7502L)を使用しています。
・センサーに光が多くあたるほど、フォトトランジスタには多くの電流が流れて、抵抗器(10KΩ)の
両端の電圧値が高くなります。
・逆に、光の量が少なくなると、フォトトランジスタに流れる電流も少なくなり、抵抗器の両端の
電圧値も低くなります。
・この抵抗器に発生する電圧値の変化を、AVRマイコンに搭載されたA/Dコンバータで
読み取ります。
(A/Dコンバータとは、アナログ信号レベルを、デジタル数値に変換する装置です)
・プログラムでは下記の命令により、光の強さを0〜1023の数値に換算することができます。
Phlevel = Getadc(0)
Phlevel = Getadc(Ad_photo) |
ワード型変数「Phlevel」に、光量の換算値が入ります。 |
(6) 温度センサーの使用方法。
・温度センサーは、専用IC(LM61BIZ)を使用しています。
・このLM61BIZは、-25℃〜+85℃までの温度を、350mV〜1.45Vの電圧に変換して出力します。
・センサーから出力された電圧値を、AVRマイコンに搭載されたA/Dコンバータで読み取ります。
(A/Dコンバータとは、アナログ信号レベルを、デジタル数値に変換する装置です)
・出力される電圧値は、1℃が10mVで、マイナスの温度も表現するために、600mVの
オフセットが加えられています。
・つまり、350mV - 600mV = -250mV で、350mVが-25.0℃を表すことになります。
・プログラムでは、A/D変換した電圧値を、計算により温度に換算します。
Dim Temp As Long
Dim Tempstr As String * 20
Do
Temp = Getadc(ad_thermo)
Temp = 5000 * Temp
Shift Temp , Right , 10 , Signed
Temp = Temp - 600
Cls
Tempstr = Str(temp)
Lcd "Temp = " ; Format(tempstr , "0.0") ; "゚C"
Wait 1
Loop |
'ロング型変数を宣言する。
'文字変数を宣言する。
'繰り返し処理。
'温度センサー値をA/D変換する。
'5.000V÷1024×1000000×[A/D値]÷1000
'式を変えて 5.000V×1000×[A/D値]÷1024
'温度センサーIC [LM61]の温度変換計算。
'LCD画面を全て消去する。
'数値変数を文字変数に変換する。
'LCDに温度を表示する。
'1秒間の待ち時間。
|
(7) 測定端子の使用方法。
・測定端子では、外部の信号や直流電圧を、3回路それぞれに測定することができます。
・端子から入力された信号を、AVRマイコンに搭載されたA/Dコンバータで読み取ります。
(A/Dコンバータとは、アナログ信号レベルを、デジタル数値に変換する装置です)
・端子に入力できる電圧値は、GNDに対して正の電圧で、最大5Vまでです。
(5V以上の電圧を測定する場合は、抵抗器で分圧してから入力して下さい)
・また、AVR内蔵のA/Dコンバータの特性から、測定できる周波数はDC〜10KHz程度です。
・プログラムでは下記の命令により、直流電圧値を測定できます。
・5Vを1024分割した値が換算値となります。 (0〜1023) (205で約1V)
Ch1data = Getadc(Ad_ain1)
Ch2data = Getadc(Ad_ain2)
Ch3data = Getadc(Ad_ain3) |
ワード型変数「Ch1data」に、測定入力1の換算値が入ります。
ワード型変数「Ch2data」に、測定入力2の換算値が入ります。
ワード型変数「Ch3data」に、測定入力3の換算値が入ります。 |
3.ここまで読破したが、ほとんど理解できない・・・方へ
・まずは、ページ冒頭の応用プログラムを動作させて、個々の命令の動作や役割を
BASCOM-AVRのリファレンス・マニュアルで調べて見て下さい。
・そして、パラメータ(命令の右の数値)をいじってみたり、命令を追加してみて、動作の変化を
理解していって下さい。
・BASIC言語は、ほとんどの命令が1つの命令ごとに動作を完結するので、1行ごとに命令を
並べていくことで、動作の確認ができるはずです。
・その上で、複合的な動作を考えていくと、プログラムとしてまとまっていくと思います。
・思い通りに動かない時は、ささいなことでも悩まずに、当ページの掲示板で質問して下さい!
|