0,0 → 1,99 |
// Prijimac |
|
#include "main.h" |
#include "..\common.h" |
|
#DEFINE LCD_RS PIN_B1 // rizeni registru LCD displeje |
#DEFINE LCD_E PIN_B0 // enable LCD displeje |
#DEFINE LCD_DATA_LSB PIN_B2 // pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou) |
#INCLUDE "MYLCD.C" |
|
#DEFINE PRIJIMAC PIN_A3 // pin na ktery je pripojen prijimac |
#DEFINE SERVO_X PIN_A0 // pin na ktery je pripojeno servo |
#DEFINE SERVO_Y PIN_A1 |
#INCLUDE "prijimac.c" |
|
|
|
int8 x,y,tlacitka; |
int8 xc,yc; // pocitadla aktualizace x a y |
int e1,e2,e3,e4; // pocitadla chyb - ladici |
|
void main() |
{ |
lcd_init(); // zinicializuj LCD display |
delay_ms(5); |
printf(lcd_putc,"Ahoj..."); |
delay_ms(300); |
|
x = 0; |
y = 0; |
xc = 0; |
yc = 0; |
e1 = 0; |
e2 = 0; |
e3 = 0; |
e4 = 0; |
|
while (true) |
{ |
int8 kanal, data; |
|
if (prijmi_ramec(&kanal,&data)) |
e1++; |
else |
{ |
switch (kanal) // rozeskoc se podle adresy osy |
{ |
case OSA_X: |
{ |
x=data; |
xc++; |
break; |
}; |
case OSA_Y: |
{ |
y=data; |
yc++; |
break; |
}; |
case TLs: |
{ |
tlacitka=data; |
break; |
}; |
}; |
|
|
// ladici vypisy |
|
lcd_gotoxy(1,1); // vytiskni X a Y |
printf(lcd_putc,"X%2U %3U%3U%3U ", x, xc, e1, e2); |
lcd_gotoxy(1,2); |
printf(lcd_putc,"Y%2U %3U%3U%3U ", y, yc, e3, tlacitka); |
|
// ovladani serv |
output_high(SERVO_X); |
delay_ms(1); |
for (data=x; data--; data>0) |
delay_us(65); |
output_low(SERVO_X); |
|
output_high(SERVO_Y); |
delay_ms(1); |
for (data=y; data--; data>0) |
delay_us(65); |
output_low(SERVO_Y); |
|
for (data=30-x-y; data--; data>0) |
delay_us(65); |
|
// Vystupy tlacitek |
|
// if (bit_test(tlacitka,1)) output_high(pin_A2); else output_low(pin_A2); |
output_bit(PIN_A2,bit_test(tlacitka,1)); |
} |
} |
} |
|
|