/* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx versie 1.20 (race) ____ _ _ _____ ____ ____ _______ | _ \| | | |/ ____| | _ \ / __ \__ __| | |_) | | | | | __ ______ | |_) | | | | | | | | _ <| | | | | |_ | |______| | _ <| | | | | | | | |_) | |__| | |__| | | |_) | |__| | | | | |____/ \____/ \_____| |____/ \____/ |_| | | \ | / HOGESCHOOL VAN AMSTERDAM -(+)- / 0 \ Functie: programma 1 Volg lijn van punt A tot punt B 2 Schakel IR , botssensoren en led aan. 3 Stop bij Punt C Code: AVR studio 4 Auteur: Paul Mooij xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ #include #include // vertraging unsigned int i=0; // dekeleratie teller int main(void) { // start van't programma DDRB = 0x09; //0x08 motor DDRD = 0xfA; // PORTD uitgang motor while(1) { // oneindige lus /****************************************** Start ****************************************************/ PORTB = 0x08; PORTD = 0x80; if (PINA & 0x01 && PINA & 0x04) {i++;} // teller /**************************************** PUNT A -> B ***************************************************/ while (i ==1) { PORTB = 0x08; if (PINA & 0x01 && PINA & 0x04){ PORTD = 0x80; } // rij rechtdoor else if(PINA & 0x01|| PINA & 0x04) { // bocht PORTD = 0xB0; // stop _delay_loop_2(0xff00); // vertraging while (PINA & 0x01 && PINA & ~0x04) {PORTD = 0xA0;} // links while ( PINA & 0x04 && PINA & ~0x01) {PORTD = 0x90;} // rechts } else { i++;} // teller /*************************************** PUNT B -> C ****************************************************/ } while ( i ==2 ){ // PUNT B -> C IR objectie < aan> PORTD = 0x80; while (PINA & 0x04 || PINA & 0x01) { // doe dit als lijn laag is PORTB = 0x09; // Led aan if (PIND & 0x01 || PIND & 0x04) { PORTD = 0xB0; _delay_loop_2(0xffff); // vertraging bots if (PIND & 0x04) {PORTD = 0x90;} else { PORTD = 0x30; // botssensor 1 PORTB = 0x01; // botssensor 2 _delay_loop_2(0xffff);} } else{ if (PINC & 0x01 && PINC & 0x04) // zoek IR {PORTD = 0xA0;} // 360 zoek naar IR else if (PINC & 0x04) {PORTD = 0x90; } // IR motor rechts else if(PINC & 0x01 ) {PORTD = 0xA0; } // IR motor links else { PORTD = 0x80; } // motor rechtdoor if (PINA & ~0x04 && PINA & ~0x01 ){i =4;} // teller } } /*************************************** Finish ********************************************************/ } while (i ==4) { PORTD = 0xB0; } // Stop } }