// ============================================================================================ // MAIN FUNCTION // ============================================================================================ int main(void) { char input_char; int end_time; _delay_ms(50); init(); xgrid.rx_pkt = &rx_pkt; LED_PORT.OUT = LED_USR_0_PIN_bm; fprintf_P(&usart_stream, PSTR("avr-xgrid build %ld\r\n"), (unsigned long) &__BUILD_NUMBER); // ##### Initialization of swarm dynamics ##### switch(program_num){ case 1: swarm_initialization1(); break; case 2: swarm_initialization2(); break; case 3: swarm_initialization3(); break; } // ############################################ while (1){ end_time = jiffies + 100; if (usart.available()) input_char = usart.get(); // main loop if (input_char == 0x1b) xboot_reset(); else if(input_char != 0x00){ fprintf_P(&usart_stream, PSTR("CPU: %c\r\n"), input_char); external_command(input_char); input_char = 0x00; // clear the most recent computer input } communication(); // send position data to neighbors // ##### Processing for swarm dynamics ##### switch(program_num){ // select program case 1: swarm_calculation1(); break; // Ken's swarm dynamics case 2: swarm_calculation2(); break; // two rythms case 3: swarm_calculation3(); break; // Van der Pol Oscillator default: no_movement(); } // ######################################### servo_motor_control(); // servo control if(jiffies>end_time){ LED_PORT.OUT = LED_USR_1_PIN_bm; // turn on yellow LED } while(jiffies<end_time); if(jiffies>60000) jiffies = 0; //reset jiffies in every 60 sec } return 0; }
// ============================================================================================ // MAIN FUNCTION // ============================================================================================ int main(void) { float angle; char input_char; _delay_ms(50); init(); xgrid.rx_pkt = &rx_pkt; LED_PORT.OUT = LED_USR_0_PIN_bm; swarm_initialization2(); while (1){ if (usart.available()) input_char = usart.get(); // main loop if (input_char == 0x1b) xboot_reset(); if (input_char == 's') sensor = true; if (input_char == ' ') sensor = false; if(communication_on){ communication(); communication_on = false; } if(calculation_on){ /* mchip.hd_memo = mchip.hd; swarm_calculation1(); mchip.hd_diff = (mchip.hd - mchip.hd_memo) / 5.0; //divide into 5 step */ servo_tick = 0; swarm_calculation2(); calculation_on = false; } if(servo_motor_on){ //angle = mchip.hd_memo + (float)servo_tick * mchip.hd_diff; //servo_motor_control(angle); //servo_motor_on = false; } } return 0; }