全体:センサとか基板の位置はまだ固定しておらずてきとう。コードが少し邪魔になってしまった。 |
基板その1:センサから情報をもらい、モータへ出力するための基板。真ん中にATMEGA168Pがあり、右下に2つついているのが左右それぞれのモータドライバ。 |
赤外線センサ:黒いLEDみたいなのがセンサ。隣のLEDから赤外線が出てそれの反射の状態をキャッチする。青いのが半固定抵抗でこれで感度を調整する(らしい)。 |
モータ回り:青いのがコンデンサでモータなどで発生するノイズを除去するらしい。 |
本体の基盤にはセンサの状態がわかるようにLEDをつけた。そこで動作確認もかねて試しにLEDを点滅させるプログラムを書いてみた。
#include <avr/io.h>
#include <util/delay.h>
int main (void)
{
// PORTx(x = B, C, D)をすべて出力に
DDRB = 0b11111111;
DDRC = 0b11111111;
DDRD = 0b11111111;
PORTD = 0b00000111; // PORTDの0,1,2PIN(LEDがつながっている)をHighにし他をLowに
while(1){
_delay_ms(500); // 500ms待つ
PORTD = 0x01; // PORTDの0PINをHighにし他をLowに
_delay_ms(500);
PORTD = 0x02;
_delay_ms(500);
PORTD = 0x04;
}
}
―コードは以上―
初めてのマイコンでうまくいくのか心配だったが、ちゃんとLEDが順番に光っているので良かった。基板をはんだ付けしているときは全くテストできていなかったので、LEDが光ったときは少し感動!LCD(液晶ディスプレイ)をつけて遊びたくなってしまった。
また、モータドライバのテストがまだうまくいっていない。試しに電池をつなげてモータも動かそうとしてみたところ、電圧が足りないのかタイヤが回らなかった。ちゃんとした電源でやるとうまく回ったので電源周りが課題に。
0 件のコメント:
コメントを投稿