Kevin Gallagher |
Kevin Gallagher showing off his Fire Fighting Robot |
Side view of Kevin's Fire Fighting Robot | Flames' death view of Kevin's Fire Fighting Robot. |
Mikroelectronica MikroC code
////////////////////////////// /////Stuff///////////////////// /////////////////////////////// int x; char text[20]; unsigned int Left_IR; unsigned int Right_IR; unsigned int Centre_IR; unsigned int sharps; int twitch; /////////////////////////////// /////Moving the Bot//////////// /////////////////////////////// /////Thataway////////////////// void Forward() { PORTC = 0b11000011; delay_ms(500); PORTC = 0; delay_ms(20); } /////---->///////////////////// void Right() { PORTC = 0b11000101; } /////<----///////////////////// void Left() { PORTC = 0b10100011; } /////Backwards///////////////// void Back() { PORTC = 0b10100101; } /////Cease and Desist!///////// void Stop () { PORTC = 0; delay_ms(1000); } /////////////////////////////// /////Turret Movement/////////// /////////////////////////////// /////Straight Ahead//////////// void Center() { x = 12; while(x > 0) { PORTB.F5 = 1; Delay_us(1450); PORTB.F5 = 0; PORTC = 0b11000011; delay_ms(19); x = x - 1; } //Centre_IR = Adc_Read(0); sharps = Adc_read(0); if (sharps > 200) { PORTC = 0b11000101; delay_ms(500); sharps = 100; } } /////Turret ---->////////////// void FarRight() { x = 12; while(x > 0) { PORTB.F5 = 1; Delay_us(850); PORTB.F5 = 0; PORTC = 0b11000011; delay_ms(19); x = x - 1; } //Right_IR = Adc_Read(0); sharps = Adc_read(0); if (sharps > 350) { PORTC = 0b10100011; delay_ms(250); sharps = 100; } } /////Turret <----////////////// void FarLeft() { x = 16; while(x > 0) { PORTB.F5 = 1; Delay_us(2050); PORTB.F5 = 0; PORTC = 0b11000011; delay_ms(19); x = x - 1; } //Left_IR = Adc_Read(0); sharps = Adc_read(0); sharps = Adc_read(0); sharps = Adc_read(0); if (sharps > 350) { PORTC = 0b11000101; delay_ms(50); sharps = 100; } } /////////////////////////////// /////LCD Display/////////////// /////////////////////////////// void LCD() { // text = "Mr Cool "; Lcd_Init(&PORTB); // Initialize LCD connected to PORTB Lcd_Cmd(Lcd_CLEAR); // Clear display Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off Lcd_Out(1, 1, text); // Print text to LCD, 2nd row, 1st column // text = "is cool!"; Lcd_Out(2, 1, text); } /////////////////////////////// /////Sensor Stuff////////////// /////////////////////////////// /////Left Sensor/////////////// void SensorDisplayL() { Left_IR = Adc_Read(2); } /////Right Sensor////////////// void SensorDisplayR() { Right_IR = Adc_Read(1); } /////Centre Sensor///////////// void SensorDisplayC() { Centre_IR = Adc_Read(3); } /////Comparison//////////////// void SensorCompare() { //Lcd_Cmd(Lcd_CLEAR); Left_IR = Adc_Read(2); Right_IR = Adc_Read(1); Centre_IR = Adc_Read(3); //SensorDisplayL(); //Leftie //SensorDisplayR(); //Rightie // SensorDisplayC(); //Centre if(Right_IR > Centre_IR) //Centre has less than right { if(Left_IR > Centre_IR) //Centre has less than left { Forward(); delay_ms(500); } if(Left_IR < Centre_IR) //Centre has more than left { Left(); delay_ms(500); } } if(Left_IR > Centre_IR) //Centre has less than left { if(Right_IR > Centre_IR) //Centre has less than right { Forward(); delay_ms(500); } if(Right_IR < Centre_IR) //Centre has more than right { Right(); delay_ms(500); //Forward(); } } } /////Comparison//////////////// void Sensorscan() { //Lcd_Cmd(Lcd_CLEAR); Left_IR = Adc_Read(2); Right_IR = Adc_Read(1); Centre_IR = Adc_Read(3); if(Right_IR < 600) //Centre has less than right { PORTC = 0b11000101; delay_ms(500); } if(Left_IR < 600) //Centre has less than left { PORTC = 0b10100011; delay_ms(500); } } /////Servo 2/////////////////// void Pull() { x = 60; while(x > 0) { PORTB.F4 = 1; Delay_us(250); PORTB.F4 = 0; delay_ms(20); x = x - 1; } PORTC = 0b10100011; delay_ms(20); PORTC = 0b11000101; delay_ms(20); x = 40; while(x > 0) { PORTB.F4 = 1; Delay_us(2000); PORTB.F4 = 0; delay_ms(20); x = x - 1; } } /////////////////////////////// /////Main Portion////////////// /////////////////////////////// void Main () { TRISA = 0b00011111; TRISB = 0; TRISC = 0; PORTC = 0; ADCON1 = 10000000; //Centre_IR = 401; // |\ SensorDisplayC(); // | | while(1) // | |> ___ { // | | _|___|_ //SensorCompare(); // |/| (o_o) if(Centre_IR > 600) // | _|_ { // | | | Center(); // o----| || FarLeft(); // | | || Center(); // | | || FarRight(); // | | || Sensorscan(); // | | || } // | | |o if(Centre_IR < 599) // | |___| { // | | | // | | | SensorCompare(); // | _| |_ if(Centre_IR < 300) { Stop(); Pull(); Sensorscan(); } // Center(); } } } |
Material List
|