
/********************************************************************
// foto_xhruby00.c
//-------------------------------------------------------------------
// 
// Komunikace s fotoaparatem
// 
//
// Michal Hrubý 2011
// VUTBR
// xhruby00
//
********************************************************************/

#define F_CPU 8000000UL			// frekvence hodinového s;ignálu (nutné pro delay.h)
#include <avr/io.h>				// hlavičkový soubor pro mikrokontrolér ATmega16
#include <util/delay.h>     	// hlavičkový soubor pro zpoždění

#include "foto_xhruby00.h" 		// headerfile LCD


char shots_total=20;			// celkovy pocet snimeku (0 - hazi spatne cisla)
char shots_actual=1;			// aktualni snimek (0 - hazi spatne cisla)




void foto_init (void){
	/***************************************************************
	
	Inicializace pinu k fotoaparatu
	
	****************************************************************/

	FOTO_PORT &= ~(FOTO_FOCUS | FOTO_SHOT);   //shodi  = rozepnuto
	FOTO_DDR  |= (FOTO_FOCUS | FOTO_SHOT);    //nahodi = OUTPUT
}




void foto_shot (void){
	/***************************************************************

	Provede vyfoceni snimku + zobrazeni poctu (aktualni/celkovy)
	
	****************************************************************/

	lcd_clear();
	lcd_goXY(0, 0);
	lcd_print_s("Fotek: ");

	lcd_print_int((int)shots_actual, 4);	// zobraz aktualni snimek
	lcd_print_c('/');
	lcd_print_int((int)shots_total, 4);		// zobraz celkove snimku

	lcd_goXY(19, 0);
	lcd_batery_print(batery_check(averageADC(10)));

	_delay_ms(1000);						// Prodleva pro ustaleni konstrukce

	FOTO_PORT |= FOTO_FOCUS;				// nahodi bit = sepne zaostreni

	_delay_ms(800);							// prodleva pro zaostreni

	FOTO_PORT |= FOTO_SHOT;					// nahodi bit = sepne spoust

	_delay_ms(800);							// prodleva = probiha foceni

	FOTO_PORT &= ~FOTO_SHOT;				// shodi bit = rozepne spoust
	FOTO_PORT &= ~FOTO_FOCUS;				// shodi bit = rozepne zaostreni 

	_delay_ms(2000);						// prodleva pro EXPOZICI

	plus_shots_actual(); 					// zvys pocet udelanych fotek
}


void foto_manual (void){
	/***************************************************************

	Provede vyfoceni snimku (v rezimu manual)
	
	****************************************************************/

	lcd_goXY(19, 0);
	lcd_batery_print(batery_check(averageADC(10)));

	_delay_ms(500);							// Prodleva pro ustaleni konstrukce

	FOTO_PORT |= FOTO_FOCUS;				// nahodi bit = sepne zaostreni

	_delay_ms(800);							// prodleva pro zaostreni

	FOTO_PORT |= FOTO_SHOT;					// nahodi bit = sepne spoust

	_delay_ms(800);							// prodleva = probiha foceni

	FOTO_PORT &= ~FOTO_SHOT;				// shodi bit = rozepne spoust
	FOTO_PORT &= ~FOTO_FOCUS;				// shodi bit = rozepne zaostreni 

	_delay_ms(200);							// prodleva pro EXPOZICI

}


void set_shots_total(int new_shots_total){
	/***************************************************************

	Nastavi pocet celkovych snimku do promenne

	Pozn - nefeungovala globalni promenna, proto tohle reseni
	****************************************************************/
	shots_total=new_shots_total;

}

void set_shots_actual(int new_shots_actual){
	/***************************************************************

	Nastavi pocet aktualnich snimku do promenne

	Pozn - nefeungovala globalni promenna, proto tohle reseni
	****************************************************************/
	 shots_actual=new_shots_actual;

}

int get_shots_total(void){
	/***************************************************************

	Vycte pocet celkovych snimku z promenne

	Pozn - nefeungovala globalni promenna, proto tohle reseni
	****************************************************************/
	return (int)shots_total;
}

int get_shots_actual(void){
	/***************************************************************

	Vycte pocet aktualnich snimku z promenne

	Pozn - nefeungovala globalni promenna, proto tohle reseni
	****************************************************************/
	return (int)shots_actual;
}

void plus_shots_actual(void){
	/***************************************************************

	Inkrementuje pocitadlo aktualnich snimku

	Pozn - nefeungovala globalni promenna, proto tohle reseni
	****************************************************************/

	(int)shots_actual++;

}

