3,10 → 3,10 |
#USE FAST_IO (C) |
|
// kroutitka |
#define CERVENA 1 // AN1 |
#define CERNA 4 // AN4 |
#define ZELENA 3 // AN3 |
#define MODRA 0 // AN0 |
#define CERVENA 3 // AN3/RA3 |
#define CERNA 2 // AN2/RA2 |
#define ZELENA 1 // AN1/RA0 |
#define MODRA 0 // AN0/RA1 |
|
// I/O |
#define LED PIN_C0 |
13,12 → 13,19 |
#define HREF PIN_C5 |
#define PIX PIN_C6 |
#define SERVO PIN_B7 |
#define MOT_L PIN_B5 |
#define MOT_R PIN_B6 |
|
void main() |
{ |
int8 cas; |
int16 offset; |
int8 offset; |
int8 rr; // Rozumna rychlost |
int8 r1; |
int8 r2; |
|
int16 ble; |
|
setup_adc_ports(ALL_ANALOG); |
setup_adc(ADC_CLOCK_INTERNAL); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
31,6 → 38,11 |
|
set_tris_c(0b11111000); |
|
set_pwm1_duty(0); // Zastav motory |
set_pwm2_duty(0); |
output_low(MOT_L); |
output_low(MOT_R); |
|
output_high(LED); |
|
delay_ms(200); |
86,7 → 98,7 |
i2c_stop(); |
|
output_low(LED); |
delay_ms(100); |
delay_ms(200); |
|
/* |
i2c_start(); // BW + freeze AGC/AEC |
96,11 → 108,13 |
i2c_stop(); |
*/ |
output_high(LED); |
delay_ms(100); |
delay_ms(200); |
output_low(LED); |
|
cas=128; |
|
ble=0; |
|
while(true) |
{ |
while(!input(HREF)); |
128,7 → 142,30 |
delay_us(cas); |
// delay_us(cas); |
output_low(SERVO); |
set_pwm1_duty(cas); |
set_pwm2_duty(255-cas); |
|
ble++; |
set_adc_channel(ZELENA); |
Delay_ms(1); |
offset=read_adc(); |
set_adc_channel(CERNA); |
Delay_ms(1); |
rr=read_adc(); |
r1=cas>>1; |
r2=255-offset-(cas>>1); |
if (ble==99) |
{ |
set_pwm1_duty(rr); |
set_pwm2_duty(rr); |
}; |
if ((ble>100)&&(ble<60000)) |
{ |
if (r1<=rr) set_pwm1_duty(r1); |
if (r2<=rr) set_pwm2_duty(r2); |
} |
else |
{ |
set_pwm1_duty(0); |
set_pwm2_duty(0); |
} |
}; |
} |