0,0 → 1,132 |
//#DEFINE AD_OSA_X 0 // adresa A/D prevodniku pro osu X |
//#DEFINE AD_OSA_Y 1 // adresa A/D prevodniku pro osu Y |
//#DEFINE TL1 PIN_A2 // tlacitka |
//#DEFINE TL2 PIN_A4 |
|
//#DEFINE EEleve_x 0 |
//#DEFINE EEprave_x 1 //adresovani EEPROM |
//#DEFINE EEhorni_y 2 |
//#DEFINE EEdolni_y 3 |
|
//#DEFINE EEmin_x 4 // ulozeni hodnot (adresy) |
//#DEFINE EEmax_x 5 |
//#DEFINE EEmin_y 6 |
//#DEFINE EEmax_y 7 |
//#DEFINE EEstred_x 8 |
//#DEFINE EEstred_y 9 |
|
|
unsigned int min_x; |
unsigned int max_x; |
unsigned int min_y; |
unsigned int max_y; |
unsigned int stred_x; |
unsigned int stred_y; |
unsigned int leve_x; |
unsigned int prave_x; |
unsigned int horni_y; |
unsigned int dolni_y; |
|
|
/*#DEFINE TEXT0 "Joy set to cent" |
#DEFINE TEXT1 "er and press OK" |
#DEFINE TEXT2 "Joy move in some " |
#DEFINE TEXT3 "full circle" |
#DEFINE TEXT4 "Calib. complete"*/ |
|
#DEFINE TEXT0 " Dejte paku do " |
#DEFINE TEXT1 "prostred" |
#DEFINE TEXT2 "Udelajte par" |
#DEFINE TEXT3 "kruhu" |
#DEFINE TEXT4 "hotovo" |
|
|
void Joystick (int *ted_x, int *ted_y, int8 *ted_tl1, int8 *ted_tl2) |
{ |
set_adc_channel(AD_OSA_X); |
delay_us(10); |
*ted_x=read_adc(); |
set_adc_channel(AD_OSA_Y); |
delay_us(10); |
*ted_y=read_adc(); |
|
|
if (!input(TL1)) |
{ |
delay_us(500); |
if (!input(TL1)) *ted_tl1=True; |
} |
else *ted_TL1=False; |
|
if (!input(TL2)) |
{ |
delay_us(500); |
if (!input(TL2)) *ted_tl2=True; |
} |
else *ted_tl2=False; |
} |
|
|
|
void kalibrace() |
{ |
|
int x,y; |
int8 tlac1,tlac2; |
|
min_x = max_x = min_y = max_y = stred_x = stred_y = 128; |
|
// ROZSACH JOYSTIKU |
printf(lcd_putc,"\f"); |
printf(lcd_putc,TEXT2); |
lcd_gotoxy(1,2); |
printf(lcd_putc,TEXT3); |
|
while(input(TL1)) |
{ |
if (0x17 == klavesa()) return; // escape |
|
Joystick(&x,&y,&tlac1,&tlac2); |
|
if (max_x < x )max_x=x; |
if (min_x > x )min_x=x; |
if (max_y < y )max_y=y; //zjisteni meznich hodnot |
if (min_y > y )min_y=y; |
}; |
|
Delay_ms(500); |
printf(lcd_putc,"\f"); |
printf(lcd_putc,TEXT0); |
lcd_gotoxy(1,2); |
printf(lcd_putc,TEXT1); |
|
while(input(TL1)) |
joystick(&stred_x,&stred_y,&tlac1,&tlac2); //nastaveni stredu |
|
|
|
leve_x=max_x - stred_x; |
prave_x=stred_x - min_x; |
horni_y=max_y - stred_y; |
dolni_y=stred_x - min_x; |
|
leve_x = leve_x / 8; //vypocet parametru |
prave_x = prave_x / 8; |
horni_y = horni_y / 8; |
dolni_y = dolni_y / 8; |
|
write_eeprom(EEleve_x,leve_x); |
write_eeprom(EEprave_x,prave_x); |
write_eeprom(EEstred_x,stred_x); |
write_eeprom(EEstred_y,stred_y); |
write_eeprom(EEhorni_y,horni_y); |
write_eeprom(EEdolni_y,dolni_y); |
|
//write_eeprom(EEmin_x,min_x); //zapis |
//write_eeprom(EEmax_x,max_x); |
//write_eeprom(EEmin_y,min_y); |
//write_eeprom(EEmax_y,max_y); |
} |
|
|
|