コード例 #1
0
ファイル: KitchenLight.c プロジェクト: arthurgargon/smarthome
int main(void){
	
	cli();
	
	RELAY_0_INIT;
	BUTTON_INIT;
	buttonStateValue = BUTTON_READ;
	
	clunet_set_on_data_received(clunet_data_received);
	clunet_init();
	
	while(1){
		
		char state = BUTTON_READ;
		if (state != buttonStateValue){
			buttonStateValue = state;
			
			if (buttonStateValue){
				//buttonResponse(CLUNET_BROADCAST_ADDRESS);
				switchExecute(0x02);	//toggle
			}
		}
		
		_delay_ms(5);
		
	}
	
	return 0;
}
コード例 #2
0
ファイル: BathSensors.c プロジェクト: arthurgargon/smarthome
int main(void){
	cli();
	
	DOOR_SENSOR_INIT;
	doorSensorValue = DOOR_SENSOR_READ;
	
	BUTTON_SENSOR_INIT;
	buttonSensorValue = BUTTON_SENSOR_READ;
	
	shouldSendLightnessValue = 0;
	lightnessSensorValue = -1;
	ADC_INIT;
	
	clunet_set_on_data_received(clunet_data_received);
	clunet_buffered_init();
	clunet_init();
	
	TIMER_INIT;
	ENABLE_TIMER_CMP_A;	//main loop timer 1ms
	
	while(1){
		if (!clunet_buffered_is_empty()){
			cmd(clunet_buffered_pop());
		}
	}
	
	return 0;
}
コード例 #3
0
ファイル: intercom.c プロジェクト: ClusterM/intercom
int main (void)
{
	clunet_init();  
	clunet_set_on_data_received(data_received);	
	time_init();
	sei();
	//eeprom_write_dword((void*)0, 0);
	record_num = eeprom_read_dword((void*)0); // Читаем кол-во записей
	mode_current = eeprom_read_byte((void*)4); // Режим 
	mode_temp = eeprom_read_byte((void*)5); // Временный режим

	disk_initialize(0);	

	unset_bit(DDRA, 3); set_bit(PORTA, 3);	 // Определение сигнала в линии	
	//unset_bit(DDRA, 4);	unset_bit(PORTA, 4); // Открывалка двери, напрямую
	set_bit(DDRA, 4);	unset_bit(PORTA, 4); // Открывалка двери, через реле
	set_bit(DDRA, 5); HANGUP; // Реле снимания трубки
	set_bit(DDRA, 6); MODE_NORMAL; // Реле выбора режима
	unset_bit(DDRG, 0); set_bit(PORTG, 0); // Определение, лежит ли трубка	
	set_bit(DDRD, 6); set_bit(DDRD, 7); // Светодиоды
	unset_bit(DDRA, 7); set_bit(PORTA, 7); // Счётчик оборотов диска

	unset_bit(DDRF, 0); // ADC+
	unset_bit(PORTF, 0);
	unset_bit(DDRF, 1); // ADC-
	unset_bit(PORTF, 1);

	beep(500, 200);
	beep(1500, 200);
	beep(3000, 200);
	_delay_ms(1000);
	if (play_wav_pgm(STARTED_WAV) == 0)
	{
		LED_GREEN_ON;
		while (sound_read() >= 0) ;
		LED_GREEN_OFF;
		sound_stop();
	} else {
		LED_RED_ON;
		beep(3000, 200);
		beep(1500, 200);
		beep(500, 200);
		LED_RED_OFF;
	}
	
	send_current_mode(CLUNET_BROADCAST_ADDRESS);

	while(1)
	{
		if (is_LINE_POWER()) incoming_ring();
		if (OFFHOOK) control_mode();
		transfer_data(); // Передаём данные на досуге.
	}
}
コード例 #4
0
ファイル: Relay_1.c プロジェクト: arthurgargon/smarthome
int main(void){
	
	cli();
	
	RELAY_0_INIT;
	RELAY_1_INIT;
	RELAY_2_INIT;
	
	OWI_Init(OWI_BUS);
	
	clunet_set_on_data_received(clunet_data_received);
	clunet_init();
	
	heatfloor_init(
			heatfloor_sensor_temperature_request,
			heatfloor_control_switch_request, 
			heatfloor_systime_request
			);
			
			heatfloor_set_on_states_message(heatfloor_states_message);
			heatfloor_set_on_modes_changed(heatfloor_modes_message);
			heatfloor_set_on_program_changed(heatfloor_program_message);
		
	TIMER_INIT;
	ENABLE_TIMER_CMP_A;
		
	while (1){
		if (!clunet_buffered_is_empty()){
			cmd(clunet_buffered_pop());
		}
		
		if (systime != hf_time){
			hf_time = systime;
			
			heatfloor_tick_second();
		}
	}
	return 0;
}