■ AVR & BASCOM トレーニング・ボード 応用プログラム ■


トレーニング・ボード 機能テスト プログラム
プログラム: ATBboardTest102.bas
Arduino用: ATSboardTest_ard101.bas
作者: O-Family 作成日: 2009. 9. 2
作成日: 2013. 4.26
トレーニング・ボードに搭載されている、各種機能をテストするプログラムです。
ボード作製時のテストに利用して下さい。
 
LCDの1行目左から、
 
・温度センサーのチェック。
 温度を表示します。
 
・光センサーのチェック。
 光量を相対数値で表示します。(0〜255)
 
・AVRクロックとヒューズのチェック。
 1秒毎に数値をカウント表示します。(0〜59)

LCDの2行目左から、
 
・測定入力1〜3のチェック。
 入力電圧を表示します。(0.0v〜4.9v)
 
・スイッチ1〜4を押すと、押されたスイッチの上にあるLEDが点灯します。
・スイッチ1から順番に、[ド]、[レ]、[ミ]、[ファ] の音が鳴ります。

・Arduino用では、赤外線リモコンでNECフォーマットを受信すると、測定入力3の表示がカスタム・コード
 とデータ・コードに変わります。(5秒間表示)


適温表示機能付き 温度計 プログラム
プログラム: ATBthermo101.bas 作者: O-Family 作成日: 2009. 7.27
ボード上の温度センサーを利用して、温度表示と共に、4段階の温度に関するメッセージを、LCDとLEDに表示します。
29℃以上の場合。
  [赤]LEDを点灯し、LCDに "アツイ"を表示します。
24℃〜28℃の場合。
  [緑]LEDを点灯し、LCDに "テキオン"を表示します。
19℃〜23℃の場合。
  [黄]LEDを点灯し、LCDに "ショウエネ チュウイ"を
  表示します。
18℃以下の場合。
  [青]LEDを点灯し、LCDに "サムイ"を表示します。



LED調光 イルミネーション プログラム
プログラム: ATBillumi101.bas 作者: O-Family 作成日: 2009. 7.29
ボードに搭載の4色のLEDを、色や明るさと点灯時間をランダムに変えながら、イルミネーション点灯させます。
難しいハードウェア・タイマーや割り込みを使用せずに、メインプログラムだけでLEDの調光を行っています。
LCDには、発生した乱数の値を参考に表示しています。
 
LEDに直流電圧をかけた場合は、輝度は一定になります。
これを、電球や蛍光灯のように、脈流(パルス)にすることで、明るさを制御します。
パルスの周期は、短すぎるとLEDの点灯に追いつかず、長すぎるとフリッカー(ちらつき)が現れます。
一定周期内のパルス幅を短くすると、LEDが暗くなり、長くすると明るくなります。
課題
・乱数と言えども、ソフトウェアで生成されるため、リセット後は同じパターンで進みます。
 これを、完全にランダムにする工夫をして下さい。
・2色同時点灯や、色の変化をオーバーラップさせると、さらにムードが出て来ます。



メロディー 再生 プログラム
プログラム: ATBMelodyPly103.bas 作者: O-Family 作成日: 2009. 7.31
ボードに搭載の圧電スピーカーで、4つのスイッチに割り当てたメロディーを再生します。
LCDには、再生中の曲のタイトルが表示されます。
曲のデータを作成すれば、好きな曲を演奏することができます。
 
メロディー データ・テーブルの作り方
・テーブルの先頭には、曲全体のテンポ値を記述して下さい。
 テンポ値は、1分間の拍数(4分音符分)で、[4〜255]の範囲です。
 
・次に、ダブルクォーテーションマーク ["] で囲った、音階と音符のコードを記述して行きます。
 
・Ox = オクターブ値を設定、変更します。
 数値 [1〜7]を記述すると、そのオクターブ値に設定されます。 (O4Aで440Hz)
 [+] または [-] 記号を記述すると、現在のオクターブ値よりの増減ができます。
 (O+で1オクターブ上げる)
 
・音階の記述。
 C = ド , D = レ , E = ミ , F = ファ , G = ソ , A = ラ , B = シ の音程です。
 [#] = 半音上げる , [$] = 半音下げる (C# , B$)
 
・音階に続き、音符の長さを記述します。 (C4で、ドの音を4分音符分、鳴らします)
 1=全音符 , 2=2分音符 , 4=4分音符 , 8=8分音符 , 16=16分音符 , 32=32分音符 , 64=64分音符
 
・Rx = 休符の長さを記述します。 (長さは音符と同じです)
 1=全休符 , 2=2分休符 , 4=4分休符 , 8=8分休符 , 16=16分休符 , 32=32分休符 , 64=64分休符
 
・Z = データの終了コードです。(再生が終わります)

課題
・光センサーや測定端子と組み合わせて、色々な条件によりメロディーが鳴る装置への応用が可能です。



音感センサー & スイッチ プログラム
プログラム: ATBclapping101.bas 作者: O-Family 作成日: 2009. 8. 1
ボード上の圧電スピーカーをマイク代わりに利用して、手を叩いたり音を感知して、LEDをON/OFFさせます。
LEDの拡張端子信号により、外部の機器も操作できます。
SW1[赤]で、マイクの感度が上がります。
SW2[緑]で、マイクの感度が下がります。
SW3[黄]で、全てのLEDが点灯します。
SW4[青]で、全てのLEDが消灯します。

圧電スピーカーは、パルス電圧を加えると振動して音が出ます。
逆に、大きめの音が入ると、微少ですが電圧が発生します。
スピーカーは、A/Dコンバータのあるポートに接続してありますので、ポートの操作により、これを実現しています。
 
動 画 YouTube
課題
・現在は、単独のLED操作ですが、2回叩くとLED2が反応するような応用も、おもしろいと思います。



デジタル時計 プログラム
プログラム: ATBdigiClock101.bas 作者: O-Family 作成日: 2009. 8.14
シンプルなデジタル時計です。
バックアップ等の機能はありませんので、電源が切れると時刻は初期状態に戻ります。
 
SW2[緑]で、時間表示が24時間制と12時間制に切り替わります。
 
SW2[緑]とSW4[青]を同時に押すと、時刻設定モードに入ります。
設定項目位置でカーソルが点滅します。
SW2[緑]で、設定値が[−]されます。
SW3[黄]で、設定値が[+]されます。
(1秒以上押し続けると、リピート動作に入ります)
SW4[青]で、設定を終え、次の項目に移ります。
(曜日は自動的に計算され、表示されます)
 
分の設定が終わると、秒を[00]にして時刻のカウントが再開されます。
 
課題
・LCD表示にまだ余裕がありますから、温度表示も追加することができます。
・圧電スピーカーが搭載されているので、アラーム機能も追加可能です。



ストップ・ウォッチ プログラム
プログラム: ATBstopwatch101.bas 作者: O-Family 作成日: 2009. 8.15
ラップタイム機能が付いた、1/1000秒カウントのストップ・ウォッチです。
ラップタイムは、99個まで記録できます。
最大計測時間は、99時間59分59秒999までで、これを超えると0に戻ります。
 
SW1[赤]を押すと [赤]LEDが点灯して、カウントが始まります。
もう一度SW1[赤]を押すと、カウントが一時停止します。
(SW1[赤]を押すたびに、これを繰り返します)
 
SW2[緑]で、ラップタイムが記録されます。
記録と同時に、LCD2行目に最新のラップタイムが表示されます。
(SW2[緑]を押すたびに、99個まで記録できます)
 
SW3[黄]を押すと、過去のラップタイムが記録順に表示されます。
(記録されているラップタイム個数になると、1番目に戻ります)
 
SW4[青]を0.5秒以上押し続けると、カウント値とラップタイムが全て消去されて、初期状態に戻ります。
 
課題
・スイッチの入力は、拡張端子にも配置されているので、外部の信号により経過時間を測定することもできます。



パルス・ジェネレーター プログラム
プログラム: ATBPulseGene101.bas 作者: O-Family 作成日: 2009. 8.31
「拡張端子1」の8ピンと7ピンに、1Hz〜8MHzのパルス(方形波)を発生させます。
 (発生周波数の精度は、AVRクロックの16MHz水晶の精度によります)
[A] 8ピンの波形に対して、[B] 7ピンの波形の位相を、0°90°180°270°に、ずらすことができます。
 (反転波形を使用する場合や、ラッチ等のクロック・エッジのテストに利用できます)
 
発生周波数
1Hz , 2Hz , 5Hz , 10Hz , 20Hz , 50Hz
100Hz , 200Hz , 500Hz , 1KHz , 2KHz , 5KHz
10KHz , 20KHz , 50KHz , 100KHz , 200KHz , 500KHz
1MHz , 2MHz , 4MHz , 8MHz

SW1[赤]で、発生周波数が上がります。
SW2[緑]で、発生周波数が下がります。
SW3[黄]で、発生周波数を10倍上げます。
SW4[青]で、[B]波形の位相を、0°90°180°270°に、
 ずらします。
(8MHzでは、Timerの制限から、0°と180°のみです。)

[A]波形は黄LED、 [B]波形は緑LEDと同じポートなので、出力波形に合わせてLEDも点灯します。
 
出力パルスの電圧値は、0Vと+5Vです。

AVR内蔵のTimer1出力[OC1A]と[OC1B]が、LCDの制御ポートと重複しているため、8bitのTimer0の使用により、プログラムが多少複雑になっています。



周波数カウンター プログラム
プログラム: ATBfreqcounter101.bas 作者: O-Family 作成日: 2009. 9. 1
「拡張端子1」の7ピンに入力された、パルスの周波数を測定します。
測定できる周波数範囲は、1Hz〜6.4MHzまでです。 (パルスの[H]レベルは、3V以上〜5V以内です)
 

 
スイッチは、使用しません

「拡張端子1」の7ピンは、緑LEDと同じポートなので、測定する信号が入力されると、緑LEDも点灯します。
 
測定する信号のドライブ能力(出力電流容量)が小さい場合は、ボード上のショートピン [ST1] を抜いて下さい。

測定周波数の精度は、AVRクロックの16MHz水晶精度に影響されます。
測定精度を校正する場合は、水晶に接続されている22PFセラミックコンデンサの右側を取り外し、30PFのトリマーコンデンサを取り付けて下さい。
 (写真、緑色の部品。秋月電子 [TZ03P300E] )

トレーニング・ボードの仕様上、キャプチャー端子[ICP1]がLCDの制御端子に使用されているので、プログラム処理で[ICP1]端子を起動しています。
よって測定精度は、当ページの「AVRマイコン周波数カウンター」には及びません。

注意.
トレーニング・ボードの「拡張端子1」 7ピンは、通常出力端子となっていますので、このプログラムを実行させるまでは、「拡張端子1」の7ピンに、外部から信号を入力しないで下さい。




デジタル タイマー プログラム
プログラム: AtbDigiTimer102.bas 作者: O-Family 作成日: 2012. 2.14
99時間まで設定可能な、デジタル・タイマー(キッチン・タイマー)です。
市販のキッチン・タイマーとの違いは、下記の通りです。
 ・設定値を記憶しているので、同じ時間を再設定無しで繰り返し利用できます。
 ・一時停止ができます。
 ・ポートに[H]レベルを出力するので、外部装置が制御できます。
 


SW4[青] で、10秒単位の設定を行います。
 (分への桁上げは、行いません)
 
SW3[黄] で、1分単位の設定を行います。
 (10分への桁上げは、行いません)
 
SW2[緑] で、10分単位の設定を行います。
 (時への桁上げがあります)
 
SW1[赤]を押すと、[赤]LEDが点灯しカウントがスタートします。
 
RESET[白]を押すと、設定値がクリアされます。

LCDの1行目は設定値です。
カウントが開始されると、2行目にカウント値が表示されます。
カウント中は、左上の●が1秒毎に点滅します。
 
カウント値が0になると、[赤]LEDが消灯し、断続音のアラームが鳴ります。
 
・カウント中にSW1[赤]を押すと、カウントが中断されます。
・カウント中にSW4[青]を押すと、カウントが一時停止され、再度押すと再開されます。
 
・カウント動作中は、拡張端子1の6ピン[PD4]と9ピン[PD7]が[H]レベルになります。
・一時停止中は、9ピン[PD7]が[L]レベルになります。
・アラーム音の断続回数は、プログラム冒頭の「Const Almnum = 64」で変更できます。



光センサー 周波数+回転計 プログラム
プログラム: ATBRevCoun102.bas 作者: O-Family 作成日: 2012. 4.27
ボード上に搭載されているフォト・トランジスタ または 測定入力1に接続した光センサーや磁気センサーに入った信号の、周波数と回転数(1分間に回転した回数 RPM)を測定します。
測定範囲  周波数: 0.1Hz〜140KHz  回転数: 6RPM〜99,999RPM
 
ボード上のフォト・トランジスタでは、光の点滅を感知して計測します。
・LEDのダイナミック点灯の周波数。
・ファンやプロペラの回転数。 (羽根の後から、懐中電灯などの光をあてます)
 
測定入力1は、オープンコレクタ(オープンドレイン)タイプのセンサーを接続できます。 ([L]アクティブ)
・フォトリフレクタは光の反射を計測し、ドリルなどの回転体の回転数を測定します。
・フォトトランジスタ、フォトインタラプタ、ホールセンサーなども接続可能です。
 

 
信号発生器から100Hzのパルスを、抵抗を
通してLEDに接続。
(白色LEDが100Hzで点滅しています)
その点滅を、ボード上のフォト・トランジスタで
測定しています。
SW1[赤]を押しながらリセットを押すと、ボード上のフォト・トランジスタが選択されます。
SW2[緑]を押しながらリセットを押すと、測定入力1に接続されたセンサーが選択されます。
(この選択は、電源を切っても残されます)
 
SW1[赤]を押すと、LCD1行目の表示項目が変更できます。
「周波数」→「周期」→「回転数の最大値」→「回転数の最小値」
 
SW2[緑]を押すと、プロペラの枚数が1〜9枚に変更できます。
LCD2行目に、「Rev1」〜「Rev9」が表示されます。
 
SW4[青]を押すと、回転数の最大値と最小値を初期化します。
 
・古い安定器の付いた直管蛍光灯にあてると、中央部で120Hz、両端で60Hzと表示します。(中部地区)
 (インバータのタイプは蓄光するためなのか、まったく反応しませんでした)
・扇風機の羽根の後ろにセンサーを置き、前から懐中電灯をあてると、半透明の羽根でも計測できました。





   電子工作の部屋 Top へ 前のページへ戻る