コントローラでロボットを操縦するプログラム
押しボタンスイッチをつかったコントローラで、ロボットの
運動を操縦するプログラムをつくった。
コントローラには上、下、右、左の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; }