Remote car on 'C'
remote car on c
/** This is a basic hardware program in c interfacing a remote car here consider a basic table
lpt port has pin 2-9 for data we can send data to it by calling
here we use only data pins 2,3,4,5 only
syntax : outport(port_address,number);
port address is 0×378 for lpt 2 and 0×3bc for lpt 1
well now move towards the code concentrate on lowest 4 bits
number data operation
1 0001 right steer 2 0010 left steer 4 0100 forward 8 1000 backward 5 0101 right steering + forward (right turn forward) 10 1010 left steering + backward (left turn backward) 6 0110 right steering + backward (right turn back) 9 1001 left steering + forward(left turn front)
this is the logic of code */
#include #include #include #include
void circle() //to move in circular path {int i=0; while(!getch()) { outport(0×3bc,5); // 5 = 0101 means on the right and on the forward
} }
void rectangle() { int i=0; coutl;cin»b; while(!getch()) { outport(0×3bc,4); // forward i++; delay(1000b); outport(0×3bc,5); // right steer delay(1000); outport(0×3bc,4); // forward delay(1000l); } }
void zigzag() { while(!getch()) { outport(0×3bc,5); //right forward delay(3000); outport(0×3bc,9); // left forward delay(3000);
} }
void manual()
{char c=’a’; while(c!=’x’) { clear(); cout«endl«endl«” use move keys for direction ‘x’ to exit”; c=getch(); if(c==’^[[A’) { outportb(0x3bc,1); delay(1000); } else if(c==’^[[B’) { outport(0x3bc,4); } else if(c==’^[[C’) { outportb(0x3bc,2); delay(1000); } else if(c==’^[[D’) { outportb(0x3bc,8); delay(1000); } } }
void manual(char choice, int time) // oveloaded fn for creative {char c; c=choice; while(c!=’x’) { clear();
if(c==’^[[A’) { outportb(0x3bc,1); delay(time1000); } else if(c==’^[[B’) { outport(0x3bc,4); delay(time1000); } else if(c==’^[[C’) { outportb(0x3bc,2); delay(time1000); } else if(c==’^[[D’) { outportb(0x3bc,8); delay(time1000); } } } void creative() { char str[20]; int i=0,n[20]; while(str[i]!=’x’) { coutstr[i]; coutn[i]; i++; } i=0; while(str[i]!=’x’) { manual(str[i],n[i]); } }
void automatic() { clear(); int g,h; cout«” enter 1 to circle “«endl«” 2 to rectangle move”g;
if(g==1) { circle(); } else if(g==2) { rectangle(); } else if(g==3) { zigzag(); } else if(g==4) { creative(); } }
void clear() { int n=0; while(n<300) { cout«endl; n++; } }
void menu() { clear(); int ch; cout«” 1 for manual”«endl«” 2 for automatic “ch; if(ch==1) { manual(); } else if(ch==2) { automatic(); } } /* now its time to open your car’s remote step 1: find the wires which goes for right ,left forward backward step 2: attach lpt ports pin 2 to right 3 to left 4 to forward 5 to backward and ground to pin 23 warning ! remove external batteries from remote which may leak at times step 3: run this code and enjoy racing !
thank you ! by karthik selvakumar B
mail bugs to karthikselvakumar@tce.edu */