J2コネクタの”A0″ピンのアナログ電圧を読み取って、その値をディスプレイに表示し、同時にJ1コネクタの”D6″ピンにアナログ出力(PWM出力)します。
アナログ電圧は最小値0Vが値0、最大値5Vが値1023になって読み込まれます。読み取った値を途中で4で割り算しているのは、アナログ出力の上限が255だからです。
.list ;--- ; A Sample Code of Analog I/O Manipulation ;--- dem_cseg main: 0000 21 LDI.d 1 0001 39 18 OUT 18 ; AREF=AVCC=5V loop: 0003 64 05 SYS sys_clear 0005 38 19 IN 19 ; AIN0 0007 64 02 SYS sys_putdec ; display AIN0 value 0009 10 STR R0 0010 24 LDI.d 4 0011 11 STR R1 0012 00 LDR R0 0013 76 41 DIV R1 ; A = A / 4 0015 39 27 OUT 27 ; AOUT6 0017 22 LDI.d 2 ; 2 x 0.1s 0018 64 20 SYS sys_pause 0020 61 19 JB loop
光センサ(照度計)
付属のCdSセルとLEDとを使って実験ができます。以下のようにつないでください。(付属のリード線の色は図の通りにはなっていないことがありますので、結線状態をよく見て判断してください。)
CdSセルにあたる光の照度に応じてLEDの輝度が変わり(照度が高ければLEDは明るくなり)ます。
温度センサ(温度計)
CdSセルをダイオードに変えると温度計になります。ダイオードの順方向効果電圧が温度により変化することを利用しています。最近のICチップ(特に一般CPU)内の温度センサはこの原理が応用されています。
プログラムは先頭の1命令を「22」に書き換えてください。A/Dコンバータのフルスケール電圧が1.1Vになります。
温度が上がると数値が下がっていきます。変化量が少ないのでLEDの輝度はあまり変わりません。