# include enum { TOPBIT = 0b10000, TANK_HDR_MARK = 1772, TANK_HDR_SPACE = 340, TANK_BIT_MARK = 360, TANK_ONE_SPACE = 820, TANK_ZERO_SPACE = 340, TANK_BITS = 5 }; struct tank : public IRsend { void sendTank( unsigned long data ) { enableIROut( 38 ); P2DIR |= BIT3; P2SEL |= BIT3; mark( TANK_HDR_MARK ); space( TANK_HDR_SPACE ); for( int i = 0; i < TANK_BITS; i++ ) { if( data & TOPBIT ) { mark( TANK_BIT_MARK ); space( TANK_ONE_SPACE ); } else { mark( TANK_BIT_MARK ); space( TANK_ZERO_SPACE ); } data <<= 1; } mark( TANK_BIT_MARK ); space( 0 ); } } t; void setup( void ) { Serial.begin( 9600 ); P2DIR |= BIT3; P2SEL |= BIT3; } enum { LEFT_FORW = 1, LEFT_BACK = 2, RIGHT_FORW = 3, RIGHT_BACK = 4, ALL_FORW = 5, SPIN_RIGHT = 6, SPIN_LEFT = 7, ALL_BACK = 8, CONTINUE = 31 }; void loop( void ) { for( int x = 0; x < 6; x++ ) t.sendTank( ALL_FORW ); delay( 1000 ); for( int x = 0; x < 36; x++ ) t.sendTank( SPIN_RIGHT ); delay( 1000 ); for( int x = 0; x < 6; x++ ) t.sendTank( ALL_BACK ); delay( 1000 ); }