AVR
サークル
学生
ロボット
情報工学
StudentDay 17

私がAVRマイコンをいじるまで

More than 1 year has passed since last update.


うちの大学の情報工学専攻は...楽すぎる...

まず、今期は月曜日が全休です。金曜日も全休です。

あと火曜日、水曜日、木曜日が基本的に午後休です。

そのおかげで、冬休みが実質2倍に伸びました。

また、レポートはほとんどありません。

コーディングは月に1度程度です。

中間テストもありませんでした。

...将来、大丈夫かな。


このままでは、高校時代の方がコーディングしてる

というわけで、プログラミングができるサークルに入りました。

ロボコンサークルです。

ロボコンの公式サイトは以下のリンクから。

NHK学生ロボコン http://www.official-robocon.com/

ロボット製作ではプログラミングできました。

ちなみにロボットにプログラムを組み込む際には、

マイコンという小さなデバイスにプログラムを書き込み、それを載せます。

マイコンは電圧によって入力・出力を行い、回路を制御しています。

基本的には入力はセンサからの値で、出力はアクチュエータの動作です。

また通信も可能で、回路を作成すればPCと無線通信をすることも可能です。

 

 

ここまでが、昨年までの話です。

今年からは後輩の教育係で、後輩が主にコーディングをしてます。

でも、だんだんと教えることが細かすぎるものになってきました。

細かすぎて伝わらないアレです。

...何か後輩に教えられることを新しく勉強しなければ。


よし、AVRやろう。

AVRは安価に入手できるマイコンです。

AVRの中にも種類がありますが、安いものでは秋月で50円ほどで手に入ります。

話はズレますが、秋月電子は電子部品を取り扱っているサイトです。

配達もしていますので、電子工作に興味があれば覗いてみてください。

電子工作と言わずに、今でいえばIoTというやつですかね。

秋月電子 http://akizukidenshi.com/

話を戻して、AVRのATtiny13A。小さくて可愛い。

大きさは10×10×10くらいですかね。これが50円です。

ATtiny13A

ロボコンとか電子工作とか全く縁のなかった人は、

この子に何ができるか分からないと思います。

でも、違うんです。

この子だけでも、回路があれば大抵のことができます。

皆さんが何をさせるのかが大事だと私は主張したい。特に後輩に。

この子に書き込んだプログラムを以下に紹介します。

至って普通のC言語であることを感じていただければ幸いです。


adc_sample_main.c

int main(void)

{
int result;

//出力ポートを設定
set_bit(DDRB, DDB2, 1);
set_bit(PORTB, PORTB2, 1);

//A/D変換のチャネルを選択 ADC3(PB3)
set_bit(ADMUX, MUX1, 1);
set_bit(ADMUX, MUX0, 1);

//基準電圧を選択(Vcc)
set_bit(ADMUX, REFS0, 0);

//結果を右揃えに
set_bit(ADMUX, ADLAR, 0);

//ADTS2-0 = 000(連続変換動作)
set_bit(ADCSRB, ADTS2, 0);
set_bit(ADCSRB, ADTS1, 0);
set_bit(ADCSRB, ADTS0, 0);

//システムクロックの分周値 1/8 -> 150kHz
//ADPS2-0 = 011
set_bit(ADCSRA, ADPS2, 0);
set_bit(ADCSRA, ADPS1, 1);
set_bit(ADCSRA, ADPS0, 1);

//A/D変換自動起動許可
set_bit(ADCSRA, ADATE, 1);

//A/D許可
set_bit(ADCSRA, ADEN, 1);

//A/D変換開始
set_bit(ADCSRA, ADSC, 1);

while (1)
{
//変換結果を取得
result = ADCL + (ADCH << 8);

if(result > 614){ // 614 -> 3.0V
set_bit(PORTB, PORTB2, 1);
}else{
set_bit(PORTB, PORTB2, 0);
}

_delay_ms(10);
}
}


簡単に上のプログラムを説明すると、これはAVRでAD変換を行っているプログラムです。

AD変換とはアナログ電圧値をデジタル数値に変換する機能です。

入力された電圧が3.0Vより大きいならLEDを点灯し、それ以下なら消灯するものです。

教育用のサンプルなので使い道については...触れるな...


まとめ

講習用資料のまとめもいつも数行なので、数行にまとめます。

電子工作たのしい。

マイコン使うと何でもできる。

みんなやるんだ。