この文書の現在のバージョンと選択したバージョンの差分を表示します。
lesson5_ad変換器 [2010/09/12 22:26] member 作成 |
lesson5_ad変換器 [2010/10/06 12:03] (現在) member |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ======Lesson6====== | + | ======Lesson5====== |
ついにやってきました、AD変換です。 | ついにやってきました、AD変換です。 | ||
ライン 23: | ライン 23: | ||
{{http://upload.wikimedia.org/wikipedia/commons/3/33/AD_conversion_%28ja%29.gif}} | {{http://upload.wikimedia.org/wikipedia/commons/3/33/AD_conversion_%28ja%29.gif}} | ||
- | &bold(){それがライトレとどう関係するか} | + | **それがライトレとどう関係するか** |
- | ライントレーサーでは最初に確認したように、センサーから赤外線を出しています。 | + | ライントレーサーでは最初に確認したように、センサーから赤外線を出しています。\\ |
- | で、その隣のフォトトランジスタに光が当たると電圧が上がります。(ちょっと適当な説明ですが。) | + | で、その隣のフォトトランジスタに光が当たると電圧が上がります。(ちょっと適当な説明ですが。)\\ |
つまり、光が反射すればするほど電圧が上がります。 | つまり、光が反射すればするほど電圧が上がります。 | ||
- | つまりつまり、白い部分では電圧が高くなり、黒い部分では低くなるわけです。 | + | つまりつまり、白い部分では電圧が高くなり、黒い部分では低くなるわけです。\\ |
コレを使えばラインを検出できるわけです。 | コレを使えばラインを検出できるわけです。 | ||
- | + | **実際にどう使うか** | |
- | &bold(){実際にどう使うか} | + | |
プログラムは | プログラムは | ||
+ | <code c> | ||
AD.ADCSR.BYTE=0x20; | AD.ADCSR.BYTE=0x20; | ||
while(AD.ADCSR.BIT.ADST!=0); | while(AD.ADCSR.BIT.ADST!=0); | ||
SEN=(AD.ADDRA>>6)&0x03ff; | SEN=(AD.ADDRA>>6)&0x03ff; | ||
+ | </code> | ||
- | という風に使います。この例ではAD変換のポートのBIT0を変換するときです。 | + | という風に使います。この例ではAD変換のポートのBIT0を変換するときです。\\ |
- | AD変換した値をSENという変数に代入しています。 | + | AD変換した値をSENという変数に代入しています。\\ |
- | 勿論、SENはどこかで型宣言(intとか)してください。 | + | 勿論、SENはどこかで型宣言(intとか)してください。\\ |
- | SENの最大値は2進数で10BIT分、16進数で「3ff」になります。 | + | SENの最大値は2進数で10BIT分、16進数で「3ff」になります。\\ |
ちなみに、BIT1を変換したいときは | ちなみに、BIT1を変換したいときは | ||
+ | <code c> | ||
AD.ADCSR.BYTE=0x21; | AD.ADCSR.BYTE=0x21; | ||
while(AD.ADCSR.BIT.ADST!=0); | while(AD.ADCSR.BIT.ADST!=0); | ||
SEN=(AD.ADDRB>>6)&0x03ff; | SEN=(AD.ADDRB>>6)&0x03ff; | ||
+ | </code> | ||
- | となります。 | + | となります。\\ |
- | 1行目と3行目が変わりました。 | + | 1行目と3行目が変わりました。\\ |
2BITを変換したいときは2とCになります。 | 2BITを変換したいときは2とCになります。 | ||
+ | 詳しく知りたい人は、赤い本を読んでください。\\ | ||
- | 詳しく知りたい人は、赤い本を読んでください。 | + | で、ここで課題です。\\ |
- | + | **どれかのセンサーが反応したら、LEDを光らすプログラムを作ってください。**\\ | |
- | で、ここで課題です。 | + | |
- | &bold(){どれかのセンサーが反応したら、LEDを光らすプログラムを作ってください。} | + | |
代入したSENとかの値をifで大小比べれば楽勝です。 | 代入したSENとかの値をifで大小比べれば楽勝です。 | ||
- | それが出来たら、 | + | それが出来たら、\\ |
- | &bold(){右のセンサが反応したときは右のLEDが光り、中センサが反応したら中LEDが光り、左センサが反応したら左LEDを光らせるプログラムを作ってみましょう。} | + | **右のセンサが反応したときは右のLEDが光り、中センサが反応したら中LEDが光り、左センサが反応したら左LEDを光らせるプログラムを作ってみましょう。** |