HOME > natural science Laboratory > ものづくり講座 > AVRマイコン TIPS集

コントローラでロボットを操縦するプログラム

文責:佐瀬 一弥 (2010年2月24日) カテゴリ:AVRマイコン TIPS集(38)

押しボタンスイッチをつかったコントローラで、ロボットの 運動を操縦するプログラムをつくった。
コントローラには上、下、右、左の4つのボタンがある。
ロボットは、上ボタンを押すと前へ、下ボタンを押すと後へ進む。 左ボタンを押すとその場で左回転し、右ボタンを押すと右回転する。


コントローラとマイコンカー

プログラムは以下。押しボタンスイッチの入力信号はD0~D3、モータードライバへの出力信号はC0~C3を使用。

#include <avr/io.h>
#include <util/delay.h>

////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////

int main(void)
{
	DDRB=0xff;
	DDRD=0;
	DDRC=0xff;

	PORTB=0xff;
	PORTD=0xff;
	
	
	while(1){
		if( (0b00000001 & ~PIND) == 0b00000001 ){
			migi();
		}
		else if( (0b00000010 & ~PIND) == 0b00000010 ){
			ushiro();
		}
		else if( (0b00000100 & ~PIND) == 0b00000100 ){
			mae();
		}
		else if( (0b00001000 & ~PIND) == 0b00001000 ){
			hidari();
		}
		else {
			PORTC=0;
		}
	}
	return 0;
}


////////////////////////////////////////////////
////////////////////////////////////////////////
///////////ものづくりツール ////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////


void delay_ms(double t) { 
	while (t--) _delay_ms(0.13);
}

void delay_us(double t) { 
int tt;
tt = 8*t/100;
while (tt--) _delay_us(1); 
}

void migi(void)
{
	PORTC=0b00000101;
}
void hidari(void)
{
	PORTC=0b000001010;
}
void mae(void)
{
	PORTC=0b000001001;
}
void ushiro(void)
{
	PORTC=0b000000110;
}



▲このページのトップNPO法人 natural science トップ

▲このページのトップNPO法人 natural science トップ




Warning: mysqli_connect(): (28000/1045): Access denied for user 'xsvx1015071_ri'@'sv102.xserver.jp' (using password: YES) in /home/xsvx1015071/include/natural-science/include_counter-d.php on line 8
MySQL DBとの接続に失敗しました