Esempio n. 1
0
// ============================================================================================
// 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;
}
Esempio n. 2
0
// ============================================================================================
// reset messege to all
// ============================================================================================
void reset_myself(int num)
{
	switch(num){
		case 1: swarm_initialization1(); break;
		case 2: swarm_initialization2(); break;
		case 3: swarm_initialization3(); break;
	}
}
Esempio n. 3
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;
}