7,25 → 7,26 |
#USE FAST_IO (C) // Brana C je ve FAST_IO modu, aby slo rychle cist z kamery |
|
// A/D vstupy |
#define DALKOMER 4 // AN4/RA5 - proximity sensor na ruku startera |
#define CERNA 3 // AN3/RA3 |
#define LMAX 4 // AN4/RA5 - leve cidlo na vyjeti z cary |
#define RMAX 3 // AN3/RA3 - prave cidlo na vyjeti z cary |
#define CERVENA 2 // AN2/RA2 - cervene kroutitko |
#define ZELENA 1 // AN1/RA0 - zelene kroutitko |
#define MODRA 0 // AN0/RA1 - modre kroutitko |
|
// I/O |
#define HREF PIN_C5 // Signal HREF z kamery (v H po celou dobu radku) |
#define PIX PIN_C6 // Vstup pro body z kamery (za trivstupim hradlem OR (dig. komparator)) |
#define SERVO PIN_B4 // Vystup na servo (1 az 2ms po cca 20ms (synchronizovano snimkovym kmitoctem)) |
#define MOT_L PIN_B5 // Smer otaceni leveho motoru; druhy pol je RC2 |
#define MOT_R PIN_B6 // Smer otaceni praveho motoru; druhy pol je RC1 |
#define MOT_1 PIN_C1 // PWM vystpy motoru |
#define MOT_2 PIN_C2 // |
#define DATA PIN_B2 // K modulu LEDbar data |
#define CP PIN_B1 // K modulu LEDbar hodiny |
#define ODO PIN_A4 // Ze snimace z odometrie z praveho kola |
#define IRRX PIN_B0 // Vstup INT, generuje preruseni pri prekazce |
#define IRTX PIN_C0 // Modulovani vysilaci IR LED na detekci prekazky |
#define HREF PIN_C5 // Signal HREF z kamery (v H po celou dobu radku) |
#define PIX PIN_C6 // Vstup pro body z kamery (za trivstupim hradlem OR (dig. komparator)) |
#define SERVO PIN_B4 // Vystup na servo (1 az 2ms po cca 20ms (synchronizovano snimkovym kmitoctem)) |
#define MOT_L PIN_B5 // Smer otaceni leveho motoru; druhy pol je RC2 |
#define MOT_R PIN_B6 // Smer otaceni praveho motoru; druhy pol je RC1 |
#define MOT_1 PIN_C1 // PWM vystpy motoru |
#define MOT_2 PIN_C2 // |
#define DATA PIN_B2 // K modulu LEDbar data |
#define CP PIN_B1 // K modulu LEDbar hodiny |
#define ODO PIN_A4 // Ze snimace z odometrie z praveho kola |
#define IRRX PIN_B0 // Vstup INT, generuje preruseni pri prekazce |
#define IRTX PIN_B3 // Modulovani vysilaci IR LED na detekci prekazky |
#define PROXIMITY PIN_C7 // Cidlo kratkeho dosahu na cihlu |
|
#define CASMIN 6 // Rozsah radku snimace |
#define CASMAX 192 |
118,7 → 119,6 |
return; |
}; |
|
set_adc_channel(DALKOMER); // Prepni A/D prevodnik na detektor cihly |
SetServo((CASAVR-CASMIN)); // rovne |
|
set_pwm1_duty(140); // vpred |
128,7 → 128,7 |
i=0; |
while(true) |
{ |
while(input(ODO)) if(read_adc()<128) goto brzdi; // Je cihla blizko? |
while(input(ODO)) if(!input(PROXIMITY)) goto brzdi; // Je cihla blizko? |
while(!input(ODO)); |
i++; |
if(i==7) return; // nedojeli jsme k cihle, jed dal |
204,7 → 204,8 |
setup_adc_ports(ALL_ANALOG); // Zapnuti A/D prevodniku pro cteni kroutitek |
setup_adc(ADC_CLOCK_INTERNAL); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Casovac pro mereni casu hrany W/B v radce |
setup_timer_1(T1_DISABLED); |
// setup_timer_1(T1_DISABLED); |
setup_timer_1(T1_EXTERNAL_SYNC); // Cita pulzy z odometrie z praveho kola |
setup_timer_2(T2_DIV_BY_16,255,1); // Casovac PWM motoru |
setup_ccp1(CCP_PWM); // RC1 // PWM pro motory |
setup_ccp2(CCP_PWM); // RC2 |
280,7 → 281,7 |
i2c_stop(); |
delay_ms(50); |
|
for(offset=0x60;offset<(255-0x04);offset+=0x04) // Zacni od jasu 60h |
for(offset=0x04;offset<(255-0x04);offset+=0x04) // Zacni od jasu 10h |
{ |
i2c_start(); // Brightness |
i2c_write(0xC0); |
312,9 → 313,9 |
|
set_adc_channel(CERVENA); // --- Kroutitko pro jas --- |
delay_ms(1); |
offset=read_adc()>>1; // 0-127 |
offset=read_adc(); |
offset &= 0b11111100; // Dva nejnizsi bity ignoruj |
offset += 0x70; // Jas nebude nikdy nizsi |
// offset += 0x70; // Jas nebude nikdy nizsi |
disp(offset); |
i2c_start(); // Brightness |
i2c_write(0xC0); |
402,12 → 403,10 |
set_adc_channel(MODRA); // Kroutitko na vystredeni predniho kolecka |
Delay_ms(1); |
stred=read_adc(); |
set_adc_channel(DALKOMER); // Prepni A/D prevodnik na detektor cihly |
Delay_ms(1); |
if(read_adc()<128) |
if(!input(PROXIMITY)) |
{ |
disp(0x80); |
while(read_adc()<128); // Cekej, dokud starter neda ruku pryc |
while(input(PROXIMITY)); // Cekej, dokud starter neda ruku pryc |
set_pwm1_duty(255); // Rychly rozjezd !!! Zkontrolovat na oscyloskopu |
set_pwm2_duty(255); |
disp(0x1); |