Subversion Repositories svnkaklik

Compare Revisions

Problem with comparison.

Ignore whitespace Rev HEAD → Rev 259

/roboti/istrobot/camerus/SW/876/camerus.c
0,0 → 1,634
//********* Robot Camerus pro IstRobot 2007 ************
//"$Id$"
//*****************************************************
 
#include ".\camerus.h"
 
#USE FAST_IO (C) // Brana C je ve FAST_IO modu, aby slo rychle cist z kamery
 
// Rychlostni konstanty
#define RR_CIHLA 50 // Rozumna rychlost pro objizdeni cihly
#define RR_PRERUSENI 50 // Rozumna rychlost pro priblizeni se k preruseni
#define BRZDNA_DRAHA 0x15 // Jak daleko pred problemem se zacne brzdit
#define TUHOS 100 // Jak dlouho se bude couvat po narazu na naraznik
#define ODODO_CIHLA 0xFFF
#define ODODO_TUNEL 0xFFF
#define ODODO_PRERUSENI 0xFFF
 
// Adresy IIC periferii
#define COMPAS_ADR 0xC0
#define CAMERA_ADR 0xDC
#define SONAR_ADR 0xE0
 
// A/D vstupy
#define RMAX 4 // AN4/RA5 - leve cidlo na vyjeti z cary
#define LMAX 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_C0 // Ze snimace z odometrie z praveho kola na TIMER1
// Jeden impuls je 31,25mm
#define IRRX !input(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 BUMPER !input(PIN_A4) // Naraznik
 
#define CASMIN 6 // Rozsah radku snimace
#define CASMAX 192
#define CASAVR ((CASMAX+CASMIN) / 2)
 
#define EEMAX 255 // Konec EEPROM
#define MAXLOG 0x10 // Maximalni pocet zaznamu v logu
#if MAXLOG>(EEMAX/3)
#error Prekrocena velikost EEPROM
#endif
 
#define OFFSETO 0x9F //0x9F // Vystredeni serva pro objeti prekazky
 
#define THR 90 // Threshold pro UV cidla na caru
 
#byte INTCON = 0x0B // Interrupt configuration register
#bit GIE = INTCON.7
#bit PEIE = INTCON.6
#bit TMR0IE = INTCON.5
#bit INT0IE = INTCON.4
#bit RBIE = INTCON.3
#bit TMR0IF = INTCON.2
#bit INT0IF = INTCON.1
#bit RBIF = INTCON.0
 
enum stavy {start,rozjezd,jizda,cihla,pocihle,cil};
stavy stav; // Kde jsme na trati
int8 cas; // Cas hrany bila/cerna v radce
int8 stred; // Vystredeni kolecka
int16 odocounter; // Zaznamenani aktualniho stavu pocitadla odometrie
int16 last_log_odo; // Posledni stav odometrie poznamenany do logu
int16 last_log; // Cislo posledniho zaznamu v logu v EEPROM
int8 bb_h[MAXLOG]; // Cerna skrinka MSB
int8 bb_l[MAXLOG]; // Cerna skrinka LSB
int8 bb_f[MAXLOG]; // Cerna skrinka priznak (typ zaznamu)
int8 log; // Pocitadlo pro cernou skrinku
int8 rr; // Promenna na ulozeni Rozumne rychlost
int8 rrold;
int16 odo_preruseni, odo_cihla, odo_tunel; // Problemy na trati
 
// Zobrazeni jednoho byte na modulu LEDbar
inline void disp(int8 x)
{
int n;
 
for(n=0;n<=7;n++)
{
if (bit_test(x,0)) output_low(DATA); else output_high(DATA);
output_high(CP);
x>>=1;
output_low(CP);
}
}
 
// Blikani LEDbarem ve stilu Night Rider
void NightRider(int8 x)
{
int n,i,j;
 
for(j=0;j<x;j++)
{
i=0x01;
for(n=0;n<7;n++)
{
disp(i);
rotate_left(&i, 1);
delay_ms(40);
}
for(n=0;n<7;n++)
{
disp(i);
rotate_right(&i, 1);
delay_ms(40);
}
}
disp(i);
delay_ms(40);
i=0;
disp(i);
}
 
// Zaznam LOGu do EEPROM
void SaveLog()
{
int8 n,i,xlog;
 
i=0;
for(n=0;n<=(log*3);n+=3) // Ulozeni Black Boxu do EEPROM
{
write_eeprom(n,bb_f[i]);
write_eeprom(n+1,bb_h[i]);
write_eeprom(n+2,bb_l[i]);
i++;
};
if(log>0) {xlog=log-1;} else {xlog=0;};
write_eeprom(EEMAX,xlog); // Zapis poctu zaznamu na konec EEPROM
}
 
// Zaznam do Logu do RAM
void LogLog(int8 reason, int16 log_delay)
{
int16 timer_pom;
 
timer_pom=get_timer1(); // Timer se musi vycist atomicky
bb_l[log]=make8(timer_pom,0); // Zaznam
bb_h[log]=make8(timer_pom,1);
bb_f[log]=reason; // Typ zaznamu
if(log<(MAXLOG-1)) log++; // Ukazatel na dalsi zaznam
last_log_odo=timer_pom+log_delay; // Dalsi mereni nejdrive po ujeti def. vzdalenosti
rr=rrold; // Problem skoncil, znovu jed Rozumnou Rychlosti
}
 
void ReadBlackBox()
{
last_log=read_eeprom(EEMAX); // Kolik zaznamu mame od minule poznamenano?
{
int8 n,i;
 
i=0;
for(n=0;n<=last_log;n++)
{
if(read_eeprom(i)==0) odo_tunel=MAKE16(read_eeprom(i+2),read_eeprom(i+1));
if(read_eeprom(i)==0xFF) odo_cihla=MAKE16(read_eeprom(i+2),read_eeprom(i+1));
if((read_eeprom(i)>0) && (read_eeprom(i)<0xFF)) odo_preruseni=MAKE16(read_eeprom(i+2),read_eeprom(i+1));
}
}
}
 
 
// Brzdeni motorama stridou 1:1
void brzda()
{
int8 n,i;
 
set_pwm1_duty(0); // vypni PWM
set_pwm2_duty(0);
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
for (n=0;n<200;n++)
{
output_low(MOT_L);
output_low(MOT_R);
output_high(MOT_1);
output_high(MOT_2);
delay_us(200);
output_high(MOT_L);
output_high(MOT_R);
output_low(MOT_1);
output_low(MOT_2);
delay_us(200);
}
output_low(MOT_L); // smer vpred
output_low(MOT_R);
setup_ccp1(CCP_PWM); // RC1 // Zapni PWM pro motory
setup_ccp2(CCP_PWM); // RC2
}
 
void SetServo(int8 angle)
{
int8 n;
 
for(n=0; n<10; n++)
{
output_high(SERVO); // Odvysilani impuzu 1 az 2ms pro servo
delay_us(1000);
delay_us(stred);
delay_us(stred);
delay_us(stred);
delay_us(angle);
delay_us(angle);
output_low(SERVO);
delay_ms(18);
}
}
 
inline void SetServoQ(int8 angle)
{
output_high(SERVO); // Odvysilani impuzu 1 az 2ms pro servo
delay_us(1000);
delay_us(stred);
delay_us(stred);
delay_us(stred);
delay_us(angle);
delay_us(angle);
output_low(SERVO);
}
 
// Couvni po narazu na naraznik
inline void bum()
{
set_pwm1_duty(0); // couvni, rovne dozadu
set_pwm2_duty(0);
output_high(MOT_L);
output_high(MOT_R);
disp(0xA5);
SetServo(CASAVR-CASMIN);
}
 
#include ".\diag.c"
 
//---------------------------- INT --------------------------------
#int_EXT
EXT_isr() // Preruseni od prekazky
{
unsigned int8 bearing, bearing_offset, delta_bearing;
 
set_pwm1_duty(0); // zabrzdi levym kolem, prave vypni
set_pwm2_duty(0);
output_high(MOT_L);
output_low(MOT_R);
// Ujistime se, ze prijaty signal je z naseho IR vysilace
output_high(IRTX); // Vypni LED na detekci prekazky
delay_ms(2);
if (IRRX) // stale nas signal?
{
output_low(MOT_L); // je odraz -> vpred
output_low(MOT_R);
return;
};
output_low(IRTX); // Zapni LED na detekci prekazky
 
i2c_start(); // Cteni kompasu
i2c_write(COMPAS_ADR);
i2c_write(0x1); // 0-255 (odpovida 0-359)
i2c_stop();
i2c_start();
i2c_write(COMPAS_ADR+1);
bearing_offset=i2c_read(0); // Poznamenej hodnotu pred cihlou
i2c_stop();
 
delay_ms(9);
if (!IRRX) // stale nas signal?
{
output_low(MOT_L); // neni odraz -> vpred
output_low(MOT_R);
return;
};
 
rr=rrold; // Po cihle se pojede opet Rozumnou Rychlosti
if(stav!=cihla)
{
LogLog(0xFF,3); // Cihla
};
 
//!!! if(stav==cihla) while(true); // Zastav na furt, konec drahy
// if(stav==cihla) return; // Po druhe nic neobjizdej
// Pozor na rozjezd
 
if((stav==jizda)||(stav==cihla)) // Objed cihlu
{
#include ".\objizdka_L.c"
};
last_log_odo=get_timer1()+16; // Pul metru po cihle nezaznamenavej do LOGu
}
 
 
//---------------------------------- MAIN --------------------------------------
void main()
{
int8 offset; // Promena pro ulozeni offsetu
int8 r1; // Rychlost motoru 1
int8 r2; // Rychlost motoru 2
 
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_EXTERNAL); // Cita pulzy z odometrie z praveho kola
setup_timer_2(T2_DIV_BY_16,255,1); // Casovac PWM motoru
//!!! setup_timer_2(T2_DIV_BY_4,255,1); // Casovac PWM motoru
setup_ccp1(CCP_PWM); // RC1 // PWM pro motory
setup_ccp2(CCP_PWM); // RC2
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
set_tris_c(0b11111001); // Nastaveni vstup/vystup pro branu C, protoze se to nedela automaticky
 
set_pwm1_duty(0); // Zastav motory
set_pwm2_duty(0);
output_low(MOT_L); // Nastav smer vpred
output_low(MOT_R);
 
disp(0); // Zhasni LEDbar
 
if(BUMPER) // Kdyz nekdo na zacatku drzi naraznik, vymaz log a spust diagnostiku
{
diag();
}
 
output_low(IRTX); // Zapni LED na detekci prekazky
 
NightRider(1); // Zablikej, aby se poznalo, ze byl RESET
// Zaroven se musi pockat, nez se rozjede kamera, nez se do ni zacnou posilat prikazy
 
//... Nastaveni sonaru ...
i2c_start();
i2c_write(SONAR_ADR);
i2c_write(0x02); // dosah
i2c_write(0x03); // n*43mm
i2c_stop();
i2c_start();
i2c_write(SONAR_ADR);
i2c_write(0x01); // zesileni
i2c_write(0x01); // male, pro eliminaci echa z minuleho mereni
i2c_stop();
 
//... Nastaveni kamery ...
i2c_start(); // Soft RESET kamery
i2c_write(CAMERA_ADR); // Adresa kamery
i2c_write(0x12); // Adresa registru COMH
i2c_write(0x80 | 0x24); // Zapis ridiciho slova
i2c_stop();
 
i2c_start(); // BW
i2c_write(CAMERA_ADR);
i2c_write(0x28);
i2c_write(0b01000001);
i2c_stop();
 
/*
i2c_start(); // Contrast (nema podstatny vliv na obraz)
i2c_write(CAMERA_ADR);
i2c_write(0x05);
i2c_write(0xA0); // 48h
i2c_stop();
 
i2c_start(); // Band Filter (pokud by byl problem se zarivkama 50Hz)
i2c_write(CAMERA_ADR);
i2c_write(0x2D);
i2c_write(0x04 | 0x03);
i2c_stop();
*/
 
i2c_start(); // Fame Rate
i2c_write(CAMERA_ADR);
i2c_write(0x2B);
i2c_write(0x00); // cca 17ms (puvodni hodnota 5Eh = 20ms)
i2c_stop();
 
i2c_start(); // VSTRT
i2c_write(CAMERA_ADR);
i2c_write(0x19);
i2c_write(118); // prostredni radka
i2c_stop();
 
i2c_start(); // VEND
i2c_write(CAMERA_ADR);
i2c_write(0x1A);
i2c_write(118);
i2c_stop();
 
NightRider(1); // Musi se dat cas kamere na AGC a AEC
 
{ // Mereni expozice
int8 t1,t2;
 
i2c_start(); // Brightness, zacni od uplne tmy
i2c_write(CAMERA_ADR);
i2c_write(0x06);
i2c_write(0); // 80h default
i2c_stop();
delay_ms(50);
 
for(offset=0x04;offset<(255-0x04);offset+=0x04) // Zacni od jasu 10h
{
i2c_start(); // Brightness
i2c_write(CAMERA_ADR);
i2c_write(0x06);
i2c_write(offset); // 80h default
i2c_stop();
disp(offset);
delay_ms(50);
 
t1=0;
t2=0;
while(!input(HREF)); // Cekej nez se zacnou posilat pixely z radky
delay_ms(5);
while(!input(HREF)); // Cekej nez se zacnou posilat pixely z radky
set_timer0(0); // Vynuluj pocitadlo casu
if(!input(PIX)) continue;
while(input(PIX));
t1=get_timer0(); // Precti cas z citace casu hrany
set_timer0(0); // Vynuluj pocitadlo casu
while(!input(PIX));
t2=get_timer0();
 
if((t1>60) && (t1<140) && (t2>5) && (t2<=10)) break; // Vidis, co mas?
 
delay_ms(2); // Preskoc druhou radku z kamery
};
delay_ms(1000); // Nech chvili na displayi zmerenou hodnotu
}
 
set_adc_channel(CERVENA); // --- Kroutitko pro jas ---
delay_ms(1);
offset=read_adc();
offset &= 0b11111100; // Dva nejnizsi bity ignoruj
// offset += 0x70; // Jas nebude nikdy nizsi
disp(offset);
i2c_start(); // Brightness
i2c_write(CAMERA_adr);
i2c_write(0x06);
i2c_write(offset); // 80h default
i2c_stop();
delay_ms(1000); // Nech hodnotu chvili na displayi
 
set_adc_channel(ZELENA); // --- Kroutitko pro vykon motoru ---
delay_ms(1);
rr=read_adc()>>2; // 0-63 // Pokud by se zvetsil rozsah, tak zkontrolovat jakonasobeni!
rr+=27; // 27-90
//!!! rr=read_adc()>>1; // 0-128 // Pokud by se zvetsil rozsah, tak zkontrolovat jakonasobeni!
rrold=rr;
 
cas=CASAVR-CASMIN; // Inicializace promenych, aby neslo servo za roh
// a aby se to rozjelo jeste dneska
stav=start; // Jsme na startu
set_timer1(0); // Vynuluj citac odometrie
log=0; // Zacatek logu v cerne skrince
last_log_odo=0; // Posledni zaznam odometrie do logu
 
// ReadBlackBox(); // Vycteni zaznamu z Black Boxu
 
odo_cihla=ODODO_CIHLA-BRZDNA_DRAHA;
odo_tunel=ODODO_TUNEL-BRZDNA_DRAHA;
odo_preruseni=ODODO_PRERUSENI-BRZDNA_DRAHA;
 
// ........................... Hlavni smycka ................................
while(true)
{
int8 pom;
int8 n;
int8 gap;
int16 ododo;
 
gap=0; // Vynuluj pocitadlo preruseni
 
next_snap:
 
pom=0;
disable_interrupts(GLOBAL); //----------------------- Critical Section
while(input(HREF)); // Preskoc 1. radku
while(!input(HREF)); // Cekej nez se zacnou posilat pixely z 2. radky
set_timer0(0); // Vynuluj pocitadlo casu
while(input(HREF)) // Po dobu vysilani radky cekej na hranu W/B
{
// !!!!Dodelat rozpoznani cerne cary napric pro zastaveni ?
if(!input(PIX)) // Pokud se X-krat za sebou precetla CERNA
if(!input(PIX))
// if(!input(PIX))
{
pom=get_timer0(); // Precti cas z citace casu hrany
break;
};
};
while(input(HREF)); // Pockej na shozeni signalu HREF
 
if((pom<CASMAX) && (pom>CASMIN)) cas=pom; // Orizni konce radku
// Na konci obrazovaho radku to blbne. Jednak chyba od apertury
// a vubec to nejak na kraji nefunguje.
 
output_high(SERVO); // Odvysilani impuzu 1 az 2ms pro servo
delay_us(1000);
delay_us(stred);
delay_us(stred);
delay_us(stred);
delay_us(cas);
delay_us(cas);
output_low(SERVO);
 
// Elektronicky diferencial 1. cast
if(cas<CASAVR) {r1=cas-CASMIN; r2=CASAVR-CASMIN;}; // Normovani vystupni hodnoty radkoveho snimace
if(cas==CASAVR) {r1=cas-CASMIN; r2=cas-CASMIN;}; // pro rizeni rychlosti motoru
if(cas>CASAVR) {r1=CASAVR-CASMIN; r2=CASMAX-cas;}; // Rozsah 1 az 92
 
enable_interrupts(GLOBAL); //----------------------- End Critical Section
 
if(pom==0) // Kamera nevidi caru, poznamenej to do logu
{
if((cas>(CASMIN+30))&&(cas<(CASMAX-30))) // Nebyla minule cara moc u kraje?
if(last_log_odo<get_timer1()) // Aby nebyly zaznamy v logu prilis huste, musi se napred neco ujet od minuleho zaznamu
{
gap++;
}
}
else
{
if(gap>=2) // Trva preruseni cary alespon 2 snimky?
{
LogLog(gap,8); // Dalsi mereni nejdrive po ujeti 24 cm
rr=rrold; // Preruseni cary skoncilo, znovu jed Rozumnou Rychlosti
}
gap=0;
};
 
if(!input(PROXIMITY) && ((stav==jizda)||(stav==cihla))) // Tunel
{
if(last_log_odo<get_timer1()) // Aby nebyly zaznamy v logu prilis huste, musi se napred neco ujet od minuleho zaznamu
{
LogLog(0xDD,16); // Priznak tunelu; dalsi mereni nejdrive po ujeti 48 cm
rr=rrold; // Vjeli jsme do tunelu, znovu jed rychle
}
};
 
//ODODO
ododo=get_timer1();
if((ododo>odo_preruseni)&&(ododo<(odo_preruseni+8))) rr=RR_PRERUSENI;
if((ododo>odo_cihla)&&(ododo<(odo_cihla+8))) rr=RR_PRERUSENI;
if((ododo>odo_tunel)&&(ododo<(odo_tunel+8))) rr=RR_PRERUSENI;
 
// Elektronicky diferencial 2. cast
if (r1>(CASAVR-CASMIN-rr)) r1=(r1<<1)+rr-(CASAVR-CASMIN); // Neco jako nasobeni
if (r2>(CASAVR-CASMIN-rr)) r2=(r2<<1)+rr-(CASAVR-CASMIN); // rozsah 1 az 92 pro rr=0 // rozsah 1 az 154 pro rr=63
 
//!!! pro zatuhle prevodovky
// r1<<=1; // Rychlost je dvojnasobna
// r2<<=1; // Rozsah 2 az 184 pro rr=0
 
if ((stav==jizda)||(stav==cihla)||(stav==rozjezd)) //||(stav==pocihle)) // Jizda
{
set_pwm1_duty(r1);
set_pwm2_duty(r2);
}
else
{
set_pwm1_duty(0); // Zastaveni
set_pwm2_duty(0);
};
 
if((stav==rozjezd)&&(get_timer1()>10)) // musi ujet alespon 31cm
{
ext_int_edge(H_TO_L); // Nastav podminky preruseni od cihly
INT0IF=0; // Zruseni predesle udalosti od startera
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
stav=jizda;
};
 
if(stav==start) // Snimkuje, toci servem a ceka na start
{
set_adc_channel(MODRA); // Kroutitko na vystredeni predniho kolecka
Delay_ms(1);
stred=read_adc();
if(!input(PROXIMITY))
{
disp(0x80);
while(input(PROXIMITY)); // Cekej, dokud starter neda ruku pryc
set_timer1(0); // Vynuluj citac odometrie
set_pwm1_duty(255); // Rychly rozjezd !!! Zkontrolovat na oscyloskopu
set_pwm2_duty(255);
disp(0x01);
while(get_timer1()<=4) // Ujed alespon 12cm
{
set_adc_channel(LMAX); // Levy UV sensor
delay_us(40);
if(read_adc()<THR) {cas=CASMIN; break;}; // Prejeli jsme caru vlevo
set_adc_channel(RMAX); // Pravy UV sensor
delay_us(40);
if(read_adc()<THR) {cas=CASMAX; break;}; // Prejeli jsme caru vpravo
cas=CASAVR-CASMIN; // Cara je rovne
};
stav=rozjezd;
};
}
 
pom=0x80; // Zobrazeni pozice cary na displayi
for(n=CASMAX/8; n<cas; n+=CASMAX/8) pom>>=1;
disp(pom);
 
while(true) // Ve zbytku casu snimku cti krajni UV senzory a naraznik
{
if(BUMPER) // Sakra, do neceho jsme narazili a nevideli jsme to!
{
bum();
SaveLog(); // Zapis Black Boxu do EEPROM
delay_ms(TUHOS); //!!! Zatuhle prevodovky
set_pwm1_duty(200); // pomalu vpred
set_pwm2_duty(200);
output_low(MOT_L);
output_low(MOT_R);
cas=CASAVR-CASMIN;
};
set_adc_channel(LMAX); // Levy UV sensor
for(n=0;n<20;n++) if(input(HREF)) goto next_snap;
if(read_adc()<THR) cas=CASMIN;
set_adc_channel(RMAX); // Pravy UV sensor
for(n=0;n<20;n++) if(input(HREF)) goto next_snap;
if(read_adc()<THR) cas=CASMAX;
};
}
}
Property changes:
Added: svn:keywords
+Id Rev
\ No newline at end of property
/roboti/istrobot/camerus/SW/876/diag.c
0,0 → 1,68
//--- Diagnostika cidel a vymazani EEPROM ---
void diag()
{
int8 n;
 
// Vymaz Black Box v EEPROM
for(n=0;n<255;n++) write_eeprom(n,0);
bb_l[0]=0; // Zapis na pozici 0 vzdalenost 0
bb_h[0]=0;
bb_f[0]=0;
write_eeprom(EEMAX,0); // Zapis do EEPROM pocet zaznamu 0, tedy jeden zaznam
for(n=0;n<=4;n++)
{
disp(0x55); // Blikni pro potvrzeni
delay_ms(200);
disp(0xAA);
delay_ms(200);
};
 
while(true)
{
if(!IRRX)
{
int8 ble;
 
i2c_start(); // Cteni kompasu
i2c_write(COMPAS_ADR);
i2c_write(0x1);
i2c_stop();
i2c_start();
i2c_write(COMPAS_ADR+1);
ble=i2c_read(0);
i2c_stop();
disp(ble);
delay_ms(200);
}
else
{
i2c_start(); // Diagnostika sonaru
i2c_write(SONAR_ADR);
i2c_write(0x02); // dosah
i2c_write(0x03); // n*43mm
i2c_stop();
i2c_start();
i2c_write(SONAR_ADR);
i2c_write(0x01); // zesileni
i2c_write(0x01); // male, pro eliminaci echa z minuleho mereni
i2c_stop();
 
i2c_start(); // Sonar Ping
i2c_write(0xE0);
i2c_write(0x0);
i2c_write(0x51); // 50 mereni v palcich, 51 mereni v cm, 52 v us
i2c_stop();
delay_ms(100);
i2c_start(); // Odraz ze sonaru
i2c_write(0xE0);
i2c_write(0x3);
i2c_stop();
i2c_start();
i2c_write(0xE1);
n=i2c_read(0);
i2c_stop();
disp(n); // Zobrazeni hodnoty ze sonaru a zaroven diagnostika predniho IR cidla
delay_ms(200);
}
}
}
/roboti/istrobot/camerus/SW/876/objizdka_L.c
0,0 → 1,183
// **** Objeti cihly vlevo **** LLLL
 
#define L_TOUCH 1 // Cara vlevo
#define R_TOUCH 2 // Cata vpravo
#define B_TOUCH 3 // Both
 
int8 n;
int8 r1,r2,rr;
int8 touch;
enum okolo_cihly {pred_carou,na_care,po_care};
okolo_cihly ridic; // V jakem jsme stavu objizdeni cihly
int8 vzdalenost;
int8 visualisation;
 
stav=cihla; // Dalsi prekazku uz nezaznamenavej (je to s velkou pravdepodobnosti cil)
odocounter=get_timer1();
 
cihla:
 
rr=RR_CIHLA; //!!! Rozumna rychlost pro objizdeni cihly (bylo by lepsi rychlost zvysovat) a pri detekci pohybu zase snizit
disp(0x99);
set_pwm1_duty(0); // zabrzdi levym kolem, prave vpred
set_pwm2_duty(255);
output_high(MOT_L);
output_low(MOT_R);
while(true) // Na zacatku se vyhni cihle, zatoc co muzes
{
cas=CASMIN-5; // jeste vic nez hodne do leva
 
if(BUMPER) // Narazili jsme do cihly, musime couvnout!
{
bum();
SaveLog(); // Zapis Black Boxu do EEPROM
delay_ms(TUHOS); //!!! Zatuhle prevodovky
brzda();
goto cihla; // Znovu zacni cihlu objizdet
};
 
set_pwm1_duty(0);
set_pwm2_duty(200); // !!! mozna prilis maly vykon pro rozjezd pro zatuhlou prevodovku
output_high(MOT_L); // leve kolo reverz
output_low(MOT_R); // prave kolo vpred
if(get_timer1()>(odocounter+5)) // konec zatacky?
{
disp(0x66);
break;
}
SetServoQ(cas);
delay_ms(18);
};
 
//------ Objeti cihly v konstantni vzdalenosti ------
touch=0; // Indikator detekce cary pri objizdeni
ridic=pred_carou;
cas=CASAVR-CASMIN; // rovne
output_low(MOT_L); // vpred
output_low(MOT_R);
visualisation=0;
while(true)
{
if(BUMPER) // Narazili jsme do cihly, musime couvnout!
{
bum();
SaveLog(); // Zapis Black Boxu do EEPROM
delay_ms(TUHOS); //!!! Zatuhle prevodovky
set_pwm1_duty(160); // vpred
set_pwm2_duty(160);
output_low(MOT_L);
output_low(MOT_R);
cas=CASMIN;
};
 
delta_bearing=bearing-bearing_offset;
visualisation=(delta_bearing & 0xF0) | (visualisation & 0x0F);
if(IRRX) // hrozi celni srazka s cihlou v prubehu objizdeni
{
cas=CASMIN;
}
else
{
if((vzdalenost!=0)||!input(PROXIMITY)||((delta_bearing>60)&&(delta_bearing<128))) // Udrzovani konstantni vzdalenosti od cihly
{
if(cas>(CASMIN+30)) cas-=30;
}
else
{
if(cas<(CASMAX-30)) cas+=30;
};
};
// Elektronicky diferencial
if(cas<CASAVR) {r1=cas-CASMIN; r2=CASAVR-CASMIN;}; // Normovani vystupni hodnoty radkoveho snimace
if(cas==CASAVR) {r1=cas-CASMIN; r2=cas-CASMIN;}; // pro rizeni rychlosti motoru
if(cas>CASAVR) {r1=CASAVR-CASMIN; r2=CASMAX-cas;}; // Rozsah 1 az 92
 
if (r1>(CASAVR-CASMIN-rr)) r1=(r1<<1)+rr-(CASAVR-CASMIN); // Neco jako nasobeni
if (r2>(CASAVR-CASMIN-rr)) r2=(r2<<1)+rr-(CASAVR-CASMIN);
 
//!!! pro zatuhle prevodovky
// r1<<=1; // Rychlost je dvojnasobna
// r2<<=1; // Rozsah 2 az 184 pro rr=0
 
set_pwm1_duty(r1); // Nastav rychlost motoru
set_pwm2_duty(r2);
 
SetServoQ(cas);
 
i2c_start(); // Sonar Ping
i2c_write(SONAR_ADR);
i2c_write(0x0);
i2c_write(0x52); // mereni v us
i2c_stop();
 
for(n=1;n<=90;n++) // 18ms testovani cary do dalsi korekce serva
{
set_adc_channel(LMAX);
delay_us(100);
if(read_adc()<THR) touch|=L_TOUCH;
set_adc_channel(RMAX);
delay_us(100);
if(read_adc()<THR) touch|=R_TOUCH;
};
 
i2c_start(); // Odraz ze sonaru
i2c_write(SONAR_ADR);
i2c_write(0x3);
i2c_stop();
i2c_start();
i2c_write(SONAR_ADR+1);
vzdalenost=i2c_read(0);
i2c_stop();
 
i2c_start(); // Cteni kompasu
i2c_write(COMPAS_ADR);
i2c_write(0x1); // uhel 0-255
i2c_stop();
i2c_start();
i2c_write(COMPAS_ADR+1);
bearing=i2c_read(0);
i2c_stop();
 
if(touch==L_TOUCH) visualisation|=0x2;
if(touch==R_TOUCH) visualisation|=0x1;
if((touch==B_TOUCH)&&(ridic==pred_carou)) ridic=na_care;
if((ridic==na_care)&&(touch==0)) break;
if(ridic==na_care) touch=0;
disp(visualisation);
};
disp(0xC3);
 
set_pwm1_duty(0); //!!! pred zatuhlejma prevodovkama tam bylo 20 a 200
set_pwm2_duty(240);
output_high(MOT_L);
output_low(MOT_R);
delay_us(40);
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
while (true) // Znovu se musime dotknout cary
{
for(n=1;n<=90;n++) // 18ms testovani cary do dalsi korekce serva
{
set_adc_channel(LMAX); // Levy UV sensor
delay_us(100);
if(read_adc()<THR) // Dotkli jsme se levym senzorem
{
disp(0xE0);
cas=CASAVR-CASMIN; // nastavime, ze cara je rovne
goto cara;
};
set_adc_channel(RMAX); // Pravy UV sensor
delay_us(100);
if((get_timer1()>=(odocounter+2)) && (read_adc()<THR)) // Pravym senzorem nesmime caru prejet!
{
disp(0x07);
cas=CASMAX; // kdyz prejedem, tak nastavime, ze cara je vpravo
goto cara;
};
}
SetServoQ(CASMIN-5); // max. max. doleva L
}
 
cara:
 
output_low(MOT_L); // oba motory vpred
output_low(MOT_R);
/roboti/istrobot/camerus/SW/876/camerus.PJT
0,0 → 1,57
[PROJECT]
Target=camerus.HEX
Development_Mode=
Processor=0x876A
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\Dr
Library=
LinkerScript=
 
[Target Data]
FileList=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\876\camerus.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[camerus.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=camerus.c
 
[Windows]
0=0000 camerus.c 0 0 796 451 3 0
 
[Opened Files]
1=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\876\camerus.c
2=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\876\camerus.h
3=C:\Program Files\PICC\devices\16F876A.h
4=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\876\objizdka_L.c
5=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\876\diag.c
6=
[debugperif]
selected=Analog/Digital Conv
[debugram]
autoread=1
[debugeedata]
autoread=1
[debugbreak]
count=0
[pcwdebug]
watchcol0=75
[debugwatch]
count=0
[debugexpr]
expr=
sideeffects=0
[Units]
Count=1
1=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\876\camerus.c (main)
/roboti/istrobot/camerus/SW/876/camerus.h
0,0 → 1,16
#include <16F876A.h>
#device adc=8
 
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
 
#use delay(clock=20000000)
#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3,force_hw)
 
/roboti/istrobot/camerus/SW/876
Property changes:
Added: svn:ignore
+*.bak
+*.BAK
+*.cof
+*.err
+*.hex
+*.lst
+*.sta
+*.sym
+*.tre
/roboti/istrobot/camerus/SW/873/camerus.PJT
0,0 → 1,55
[PROJECT]
Target=camerus.HEX
Development_Mode=
Processor=0x873A
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\Dr
Library=
LinkerScript=
 
[Target Data]
FileList=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\873\camerus.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[camerus.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=camerus.c
 
[Windows]
0=0000 camerus.c 0 0 796 451 3 0
 
[Opened Files]
1=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\873\camerus.c
2=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\873\camerus.h
3=C:\Program Files\PICC\devices\16F873A.h
4=
[debugperif]
selected=Analog/Digital Conv
[debugram]
autoread=1
[debugeedata]
autoread=1
[debugbreak]
count=0
[pcwdebug]
watchcol0=75
[debugwatch]
count=0
[debugexpr]
expr=
sideeffects=0
[Units]
Count=1
1=C:\dokumenty\svn\Kaklik\roboti\istrobot\camerus\SW\873\camerus.c (main)
/roboti/istrobot/camerus/SW/873/camerus.c
0,0 → 1,512
//********* Robot Camerus pro IstRobot 2007 ************
//"$Id: camerus.c 229 2007-04-09 11:41:19Z kakl $"
//*****************************************************
 
#include ".\camerus.h"
 
#USE FAST_IO (C) // Brana C je ve FAST_IO modu, aby slo rychle cist z kamery
 
// A/D vstupy
#define RMAX 4 // AN4/RA5 - leve cidlo na vyjeti z cary
#define LMAX 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_C0 // Ze snimace z odometrie z praveho kola na TIMER1
// Jeden impuls je 31,25mm
#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
#define CASAVR ((CASMAX+CASMIN) / 2)
 
#define OFFSETO 0x9F //0x9F // Vystredeni serva pro objeti prekazky
 
#define THR 90 // Threshold pro UV cidla na caru
 
#byte INTCON = 0x0B // Interrupt configuration register
#bit GIE = INTCON.7
#bit PEIE = INTCON.6
#bit TMR0IE = INTCON.5
#bit INT0IE = INTCON.4
#bit RBIE = INTCON.3
#bit TMR0IF = INTCON.2
#bit INT0IF = INTCON.1
#bit RBIF = INTCON.0
 
enum stavy {start,rozjezd,jizda,cihla,pocihle,cil};
stavy stav; // Kde jsme na trati
int8 cas; // Cas hrany bila/cerna v radce
int8 stred; // Vystredeni kolecka
int16 odocounter; // Zaznamenani aktualniho stavu pocitadla odometrie
int8 rr; // Promenna na ulozeni Rozumne rychlost
int8 rrold;
//int8 pole_h[0x40];
int8 pole_l[0x40];
 
// Zobrazeni jednoho byte na modulu LEDbar
inline void disp(int8 x)
{
int n;
 
for(n=0;n<=7;n++)
{
if (x & 1 == 1) output_low(DATA); else output_high(DATA);
output_high(CP);
x>>=1;
output_low(CP);
}
}
 
// Blikani LEDbarem ve stilu Night Rider
void NightRider(int8 x)
{
int n,i,j;
 
for(j=0;j<x;j++)
{
i=0x01;
for(n=0;n<7;n++)
{
disp(i);
rotate_left(&i, 1);
delay_ms(40);
}
for(n=0;n<7;n++)
{
disp(i);
rotate_right(&i, 1);
delay_ms(40);
}
}
disp(i);
delay_ms(40);
i=0;
disp(i);
}
 
// Brzdeni motorama stridou 1:1
void brzda()
{
int8 n,i;
 
set_pwm1_duty(0); // vypni PWM
set_pwm2_duty(0);
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
for (n=0;n<200;n++)
{
output_low(MOT_L);
output_low(MOT_R);
output_high(MOT_1);
output_high(MOT_2);
delay_us(200);
output_high(MOT_L);
output_high(MOT_R);
output_low(MOT_1);
output_low(MOT_2);
delay_us(200);
}
output_low(MOT_L); // smer vpred
output_low(MOT_R);
setup_ccp1(CCP_PWM); // RC1 // Zapni PWM pro motory
setup_ccp2(CCP_PWM); // RC2
}
 
void SetServo(int8 angle)
{
int8 n;
 
for(n=0; n<14; n++)
{
output_high(SERVO); // Odvysilani impuzu 1 az 2ms pro servo
delay_us(1000);
delay_us(stred);
delay_us(stred);
delay_us(stred);
delay_us(angle);
delay_us(angle);
output_low(SERVO);
delay_ms(18);
}
}
 
inline void SetServoQ(int8 angle)
{
output_high(SERVO); // Odvysilani impuzu 1 az 2ms pro servo
delay_us(1000);
delay_us(stred);
delay_us(stred);
delay_us(stred);
delay_us(angle);
delay_us(angle);
output_low(SERVO);
}
 
//---------------------------- INT --------------------------------
#int_EXT
EXT_isr() // Preruseni od prekazky
{
set_pwm1_duty(0); // zabrzdi levym kolem, prave vypni
set_pwm2_duty(0);
output_high(MOT_L);
output_low(MOT_R);
// Ujistime se, ze prijaty signal je z naseho IR vysilace
output_high(IRTX); // Vypni LED na detekci prekazky
delay_ms(2);
if (!input(IRRX)) // stale nas signal?
{
output_low(MOT_L); // je odraz -> vpred
output_low(MOT_R);
return;
};
output_low(IRTX); // Zapni LED na detekci prekazky
delay_ms(10);
if (input(IRRX)) // stale nas signal?
{
output_low(MOT_L); // neni odraz -> vpred
output_low(MOT_R);
return;
};
 
//!!! if(stav==cihla) while(true); // Zastav na furt, konec drahy
// if(stav==cihla) return; // Po druhe nic neobjizdej
// Pozor na rozjezd
 
if(stav==jizda) // Objed cihlu
{
#include ".\objizdka_L.c"
}
}
 
 
//---------------------------------- MAIN --------------------------------------
void main()
{
int8 offset; // Promena pro ulozeni offsetu
int8 r1; // Rychlost motoru 1
int8 r2; // Rychlost motoru 2
 
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_EXTERNAL); // 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
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
set_tris_c(0b11111001); // Nastaveni vstup/vystup pro branu C, protoze se nedela automaticky
 
set_pwm1_duty(0); // Zastav motory
set_pwm2_duty(0);
output_low(MOT_L); // Nastav smer vpred
output_low(MOT_R);
 
output_low(IRTX); // Zapni LED na detekci prekazky
 
NightRider(1); // Aby se poznalo, ze byl RESET
// taky se musi pockat, nez se rozjede kamera, nez se do ni zacnou posilat prikazy
 
 
/*
for(cas=0;cas<=0x3F;cas++)
{
pole_h[cas]=0x80|cas;
pole_l[cas]=cas;
}
for(cas=0;cas<=0x7F;cas+=2)
{
write_eeprom(cas,pole_h[cas/2]);
write_eeprom(cas+1,pole_l[cas/2]);
}
*/
 
while(true)
{
output_high(PIN_B0);
delay_ms(200);
output_low(PIN_B0);
delay_ms(200);
}
 
//... Nastaveni sonaru ...
i2c_start();
i2c_write(0xE0);
i2c_write(0x02); // dosah
i2c_write(0x03); // n*43mm
i2c_stop();
i2c_start();
i2c_write(0xE0);
i2c_write(0x01); // zesileni
i2c_write(0x01); // male, pro eliminaci echa z minuleho mereni
i2c_stop();
 
// pro ladeni sonaru
/*
while(true)
{
i2c_start(); // Sonar Ping
i2c_write(0xE0);
i2c_write(0x0);
i2c_write(0x51); // 50 mereni v palcich, 51 mereni v cm, 52 v us
i2c_stop();
delay_ms(100);
i2c_start(); // Odraz ze sonaru
i2c_write(0xE0);
i2c_write(0x3);
i2c_stop();
i2c_start();
i2c_write(0xE1);
cas=i2c_read(0);
i2c_stop();
disp(cas);
}
*/
 
//... Nastaveni kamery ...
i2c_start(); // Soft RESET kamery
i2c_write(0xC0); // Pro single slave musi mit vsechny zapisy adresu C0h
i2c_write(0x12); // Adresa registru COMH
i2c_write(0x80 | 0x24); // Zapis ridiciho slova
i2c_stop();
 
i2c_start(); // BW
i2c_write(0xC0);
i2c_write(0x28);
i2c_write(0b01000001);
i2c_stop();
 
/*
i2c_start(); // Contrast (nema podstatny vliv na obraz)
i2c_write(0xC0);
i2c_write(0x05);
i2c_write(0xA0); // 48h
i2c_stop();
 
i2c_start(); // Band Filter (pokud by byl problem se zarivkama 50Hz)
i2c_write(0xC0);
i2c_write(0x2D);
i2c_write(0x04 | 0x03);
i2c_stop();
*/
 
i2c_start(); // Fame Rate
i2c_write(0xC0);
i2c_write(0x2B);
i2c_write(0x00); // cca 17ms (puvodni hodnota 5Eh = 20ms)
i2c_stop();
 
i2c_start(); // VSTRT
i2c_write(0xC0);
i2c_write(0x19);
i2c_write(118); // prostredni radka
i2c_stop();
 
i2c_start(); // VEND
i2c_write(0xC0);
i2c_write(0x1A);
i2c_write(118);
i2c_stop();
 
NightRider(1); // Musi se dat cas kamere na AGC a AEC
 
{ // Mereni expozice
int8 t1,t2;
 
i2c_start(); // Brightness, zacni od uplne tmy
i2c_write(0xC0);
i2c_write(0x06);
i2c_write(0); // 80h default
i2c_stop();
delay_ms(50);
 
for(offset=0x04;offset<(255-0x04);offset+=0x04) // Zacni od jasu 10h
{
i2c_start(); // Brightness
i2c_write(0xC0);
i2c_write(0x06);
i2c_write(offset); // 80h default
i2c_stop();
disp(offset);
delay_ms(50);
 
t1=0;
t2=0;
while(!input(HREF)); // Cekej nez se zacnou posilat pixely z radky
delay_ms(5);
while(!input(HREF)); // Cekej nez se zacnou posilat pixely z radky
set_timer0(0); // Vynuluj pocitadlo casu
if(!input(PIX)) continue;
while(input(PIX));
t1=get_timer0(); // Precti cas z citace casu hrany
set_timer0(0); // Vynuluj pocitadlo casu
while(!input(PIX));
t2=get_timer0();
 
if((t1>60) && (t1<140) && (t2>5) && (t2<=10)) break; // Vidis, co mas?
 
delay_ms(2); // Preskoc druhou radku z kamery
};
delay_ms(1000); // Nech chvili na displayi zmerenou hodnotu
}
 
set_adc_channel(CERVENA); // --- Kroutitko pro jas ---
delay_ms(1);
offset=read_adc();
offset &= 0b11111100; // Dva nejnizsi bity ignoruj
// offset += 0x70; // Jas nebude nikdy nizsi
disp(offset);
i2c_start(); // Brightness
i2c_write(0xC0);
i2c_write(0x06);
i2c_write(offset); // 80h default
i2c_stop();
delay_ms(1000); // Nech hodnotu chvili na displayi
 
set_adc_channel(ZELENA); // --- Kroutitko pro vykon motoru ---
delay_ms(1);
rr=read_adc()>>2; // 0-31 // Pokud by se zvetsil rozsah, tak zkontrolovat jakonasobeni !!!
rrold=rr;
 
cas=CASAVR-CASMIN; // Inicializace promenych, aby neslo servo za roh
// a aby se to rozjelo jeste dneska
stav=start; // Jsme na startu
set_timer1(0); // Vynuluj citac odometrie
 
// ........................... Hlavni smycka ................................
while(true)
{
int8 pom;
int8 n;
 
next_snap:
 
pom=0;
disable_interrupts(GLOBAL); //----------------------- Critical
while(input(HREF)); // Preskoc 1. radku
while(!input(HREF)); // Cekej nez se zacnou posilat pixely z 2. radky
set_timer0(0); // Vynuluj pocitadlo casu
while(input(HREF)) // Po dobu vysilani radky cekej na hranu W/B
{
// !!!!Dodelat rozpoznani cerne cary napric pro zastaveni ?
if(!input(PIX)) // Pokud se X-krat za sebou precetla CERNA
if(!input(PIX))
// if(!input(PIX))
{
pom=get_timer0(); // Precti cas z citace casu hrany
break;
};
};
while(input(HREF)); // Pockej na shozeni signalu HREF
 
if((pom<CASMAX) && (pom>CASMIN)) cas=pom; // Orizni konce radku
// Na konci obrazovaho radku to blbne. Jednak chyba od apertury
// a vubec to nejak na kraji nefunguje.
 
output_high(SERVO); // Odvysilani impuzu 1 az 2ms pro servo
delay_us(1000);
delay_us(stred);
delay_us(stred);
delay_us(stred);
delay_us(cas);
delay_us(cas);
output_low(SERVO);
 
// Elektronicky diferencial
if(cas<CASAVR) {r1=cas-CASMIN; r2=CASAVR-CASMIN;}; // Normovani vystupni hodnoty radkoveho snimace
if(cas==CASAVR) {r1=cas-CASMIN; r2=cas-CASMIN;}; // pro rizeni rychlosti motoru
if(cas>CASAVR) {r1=CASAVR-CASMIN; r2=CASMAX-cas;}; // Rozsah 1 az 92
 
enable_interrupts(GLOBAL); //----------------------- Critical
 
if (r1>(CASAVR-CASMIN-rr)) r1=(r1<<1)+rr-(CASAVR-CASMIN); // Neco jako nasobeni
if (r2>(CASAVR-CASMIN-rr)) r2=(r2<<1)+rr-(CASAVR-CASMIN);
 
// r1<<=1; // Rychlost je dvojnasobna
// r2<<=1; // Rozsah 2 az 184
 
/* Nerozumna rychlost po cihle
if ((stav==cihla)&&(get_timer1()>(odocounter+5))) // Snizime rychlost po ujeti
{
rr=rrold;
stav=pocihle;
};
*/
if ((stav==jizda)||(stav==cihla)||(stav==rozjezd)) //||(stav==pocihle)) // Jizda
{
set_pwm1_duty(r1);
set_pwm2_duty(r2);
}
else
{
set_pwm1_duty(0); // Zastaveni
set_pwm2_duty(0);
};
 
if((stav==rozjezd)&&(get_timer1()>10)) // musi ujet alespon 31cm
{
ext_int_edge(H_TO_L); // Nastav podminky preruseni od cihly
INT0IF=0; // Zruseni predesle udalosti od startera
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
stav=jizda;
};
 
if(stav==start) // Snimkuje, toci servem a ceka na start
{
set_adc_channel(MODRA); // Kroutitko na vystredeni predniho kolecka
Delay_ms(1);
stred=read_adc();
if(!input(PROXIMITY))
{
disp(0x80);
while(input(PROXIMITY)); // Cekej, dokud starter neda ruku pryc
set_timer1(0); // Vynuluj citac odometrie
set_pwm1_duty(255); // Rychly rozjezd !!! Zkontrolovat na oscyloskopu
set_pwm2_duty(255);
disp(0x01);
while(get_timer1()<=4) // Ujed alespon 12cm
{
set_adc_channel(LMAX); // Levy UV sensor
delay_us(40);
if(read_adc()<THR) {cas=CASMIN; break;}; // Prejeli jsme caru vlevo
set_adc_channel(RMAX); // Pravy UV sensor
delay_us(40);
if(read_adc()<THR) {cas=CASMAX; break;}; // Prejeli jsme caru vpravo
cas=CASAVR-CASMIN; // Cara je rovne
};
stav=rozjezd;
};
}
 
pom=0x80; // Zobrazeni pozice cary na displayi
for(n=CASMAX/8; n<cas; n+=CASMAX/8) pom>>=1;
disp(pom);
 
while(true) // Ve zbytku casu snimku cti krajni UV senzory
{
set_adc_channel(LMAX); // Levy UV sensor
for(n=0;n<20;n++) if(input(HREF)) goto next_snap;
if(read_adc()<THR) cas=CASMIN;
set_adc_channel(RMAX); // Pravy UV sensor
for(n=0;n<20;n++) if(input(HREF)) goto next_snap;
if(read_adc()<THR) cas=CASMAX;
};
}
}
/roboti/istrobot/camerus/SW/873/camerus.h
0,0 → 1,16
#include <16F873A.h>
#device adc=8
 
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
 
#use delay(clock=20000000)
#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3,force_hw)
 
/roboti/istrobot/camerus/SW/873
Property changes:
Added: svn:ignore
+*.bak
+*.BAK
+*.cof
+*.err
+*.hex
+*.lst
+*.sta
+*.sym
+*.tre
/roboti/istrobot/camerus/DOC/prevodovky/prevodovka.fcb
0,0 → 1,137
G90 G40
 
M40
M6 T1
M3 S6000
 
 
 
G0 X0Y0 Z2.5
G1 Z-3.4 F100.0
G0 Z50.
X12.49 Y-10.
Z2.5
G1 Z-3.4
G0 Z50.
X21 Y-25.4
Z2.5
G1 Z-3.4
G0 Z50.
X12.49
Z2.5
G1 Z-3.4
G0 Z50.
X4
Z2.5
G1 Z-3.4
G0 Z50.
M30
M9
M6 T2
M3 S6000
G0 X-3.071 Y-10.594
G0 Z2.5
G1 Z0 F100.0
X-7.035 Y-11.131 Z-0.5
X-5.053 Y-10.863
X-3.071 Y-10.594
G2 X-1.383 Y-11.879 I-2.87 J-12.081
G1 X0.599 Y-26.511 F200.0
G3 X24.381 I12.49 J-24.9
G1 X26.363 Y-11.879
G3 X4.84 Y1.725 I12.49 J-10.
G2 X3.435 Y2.05 I4.293 J2.563
G3 X-1.249 Y-3.8 I0 J0
G2 X-0.625 Y-5.1 I-1.561 J-4.75
G3 X-1.383 Y-11.879 I12.49 J-10.
G2 X-2.668 Y-13.567 I-2.87 J-12.081 F100.0
G1 X-3.071 Y-10.594 F200.0
X-7.035 Y-11.131 Z-1. F100.0
X-5.053 Y-10.863
X-3.071 Y-10.594
G2 X-1.383 Y-11.879 I-2.87 J-12.081
G1 X0.599 Y-26.511 F200.0
G3 X24.381 I12.49 J-24.9
G1 X26.363 Y-11.879
G3 X4.84 Y1.725 I12.49 J-10.
G2 X3.435 Y2.05 I4.293 J2.563
G3 X-1.249 Y-3.8 I0 J0
G2 X-0.625 Y-5.1 I-1.561 J-4.75
G3 X-1.383 Y-11.879 I12.49 J-10.
G2 X-2.668 Y-13.567 I-2.87 J-12.081 F100.0
G1 X-3.071 Y-10.594 F200.0
X-7.035 Y-11.131 Z-1.5 F100.0
X-5.053 Y-10.863
X-3.071 Y-10.594
G2 X-1.383 Y-11.879 I-2.87 J-12.081
G1 X0.599 Y-26.511 F200.0
G3 X24.381 I12.49 J-24.9
G1 X26.363 Y-11.879
G3 X4.84 Y1.725 I12.49 J-10.
G2 X3.435 Y2.05 I4.293 J2.563
G3 X-1.249 Y-3.8 I0 J0
G2 X-0.625 Y-5.1 I-1.561 J-4.75
G3 X-1.383 Y-11.879 I12.49 J-10.
G2 X-2.668 Y-13.567 I-2.87 J-12.081 F100.0
G1 X-3.071 Y-10.594 F200.0
X-7.035 Y-11.131 Z-2. F100.0
X-5.053 Y-10.863
X-3.071 Y-10.594
G2 X-1.383 Y-11.879 I-2.87 J-12.081
G1 X0.599 Y-26.511 F200.0
G3 X24.381 I12.49 J-24.9
G1 X26.363 Y-11.879
G3 X4.84 Y1.725 I12.49 J-10.
G2 X3.435 Y2.05 I4.293 J2.563
G3 X-1.249 Y-3.8 I0 J0
G2 X-0.625 Y-5.1 I-1.561 J-4.75
G3 X-1.383 Y-11.879 I12.49 J-10.
G2 X-2.668 Y-13.567 I-2.87 J-12.081 F100.0
G1 X-3.071 Y-10.594 F200.0
X-7.035 Y-11.131 Z-2.5 F100.0
X-5.053 Y-10.863
X-3.071 Y-10.594
G2 X-1.383 Y-11.879 I-2.87 J-12.081
G1 X0.599 Y-26.511 F200.0
G3 X24.381 I12.49 J-24.9
G1 X26.363 Y-11.879
G3 X4.84 Y1.725 I12.49 J-10.
G2 X3.435 Y2.05 I4.293 J2.563
G3 X-1.249 Y-3.8 I0 J0
G2 X-0.625 Y-5.1 I-1.561 J-4.75
G3 X-1.383 Y-11.879 I12.49 J-10.
G2 X-2.668 Y-13.567 I-2.87 J-12.081 F100.0
G1 X-3.071 Y-10.594 F200.0
X-7.035 Y-11.131 Z-3. F100.0
X-5.053 Y-10.863
X-3.071 Y-10.594
G2 X-1.383 Y-11.879 I-2.87 J-12.081
G1 X0.599 Y-26.511 F200.0
G3 X24.381 I12.49 J-24.9
G1 X26.363 Y-11.879
G3 X4.84 Y1.725 I12.49 J-10.
G2 X3.435 Y2.05 I4.293 J2.563
G3 X-1.249 Y-3.8 I0 J0
G2 X-0.625 Y-5.1 I-1.561 J-4.75
G3 X-1.383 Y-11.879 I12.49 J-10.
G2 X-2.668 Y-13.567 I-2.87 J-12.081 F100.0
G1 X-3.071 Y-10.594 F200.0
X-7.035 Y-11.131 Z-3.5 F100.0
X-5.053 Y-10.863
X-3.071 Y-10.594
G2 X-1.383 Y-11.879 I-2.87 J-12.081
G1 X0.599 Y-26.511 F200.0
G3 X24.381 I12.49 J-24.9
G1 X26.363 Y-11.879
G3 X4.84 Y1.725 I12.49 J-10.
G2 X3.435 Y2.05 I4.293 J2.563
G3 X-1.249 Y-3.8 I0 J0
G2 X-0.625 Y-5.1 I-1.561 J-4.75
G3 X-1.383 Y-11.879 I12.49 J-10.
G2 X-2.668 Y-13.567 I-2.87 J-12.081 F100.0
G0 z50
M6 T1
G0 X0 Y0 Z50
 
 
M30
/roboti/istrobot/camerus/DOC/prevodovky/README.txt
0,0 → 1,3
Pøevodovka 5:1 pro motor speed 300
 
Pøi zalepování ložisek je nutno dbát, aby ložisko v èele u motoru bylo na stranì motoru srovnáno s rovinou èela, jinak by docházelo k vyklánìní osy pøevodovky.
/roboti/istrobot/camerus/DOC/Fotky/P3110001.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3110002.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3110003.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3110004.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3180013.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3180014.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3180015.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3180024.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3180025.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3180026.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3180027.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Fotky/P3180028.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/DOC/Camerus.doc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/HW/CAM_AMA/BOARD.pdf
0,0 → 1,159
%PDF-1.3
%Ç쏢
5 0 obj
<</Length 6 0 R/Filter /FlateDecode>>
stream
+óIššrÐJÒ˹Zj»ç—³°è$g–H›KƒjÒPC>g¥DÝÖM*¦m¸vaŒ¸ÎAwj2QéЈŠÓ`Ë'Ã%K­cöNò“iXÎÊÄêâ­[JÍ"M4CC¤vsaÙ
+­(Ÿ~¯±Ú±¯­hÿ\Èã&õ*ÃïêW)†½¢¢cºJÓU[Þ9]¥\Û«¾"㦹ÛtUGãÅ骎MϜ`
+Z·ÞHòþœpßÆ
+ SMʘj
+Z&½³¢ºî†NS@“t§[æ°é%ͽ2Ê$±YNÑKÂTSpšnt>Ïwb1ס'7égQ¯æÁ)
+Z&íòlwýp»ÉGÞ1]5øŸØïöjziÁÍÆIWâ y­lüô èkƒÔ6ønoÔF¥»†mM'CûVÕ7
+Ö'ñ½…Û%‰>ºÎAö^«®²äáÄN9yo1úÜᵅÓ
+óhLÍ9h™TÞ@ôdØþ³™oåá)]IŠ3~ªÆ`ydhå¥üL%‡8Í¢o‚tIÞÍ,X™  {³ôf2³Pz`ðkf1'÷×S‚ƒÌ,xÁ6:›úfyJW’šYƒå™f̓s͂=®Z[&ΒÑsÁ؆Œ¹M©-<UµEyú8õ çV“Jº¨-$>)¼´ššsÐ2)¾d¾
+O]½¾†çá)]I*¥¼ëɎ›Ö/åg*qP2‹Ö–Y·ø¼©zU£¶ð㥇Y´¶8™Y(c ¶Ž0‹}Þ™YP[è¶{š´¶8­$5³ Ë3Í,šç ®9îðDm©ðáóS¾ŸpíÖ^¨%N•¾ÁDzštTÓ5¼¶Tx9hjÎAˤ§¬Z[˜kKpÐJRÑ{jmÑrÞ³sµÔ8(™EûF˜ÂOÁ»™Ežº.ö0 kKp™…ÒQM×ðÚÂBkjÎAf©-4K?Íý ³<¥+IÍ,ˆÁrN3‹-"ñ%â ¢l[ê==Ñi=Ï
+eÛ¢Ì3HŒƒpfŠµ8e·žˆ¤½€ñ•8h™½ÇØõlW¤ §¿:-—²É=­'byD——ò3•8(™ÅF†[ôDäÝ̂¶…Åô0‹¶-ÎAfJwë‰HG˜Åú=ã 3 {.áš„<éri˜m Ë3Í,šç ݔ‰9“›2ñmI¯cò][
+<B¤Ž¨3j‹1Vúœƒ°rš§šÝµE‰>Îð±ÔŒƒ–IOñ³.‡zëYÂÃóð”®$½}·ÜÙº¿¢”Ÿ©ÄAÉ,¬- ²Ý¥àÝÌ"uD÷Žö0 kKp™…R| ïfÛẑšq™EÚš¥Ÿf€~†YžÒ•¤fÆ@y¦™Åò`Ä&'$`vM&U_ÿþ?(=&ûϤç™>÷°ï@Ïç9‰Ÿ¡Ò'ᬜ}™2O'5’Óv†KqbܘFzè«“ÎAˤS4`]ç‚"…óˆ<<¤+Iq¨­o²<Ðe¥üL%â‚UÛÜ,\$±Å¢MÍÒë©fárÍbÌE 㠙°:\:Ô,J\°âacLÍ9h™tŠ†CÍ¢)À,ÁA+IEï©fÑòˆ./åg*qmœ·d
+–¢Lì>M³(Ÿ1Ӎ™l#L隱pú t‘t¦ÛøJ´\
+f¦@³8-—r· òŽùm–í|E)?S‰ƒôCúõºX©¶Áé˜%-VZe²XzJ„Ž•ÞÆÖãLƒy¦|ùÍ ×þ#ô›g:§ÊÍí[Þª®]hˆÆú–ŽÇÂodúeÞxúV”!ôVhbçñŒ ±X9„Ö±XšÎˆœ­d'^¢•”Ó1U/çgÜóoç+qÐÒó#(ŁÓh×s ¯ÄAˤ²˜;§p.)OŠ+ž‡§t%é¥g ËVê+Jù™JgÙ¹£÷ûpôþp't¸ÙÿOrNÿHîòï?r—ÿù/96¤cC%M©¦øúÛ+Ƀ4¾ðþŽøHG¼ÿ訂/÷æÇvý»íá ÞqXoÔç^xï?ò“2à>þÒýú®_yû%ÏÀä-8_º™ê#yC¾¿zCâã­ª'¸zCú×`ñ/Góu¬¯ðdüüO=›òIyÄ0Rïwõ7¶˜Õ©ØsÖÍlv<Å_ó-ýí/ëË<XuC·y¸ZilÓÞýör?X㠕¼fDsñM|É÷ýGþ¸ØúÕý—îá{ýÊï7ûëv»ð&Îoù–Þò¿â“üó_ÿv„¬“¾ï[Ä·_Å7ë𼮪Å|Éßÿ¿ñßx…ÿÞçûw)'Ÿöú$õè¯Z£›mm6¯úªšéÏ~×cÿ#!ðþÎøHg¼ÿè,ƒ;©¡s–äð[}¿:Ïáq"Ήðg`'Jä3'ò9é¬
+>Ò ï?:cáãëqí¥P<\u¾"œñKwH”2ðbV–Î‰Eœµ—77Äö
+1Gç"ŽÎZÌ¥™.úÆAx7ç¦_XócJ̹Z–ÈÌ%Û²‹æ¤ië!¿lýeWE*÷—¹¤·W8§þçô£™t×ö+ËÝõüwŽåÃ¥ã/ä|¤œ+­ß:áú49óÅjs_ׯÜþý»ã燈>ÿ¼ÄA׏ÇñÓޚoGð€ƒãISsJWÙšÿÆ1 éà‡÷?pðÇJAKþõ(~÷Ët¸Esê${W¿Žñ‘áxÿÑ!~¼.›ñc=®_ûáß??,.»Íjƒ4Bws'}ð®õÂh{åLìX“óqÀɇŒ2Cóß80å#áòþŽpùHGɼÿè(8@ïþ þö‘6?×ÇãÒ!::Jýف<?;°ç§c…n}Ðz4Ñ_<xèWÇ
+I™äõ“é£wºÜìú‘¯?‹+Ñì¢4|»Övð
+µwºdíúŅkËÙº_ØÖíbµv\§¾îÎ9-—ÚµoÏKæ>qõÜǏ¸´s“»_U—/³›~ÁÝôKéô:¼þ
+wîîKQõ@|·Ÿ˜×ƒœÌ(ñóù§£-vˆáûI÷6oί¼™ÞG›1øuÊZ²ˆa„ƒÓ,b1‘G9|XÞ8c ÌCkŒƒ–Ieƀeî§ë+YçȔkè“Y[Ra#¼:7€u_™kzëáÂ2Ç$sZ< õNIIæ´ð¥bsZXsÖ9­Éù-Ì$9-½P]¥xw7'-Ãd®—¬ïdÑÇ=ðCâcŽj3ªxŽÎAœ­Û“>î>¼säëf”êl/MbþÌ#筗™ë¥*Ê÷ÓùF»ý3Ÿ{ü’s·ÎAË¥’é,9á12¨×“{@ª¤åb\Ýn©I*8ИÒnéّ!Z3ô-DÍБ¥ŒåyºŽ™gˆqvïàî.XÍÝ]*—·úd¾[ ³8ÎA뻾’ôΐ-“îÐR9ÐT}œ»wb»thli—°³f×sA+ùAºÁþ£vÿ%6å/ çòïƧ`d֛ÚÚ1¾Úà·)öqã|Ó¿¦™ré#íöËà ÎKìQƲGU.ñåœT 0w=¯Ç/1•ÊT°×¤Û×=×tî>ù4)V—ó?ӌ>ÒåAëRqEF:Ԃõ
+͟ÊeßH†Ù–>|ìsnðn<xÄ?ݑ¥x؛×CҌ+øИ\©±+Zòý ¤‡Ùèw)Ÿ\E¼œeljÑr)ö™l\›lzŒÝÁü”¯R®RÏi+œ\±å
+gȹ¶+š°oÏ9(y®š'ð|é>@÷émêㆵK;²þ«êíªûã.çݽYéíK¦×–qPÜ%
+Ö3iÀ§{잮K}‡ëWéJÒÈ%bìÔk¤©)­$uBæRIFÍ0™Mÿür¸¿ø$¹]‘̓íºlu÷EºÇl(¨ó•8ȝ{)=L—¹ù~»(S9h¹´ù•™Ý݇{äá!]IN<£UÓe¥üL%¢)¹Î…¯ÜœÑ/~ÅéŽÐ¿e•§yÓ÷Vï@=ƒM^ô¬Ã‰'Ä­$½œáë[8Bø™×o¾µuO÷ºþË¥-ÅÈ7îç}±‡k8"—ÆWâ åÒÃ¥óöáå£ú‡¿13m´\*ÉàùöËõjÜí«t%i\®kNxz¹®n*Ëu÷$]Iê®ÞtiÖ¥aK¡¦<蕻Û×(ÅiR+}”R͒ý£ãž`ñ „ŸëdºMø‹'sºŸøÃ¿)wêiW%±Ê‹î;:œôNi堕¤—3¼uۓÔoW9Rë¯ïÞ¼í7Xÿü–ìæ^¶”nV¿•˜_ã+qÐréáÒù
+Kñ1¨Ûnv$¶£ùw_PÍWŒ›s¯9Ç¥å_œ_醻ks¢®©èæÒ5ï_ÝTã:ù},„ÜýÍ¡C¬Ñré®oaU·×áµö)]IŽ±ö¾P©û›ÃtV’^ÎíeºŠ§VRŠ¿9ÏöæPj¥R~ÆÉ`î{¤sð‚õ³-éÁ<üP·’ÌÃÏ3Qö`Ô ³p—WyÙÙ¹ÎAËýRE:uåɈ{¿Œ¯ÄAË¥Ø3¶ñ+ÙR@Óç´’ôòºßKuõȃqÐJÒ˹'Õ(å'O
+Ôš§|3åW÷иëòÃïåEܒʻ<¹}UYåU¤=œô¾P堕¤—3\6ǓÔysXóNß]:y'²ñÏn@mL¹¹´zj5å·¦œUÏ{My¯^Îêeo©yª˜ÿ5ÏÎé]TpÐr).~íìÍST¯€Ý¿JW’Æ%²æ¦º¼ã
+ZIz9w÷V­žZMyЋ©÷¯1 ­»´¹.ïÀa–ìð÷áJMÃÄ1kgº5÷‹kjº‡÷Ãï:¦Cæ8¼ÃTNeÞè¹À‡“ÞelÓJÒËî¢óIê8:½ót‡Òïî¤í7'ÿüvæænž*ížZOùí)gÝóÞSÞ»—³{Ù÷ÜyªßhödfìîmtºÚÚ¼Ku3]–ýÅû’û/´6ßHÌ*¥ëÅ¿úIÆ5æú.¸¥wQÁAË¥»¾9¸¡¦[œƒV’†gæpÿÉÝ©û›£éΔîL9ÓÏtO­¤<sž1ìÍQis]ށûIÆîZӃáò[SGϑÌÃÒx‰TrtôCxÉ– ÍñoÄ¿¹ÆaÑÝÝùðÆ3·»ßµ¿º°øC/ã[oÐûê°·ó=ÒòÝ~–7wU‹EJåþ²ßVwZÓN»5jÁAáÖVÝ%­;å[
+|K¾láÁÖ^׏ï>nÚªKuö¨ëŒúÀkË»Ÿ!÷FŠ;Rܑb,—žÚôÜ̔ß,]ÉNh˳›9¹éWÅ7W´6‡M, wÃﹸòtŸºC奮EáĄïubÂç–ËëNW¤î¤NLÊA+I/çênPrSبAùJmÅ¥›.“*¥{Ö,µÍó³¥ülž÷âåÑR~¦éiÇÉ+êü­xš’zEÑ÷É8hýxxPa5n:áLç+q{cѧk¨ÔÏK½¿Ž¯Ò•¤×ð{Й4œ)îi©á¢Ã ͯqÐJÒËyZj‹|ªq16áMÏæšFãâ[VËÌÉLïÆT¶:^•’«Ü=+Njv©3Ň ”ºIÙU´Ù™É\Ÿ4DžcíM¼Ø6¹¹KCj±FÑ\wôV„’ØæhFÕA >ƒV’^ÎpjOR§!Ÿ>g¢Ÿ¹}þ¾~|w1jîâCi±­GJÌo9#gÆAË¥‡KQö<}n>CًÉL:|оI ùêäšOžéË{Âû…•­*òÔ=VóÜI÷ ›7ŽrÜ mÞ1æcÐÓ{ÔêÃœþՏÅr}Eo>4Ç9f–맇—W÷G³O·:ÉN<Þéx™Çð1£ó•8h¹ž(‡Ž?Ýgå3ù¯­¯^-§ÅÅt‘˜㠕¤—sOÞ)QJŽ[¹Qr`n€%6—º<»œxՁqÐJÒËùpWßv¹ó"Dã+qÐr—œÝ6UŠE >øñè|9¯ï4SܙâÎc¹ô´ÔXöAòü>¤+ىšêÁÂ]2%j™sÐrŸH­–)ѤD-sZ.•¼Åj™¦p¼Ü«ç!]IÞ9‡î¦®µÌ9h%éåÜÝ'—’µìáÊà qõëèáZc: ¡ søWî‡Þöäî1{j2Z÷)ÈÖz|¯(Ë&ñn.2ꘂ¯#ç+qmrW©}i)é†óøsZ.ÝÝefx
+#å!KW’^?,ï£Û—–—ò3•8H¯Ç3™e{ù×ÑëÆ}s’ýcºí©ÔÃŒûº Û¶ÜS%MuÒçD}bÜÿDC| `þ ꍢò›tÑÆærZþ«‘4`¨;0Ÿ$¼H0ÓõÍÏ3]¸WW¥º<p“/o_Îûë;w¤¸#ÅX.=<µé¹™)¿Yº’Ø‰?ªÍt¼æòpqW}k’»‡¹„Äûd!=æK›mu¶ßVw ©^—uvÖ9(œFª;ôä>b–ÜJ|–Ôx˜û…̲j
+GÊC–®$½¼ÜÇËÊ3^QÊÏTâ }Ÿš/®š‡
+I¹¶X)DKZ¹¶yùwŠ•r@‹z¬”k>¥!-B,–†ŒÐf±4dF,–†D­òX)DKZs­b<µNÍ5‘ºÍ¢3[Ç,ÿN±²ïQ‰à¹Æ± ;ÓÙ÷Gˆ”{`‘ÊciޙÁ•C¨Íb%mGM!®­Ey,–†ìQ‹¥!g
+Ùs­ÚSíµXR#û£öîé]°X9d2$¿ 8êŞÜ|XtFÞxªán;þ·ýKˆû”R!8÷™On‡?ß3Dc±bÓðx„ôôœ3îyíKˆÿ·×íÌ|¤ý73Þú#’þ³´‰“*˜·±=C6ÿÍ(Ùn#YgdëtÌÉ3DÙCš·Êsòô Eˆ¿ KCf
+y¤ƒkÚæ#¤R÷;ÅÒØ·1¤æ0d¼Þ)VÒ6¶2rFÒ6¶œë±GFË%)×cÏÖQmKCŠ=Ÿˆ¥!›µ+‡Œ°µ¶ϒZ,†p‚‹Úö–-Š /͛ÅҐå±X ÿ¨…Œ\ž‘Jj±4dŒGIG²ÛxԃÃû’›÷üL3êΑú’¾Í–B܍ç›RÛ|ØïœÖ*‹¥!3j•ÅÊ!´µÅJÚ´VY¬”ƒ‘´y­B~Ô+•t¤\»EQnÕf±4dX¬’-jÛDyê-B
+¶ XIÕcõXÒRÈñÐVBÛö°5ZrÚºäqU§?¶ÚÚbåÚú|ؚý–BFÎÁHÚÌÖÌÏØ#f–a¤\=[‡Ú<C`+æÀcådÑf!5Z>L…ÝjÔQ¥!-ìVs-Õ¿A#–†·›ÇJ!Z‹•´!^ŽwJh3çú葃£ä’{äú°ò´‘BÒ7Æ3äi±…Ýú÷}
++*µyžÒ•¤R
+1M—•ò3•8ˆ‹}¸Ynv³o|Q<¶u4Kð•8HZÆý4é~˜®ÝÍ|%Z.ÅKg›l˜×ٜƒV’"g»Ç˜¦kÌȃq+SÁõ=l‘ËQ½T–Kø†îb[Çciƒ¯ÄAh›K‹ë*Þ:_‰ƒ–KçKuÉAbLáØ"éJRè=-Ë3_QÊÏTâ m‘q碶ÈÅãMZ;}êlëX[‚¯ÄAh›K‹ë*Ñ_‰ƒ–KÇKu‰Ó S@m ZI
+MAÍâ´’93³hÙú+Jù™J¤fÙ£É=öhrÉÒL»5¹G&×ùJ´ÔA^¥Öä’Òݜ–šqÐr)n÷´&—)°ÉuZIŠRX“«eë¯(åg*q¾D%õD%õDÅ{¢â=іz¢-õDÛüC*óæ=Ñæ=іz¢-õD›÷D[ê‰6ï‰6Ômó«t%)Já=Qñž¨¤ž¨xOTf¸{‚=шiDcqðßu²€÷œjOä|%W¬ƒRÚL‰7©_‰ƒ–I¥÷ ®iw­jOä´’¥(Ã&@£”Ÿ©ÄAÙ,ì‰FL#3‹_ÿª=‘ó•8ÈÍBi3]¤3Ì¢©¹Yj5³È³f
+쉜ƒV’ºYÃ&@£”Ÿ©ÄA4Kókkók•ï{…ï— ây£6ÿÁWâ %ÒêÒÍuù¤eð•8h¹t©®»Nk
+qº®3ò`”Í‚—HƒŽf‘ƒ·©ú¨–8^¢à+q›Ò9M×ôIËà+q›å®øªkºágz4éJR7 cœ®ëŒ<qÇüÙäGÈFPù«CZgÓYà~Æ&7øJd—PJ¿–Óhêå##R3Z.Ýõòi:54¹ÁA+I‘³î1Óe¥üL%JfÑæõ”Æ0‹tªT--d|%2³PZ‡éaKÍ8h¹Ô̂Cå™ÂfyJW’šY4Æaº¬”Ÿ©ÄAz½ÍQ½mñ©o,× m:Ë»·-ÎWâ ¹\ÀÖ® Ïö ®Íßkç+qÐ2©´Ã֒5¶-ÎA+I¡wZ ›¤ˆR~¦e³°m11d¼›YŽj‰ÓÎÎWâ 7 ¥›ëÚü½v¾¹Y¤=¶ó@S˜éÑ<¤+IÝ,ˆaSZQÊÏT⠚¥uÿ&ºÙ¿‰Œåΐ®c‘¢·¡Â,ÎWâ ¹=¤í.m¦«ù7Qð•8h™TŠB]R<¦@³8­$E)ŠÅèÝtõy0ÊfáKÄ ½–ÊNÄSÕÅ/)K|‰œƒÜ,”6ÓÕü›(øJäf©ÕÌ"/SàKä´’Ô͂½›®Þ#ÆA0ËÿñãÿZÛS=endstream
+endobj
+6 0 obj
+17999
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 612 792]
+/Rotate 0/Parent 3 0 R
+/Resources<</ProcSet[/PDF]
+/ExtGState 8 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+/Rotate 0>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+8 0 obj
+<</R7
+7 0 R>>
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 8.15)
+/CreationDate(D:20070312220102)
+/ModDate(D:20070312220102)
+/Title(BOARD.bin)
+/Creator(PScript5.dll Version 5.2)
+/Author(Jakub)>>endobj
+xref
+0 9
+0000000000 65535 f
+0000018313 00000 n
+0000018431 00000 n
+0000018245 00000 n
+0000018105 00000 n
+0000000015 00000 n
+0000018084 00000 n
+0000018361 00000 n
+0000018402 00000 n
+trailer
+<< /Size 9 /Root 1 0 R /Info 2 0 R
+/ID [(ý*iš@kŒìïǃ¼þ)(ý*iš@kŒìïǃ¼þ)]
+>>
+startxref
+18608
+%%EOF
/roboti/istrobot/camerus/HW/CAM_PROFI/BOARD.PHO
0,0 → 1,315
*
*
G04 PADS Layout (Build Number 2006.45.1) generated Gerber (RS-274-X) file*
G04 PC Version=2.1*
*
%IN "LEDpanel.pcb"*%
*
%MOIN*%
*
%FSLAX35Y35*%
*
*
*
*
G04 PC Standard Apertures*
*
*
G04 Thermal Relief Aperture macro.*
%AMTER*
1,1,$1,0,0*
1,0,$1-$2,0,0*
21,0,$3,$4,0,0,45*
21,0,$3,$4,0,0,135*
%
*
*
G04 Annular Aperture macro.*
%AMANN*
1,1,$1,0,0*
1,0,$2,0,0*
%
*
*
G04 Odd Aperture macro.*
%AMODD*
1,1,$1,0,0*
1,0,$1-0.005,0,0*
%
*
*
G04 PC Custom Aperture Macros*
*
*
*
*
*
*
G04 PC Aperture Table*
*
%ADD024C,0.001*%
%ADD025C,0.01*%
*
*
*
*
G04 PC Copper Outlines (0)*
G04 Layer Name LEDpanel.pcb - dark (0)*
%LPD*%
*
*
G04 PC Area=Custom_Thermal*
*
G04 PC Custom Flashes*
G04 Layer Name LEDpanel.pcb - flashes*
%LPD*%
*
*
G04 PC Circuitry*
G04 Layer Name LEDpanel.pcb - circuitry*
%LPD*%
*
G54D24*
G01X120000Y179100D02*
X120003D01*
X651200D02*
X651203D01*
X651200Y120000D02*
X651203D01*
X651200Y179100D02*
X651203D01*
G54D25*
X120000D02*
X651200D01*
Y120000*
X120000*
Y179100*
Y212000D02*
X367827D01*
X120000D02*
X130000Y214500D01*
Y209500*
X120000Y212000*
X651200D02*
X403373D01*
X651200D02*
X641200Y209500D01*
Y214500*
X651200Y212000*
X120000Y184100D02*
Y217000D01*
X651200Y184100D02*
Y217000D01*
X373782Y214812D02*
X371509D01*
X371509D02*
X371282Y212000D01*
X371509Y212312*
X371509D02*
X372191Y212625D01*
X372873*
X373555Y212312*
X373555D02*
X374009Y211687D01*
X374009D02*
X374236Y210750D01*
X374009Y210125*
X373782Y209187*
X373782D02*
X373327Y208562D01*
X373327D02*
X372645Y208250D01*
X371964*
X371282Y208562*
X371282D02*
X371055Y208875D01*
X370827Y209500*
X376736Y214812D02*
X379236D01*
X379236D02*
X377873Y212312D01*
X377873D02*
X378555D01*
X378555D02*
X379009Y212000D01*
X379236Y211687*
X379236D02*
X379464Y210750D01*
Y210125*
X379236Y209187*
X379236D02*
X378782Y208562D01*
X378782D02*
X378100Y208250D01*
X377418*
X376736Y208562*
X376736D02*
X376509Y208875D01*
X376282Y209500*
X381509Y213562D02*
X381964Y213875D01*
X382645Y214812*
X382645D02*
Y208250D01*
X384918Y213250D02*
Y213562D01*
X384918D02*
X385145Y214187D01*
X385145D02*
X385373Y214500D01*
X385827Y214812*
X385827D02*
X386736D01*
X386736D02*
X387191Y214500D01*
X387418Y214187*
X387418D02*
X387645Y213562D01*
X387645D02*
Y212937D01*
X387645D02*
X387418Y212312D01*
X387418D02*
X386964Y211375D01*
X384691Y208250*
X387873*
X389918Y212625D02*
Y208250D01*
Y211375D02*
X390600Y212312D01*
X390600D02*
X391055Y212625D01*
X391736*
X392191Y212312*
X392191D02*
X392418Y211375D01*
Y208250*
Y211375D02*
X393100Y212312D01*
X393100D02*
X393555Y212625D01*
X394236*
X394691Y212312*
X394691D02*
X394918Y211375D01*
Y208250*
X396964Y214812D02*
X397191Y214500D01*
X397418Y214812*
X397418D02*
X397191Y215125D01*
X396964Y214812*
X397191Y212625D02*
Y208250D01*
X399464Y214812D02*
Y208250D01*
X672000Y120000D02*
Y142800D01*
Y120000D02*
X669500Y130000D01*
X674500*
X672000Y120000*
Y179100D02*
Y156300D01*
Y179100D02*
X674500Y169100D01*
X669500*
X672000Y179100*
X656200Y120000D02*
X677000D01*
X656200Y179100D02*
X677000D01*
X662909Y152362D02*
X660636D01*
X660636D02*
X660409Y149550D01*
X660636Y149862*
X660636D02*
X661318Y150175D01*
X662000*
X662682Y149862*
X662682D02*
X663136Y149237D01*
X663136D02*
X663364Y148300D01*
X663136Y147675*
X662909Y146737*
X662909D02*
X662455Y146112D01*
X662455D02*
X661773Y145800D01*
X661091*
X660409Y146112*
X660409D02*
X660182Y146425D01*
X659955Y147050*
X668364Y150175D02*
X668136Y149237D01*
X668136D02*
X667682Y148612D01*
X667682D02*
X667000Y148300D01*
X666773*
X666091Y148612*
X666091D02*
X665636Y149237D01*
X665636D02*
X665409Y150175D01*
Y150487*
X665409D02*
X665636Y151425D01*
X666091Y152050*
X666773Y152362*
X666773D02*
X667000D01*
X667000D02*
X667682Y152050D01*
X668136Y151425*
X668364Y150175*
Y148612*
X668364D02*
X668136Y147050D01*
X667682Y146112*
X667682D02*
X667000Y145800D01*
X666545*
X665864Y146112*
X665864D02*
X665636Y146737D01*
X670409Y151112D02*
X670864Y151425D01*
X671545Y152362*
X671545D02*
Y145800D01*
X673591Y150175D02*
Y145800D01*
Y148925D02*
X674273Y149862D01*
X674273D02*
X674727Y150175D01*
X675409*
X675864Y149862*
X675864D02*
X676091Y148925D01*
Y145800*
Y148925D02*
X676773Y149862D01*
X676773D02*
X677227Y150175D01*
X677909*
X678364Y149862*
X678364D02*
X678591Y148925D01*
Y145800*
X680636Y152362D02*
X680864Y152050D01*
X681091Y152362*
X681091D02*
X680864Y152675D01*
X680636Y152362*
X680864Y150175D02*
Y145800D01*
X683136Y152362D02*
Y145800D01*
X0Y0D02*
M02*
/roboti/istrobot/camerus/HW/CAM_PROFI/BOARD.rep
0,0 → 1,13
 
 
Photo-Plotter Apertures Report
==============================
Position Width Hgt/ID Shape Qty
======== ===== ====== ===== ===
24 1 0 RND 4
25 10 0 RND 26
 
 
 
 
 
/roboti/istrobot/camerus/HW/CAM_PROFI/DRILL.DRL
0,0 → 1,43
%
T1C.035F197S55
X014Y014506
X014Y015494
X01946Y015494
X01946Y014506
X022219Y013728
X022219Y017228
X02492Y015494
X02492Y014506
X03038Y014506
X03038Y015494
X033113Y017228
X033113Y013728
X03584Y014506
X03584Y015494
X038509Y016198
X037509Y016198
X0381Y0142
X0391Y0142
X0413Y014506
X0413Y015494
X039509Y016198
X043339Y017228
X043339Y013728
X044675Y013728
X044675Y017228
X04676Y015494
X04676Y014506
X05222Y014506
X05222Y015494
X054953Y017228
X054953Y013728
X05768Y014506
X05768Y015494
X06314Y015494
X06314Y014506
T2C.12598F035S794
X0168Y0134
X0278Y0136
X0494Y0134
X0604Y0134
M30
/roboti/istrobot/camerus/HW/CAM_PROFI/DRILL.lst
0,0 → 1,46
Drill Listing
=============
Drill: .035 Tool: 1 Feed: 197 Speed: 550
X 140000 Y 145062
X 140000 Y 154937
X 194600 Y 154937
X 194600 Y 145062
X 222186 Y 137284
X 222186 Y 172284
X 249200 Y 154937
X 249200 Y 145062
X 303800 Y 145062
X 303800 Y 154937
X 331129 Y 172284
X 331129 Y 137284
X 358400 Y 145062
X 358400 Y 154937
X 385087 Y 161979
X 375087 Y 161979
X 381000 Y 142000
X 391000 Y 142000
X 413000 Y 145062
X 413000 Y 154937
X 395087 Y 161979
X 433392 Y 172284
X 433392 Y 137284
X 446753 Y 137284
X 446753 Y 172284
X 467600 Y 154937
X 467600 Y 145062
X 522200 Y 145062
X 522200 Y 154937
X 549530 Y 172284
X 549530 Y 137284
X 576800 Y 145062
X 576800 Y 154937
X 631400 Y 154937
X 631400 Y 145062
 
Drill: .12598 Tool: 2 Feed: 35 Speed: 794
X 168000 Y 134000
X 278000 Y 136000
X 494000 Y 134000
X 604000 Y 134000
 
End of Listing
/roboti/istrobot/camerus/HW/CAM_PROFI/DRILL.rep
0,0 → 1,13
 
 
Drill Sizes Report
==================
Tool Size Pltd Feed Speed Qty
==== ==== ==== ==== ===== ===
1 35 x 197 550 35
2 125.98 x 35 794 4
 
 
 
 
 
/roboti/istrobot/camerus/HW/CAM_PROFI/V2.PHO
0,0 → 1,1574
*
*
G04 PADS Layout (Build Number 2006.45.1) generated Gerber (RS-274-X) file*
G04 PC Version=2.1*
*
%IN "LEDpanel.pcb"*%
*
%MOIN*%
*
%FSLAX35Y35*%
*
*
*
*
G04 PC Standard Apertures*
*
*
G04 Thermal Relief Aperture macro.*
%AMTER*
1,1,$1,0,0*
1,0,$1-$2,0,0*
21,0,$3,$4,0,0,45*
21,0,$3,$4,0,0,135*
%
*
*
G04 Annular Aperture macro.*
%AMANN*
1,1,$1,0,0*
1,0,$2,0,0*
%
*
*
G04 Odd Aperture macro.*
%AMODD*
1,1,$1,0,0*
1,0,$1-0.005,0,0*
%
*
*
G04 PC Custom Aperture Macros*
*
*
*
*
*
*
G04 PC Aperture Table*
*
%ADD012R,0.07X0.07*%
%ADD013C,0.23622*%
%ADD025C,0.01*%
%ADD031C,0.07*%
%ADD042C,0.045*%
%ADD043R,0.066X0.066*%
%ADD044C,0.066*%
%ADD045R,0.065X0.065*%
%ADD046C,0.08268*%
%ADD047C,0.035*%
%ADD048C,0.025*%
*
*
*
*
G04 PC Copper Outlines (0)*
G04 Layer Name LEDpanel.pcb - dark (0)*
%LPD*%
*
*
G04 PC Area=ANP000000*
G75*
G36*
G01*
X648700Y123000D02*
Y176100D01*
G03*
X648200Y176600I-500J-0D01*
G01*
X555558D01*
G03*
X555136Y175833I0J-500D01*
G02*
X545345Y167138I-5606J-3548D01*
G03*
X545029Y167250I-316J-388D01*
G01*
X451254D01*
G03*
X450939Y167138I0J-500D01*
G02*
X442568I-4186J5147D01*
G03*
X442252Y167250I-316J-388D01*
G01*
X437893D01*
G03*
X437578Y167138I0J-500D01*
G02*
X429207I-4186J5147D01*
G03*
X428891Y167250I-316J-388D01*
G01*
X400923D01*
G03*
X400492Y166497I0J-500D01*
G02*
X400837Y165229I-2155J-1268D01*
G01*
Y158729D01*
G02*
X398337Y156229I-2500J0D01*
G01*
X391837D01*
G02*
X390587Y156564I0J2500D01*
G03*
X389837Y156131I-250J-433D01*
G01*
Y151057D01*
G03*
X389984Y150703I500J-0D01*
G01*
X392541Y148146D01*
G03*
X392894Y148000I353J354D01*
G01*
X394500D01*
G02*
X397000Y145500I0J-2500D01*
G01*
Y138750D01*
G03*
X397500Y138250I500J0D01*
G01*
X399969D01*
G03*
X400323Y138396I0J500D01*
G01*
X407054Y145127D01*
G03*
X407200Y145481I-354J354D01*
G01*
Y148363D01*
G02*
X408401Y150499I2500J-0D01*
G03*
X408527Y151245I-260J427D01*
G02*
X417600Y158470I4473J3692D01*
G03*
X417643Y158421I397J304D01*
G01*
X425022Y151042D01*
G03*
X425204Y150926I354J353D01*
G02*
X426748Y149940I-1462J-3991D01*
G01*
X432634Y144054D01*
G03*
X433016Y143908I353J353D01*
G02*
X439605Y139612I376J-6623D01*
G03*
X440541I468J175D01*
G02*
X447130Y143908I6212J-2327D01*
G03*
X447512Y144054I28J499D01*
G01*
X452463Y149005D01*
G02*
X454579Y150156I3005J-3005D01*
G03*
X454827Y150291I-105J489D01*
G01*
X462957Y158421D01*
G03*
X463000Y158470I-354J353D01*
G02*
X472073Y151245I4600J-3533D01*
G03*
X472199Y150499I386J-319D01*
G02*
X473089Y149571I-1299J-2136D01*
G03*
X473526Y149313I437J242D01*
G01*
X476186D01*
G03*
X476539Y149459I-0J500D01*
G01*
X485022Y157942D01*
G02*
X488027Y159187I3005J-3005D01*
G01*
X518061D01*
G03*
X518390Y159310I0J500D01*
G02*
X526673Y151245I3810J-4373D01*
G03*
X526799Y150499I386J-319D01*
G02*
X528000Y148363I-1299J-2136D01*
G01*
Y141763D01*
G02*
X525500Y139263I-2500J-0D01*
G01*
X518900D01*
G02*
X516400Y141763I0J2500D01*
G01*
Y148363D01*
G02*
X516915Y149883I2500J-0D01*
G03*
X516518Y150687I-397J304D01*
G01*
X489995D01*
G03*
X489641Y150541I-0J-500D01*
G01*
X481158Y142058D01*
G02*
X478153Y140813I-3005J3005D01*
G01*
X473526D01*
G03*
X473089Y140555I0J-500D01*
G02*
X470900Y139263I-2189J1208D01*
G01*
X464300D01*
G02*
X461800Y141763I0J2500D01*
G01*
Y144036D01*
G03*
X460946Y144389I-500J-0D01*
G01*
X459552Y142995D01*
G02*
X457437Y141844I-3005J3005D01*
G03*
X457188Y141709I104J-489D01*
G01*
X453522Y138043D01*
G03*
X453376Y137661I354J-353D01*
G02*
X440541Y134958I-6623J-376D01*
G03*
X439605I-468J-176D01*
G02*
X426769Y137661I-6213J2327D01*
G03*
X426623Y138043I-499J29D01*
G01*
X421839Y142828D01*
G03*
X421657Y142944I-354J-354D01*
G02*
X420113Y143930I1462J3991D01*
G01*
X419654Y144389D01*
G03*
X418800Y144036I-354J-353D01*
G01*
Y141763D01*
G02*
X416300Y139263I-2500J-0D01*
G01*
X413418D01*
G03*
X413064Y139117I-0J-500D01*
G01*
X404942Y130995D01*
G02*
X401937Y129750I-3005J3005D01*
G01*
X378747D01*
G02*
X375742Y130995I-0J4250D01*
G01*
X366995Y139742D01*
G02*
X365750Y142747I3005J3005D01*
G01*
Y143486D01*
G03*
X365604Y143839I-500J-0D01*
G01*
X365054Y144389D01*
G03*
X364200Y144036I-354J-353D01*
G01*
Y141763D01*
G02*
X361700Y139263I-2500J-0D01*
G01*
X355100D01*
G02*
X352600Y141763I0J2500D01*
G01*
Y148363D01*
G02*
X353801Y150499I2500J-0D01*
G03*
X353927Y151245I-260J427D01*
G02*
X363000Y158470I4473J3692D01*
G03*
X363043Y158421I397J304D01*
G01*
X373005Y148459D01*
G02*
X374250Y145453I-3005J-3006D01*
G01*
Y144714D01*
G03*
X374396Y144361I500J0D01*
G01*
X380361Y138396D01*
G03*
X380714Y138250I353J354D01*
G01*
X384500D01*
G03*
X385000Y138750I-0J500D01*
G01*
Y142045D01*
G03*
X384854Y142398I-500J-0D01*
G01*
X381728Y145523D01*
G02*
X380337Y148882I3359J3359D01*
G01*
Y156131D01*
G03*
X379587Y156564I-500J0D01*
G02*
X378337Y156229I-1250J2165D01*
G01*
X371837D01*
G02*
X369337Y158729I0J2500D01*
G01*
Y165229D01*
G02*
X369841Y166734I2500J0D01*
G03*
X369441Y167535I-400J301D01*
G01*
X335959D01*
G03*
X335621Y167403I0J-500D01*
G02*
X326638I-4492J4882D01*
G03*
X326299Y167535I-339J-368D01*
G01*
X227016D01*
G03*
X226678Y167403I0J-500D01*
G02*
X216581Y175833I-4492J4882D01*
G03*
X216158Y176600I-423J267D01*
G01*
X123000D01*
G03*
X122500Y176100I0J-500D01*
G01*
Y123000D01*
G03*
X123000Y122500I500J0D01*
G01*
X648200D01*
G03*
X648700Y123000I-0J500D01*
G37*
G74*
*
*
G04 PC Void Outlines (0)*
G04 Layer Name LEDpanel.pcb - clear (0)*
%LPC*%
*
*
G04 PC Area=ANP000000*
G75*
G36*
G01*
X627590Y159310D02*
G02*
X635873Y151245I3810J-4373D01*
G03*
X635999Y150499I386J-319D01*
G02*
X637200Y148363I-1299J-2136D01*
G01*
Y141763D01*
G02*
X634700Y139263I-2500J-0D01*
G01*
X628100D01*
G02*
X625600Y141763I0J2500D01*
G01*
Y148363D01*
G02*
X626115Y149883I2500J-0D01*
G03*
X625718Y150687I-397J304D01*
G01*
X599595D01*
G03*
X599241Y150541I-0J-500D01*
G01*
X590758Y142058D01*
G02*
X587753Y140813I-3005J3005D01*
G01*
X582726D01*
G03*
X582289Y140555I0J-500D01*
G02*
X580100Y139263I-2189J1208D01*
G01*
X573500D01*
G02*
X571000Y141763I0J2500D01*
G01*
Y148363D01*
G02*
X571515Y149883I2500J-0D01*
G03*
X571118Y150687I-397J304D01*
G01*
X569150D01*
G03*
X568796Y150541I-0J-500D01*
G01*
X556299Y138043D01*
G03*
X556153Y137661I353J-353D01*
G02*
X549907Y143908I-6623J-376D01*
G03*
X550288Y144054I28J499D01*
G01*
X564177Y157942D01*
G02*
X567182Y159187I3005J-3005D01*
G01*
X572661D01*
G03*
X572990Y159310I0J500D01*
G02*
X581273Y151245I3810J-4373D01*
G03*
X581399Y150499I386J-319D01*
G02*
X582289Y149571I-1299J-2136D01*
G03*
X582726Y149313I437J242D01*
G01*
X585786D01*
G03*
X586139Y149459I-0J500D01*
G01*
X594622Y157942D01*
G02*
X597627Y159187I3005J-3005D01*
G01*
X627261D01*
G03*
X627590Y159310I0J500D01*
G37*
G74*
*
G75*
G36*
G01*
X617000Y172750D02*
Y163750D01*
G02*
X614500Y161250I-2500J0D01*
G01*
X585682D01*
G02*
X583182Y163750I-0J2500D01*
G01*
Y172750D01*
G02*
X585682Y175250I2500J0D01*
G01*
X614500D01*
G02*
X617000Y172750I0J-2500D01*
G37*
G74*
*
G75*
G36*
G01*
X330753Y143908D02*
G02*
X324506Y137661I376J-6623D01*
G03*
X324361Y138043I-499J29D01*
G01*
X311863Y150541D01*
G03*
X311510Y150687I-353J-354D01*
G01*
X309482D01*
G03*
X309085Y149883I-0J-500D01*
G02*
X309600Y148363I-1985J-1520D01*
G01*
Y141763D01*
G02*
X307100Y139263I-2500J-0D01*
G01*
X300500D01*
G02*
X298311Y140555I0J2500D01*
G03*
X297874Y140813I-437J-242D01*
G01*
X294547D01*
G02*
X291542Y142058I-0J4250D01*
G01*
X283059Y150541D01*
G03*
X282705Y150687I-354J-354D01*
G01*
X254882D01*
G03*
X254485Y149883I-0J-500D01*
G02*
X255000Y148363I-1985J-1520D01*
G01*
Y141763D01*
G02*
X252500Y139263I-2500J-0D01*
G01*
X245900D01*
G02*
X243400Y141763I0J2500D01*
G01*
Y148363D01*
G02*
X244601Y150499I2500J-0D01*
G03*
X244727Y151245I-260J427D01*
G02*
X253010Y159310I4473J3692D01*
G03*
X253339Y159187I329J377D01*
G01*
X284673D01*
G02*
X287678Y157942I-0J-4250D01*
G01*
X296161Y149459D01*
G03*
X296514Y149313I353J354D01*
G01*
X297874D01*
G03*
X298311Y149571I-0J500D01*
G02*
X299201Y150499I2189J-1208D01*
G03*
X299327Y151245I-260J427D01*
G02*
X307610Y159310I4473J3692D01*
G03*
X307939Y159187I329J377D01*
G01*
X313477D01*
G02*
X316482Y157942I0J-4250D01*
G01*
X330371Y144054D01*
G03*
X330753Y143908I354J353D01*
G37*
G74*
*
G75*
G36*
G01*
X221810D02*
G02*
X215563Y137661I376J-6623D01*
G03*
X215417Y138043I-499J29D01*
G01*
X202920Y150541D01*
G03*
X202566Y150687I-354J-354D01*
G01*
X200282D01*
G03*
X199885Y149883I-0J-500D01*
G02*
X200400Y148363I-1985J-1520D01*
G01*
Y141763D01*
G02*
X197900Y139263I-2500J-0D01*
G01*
X191300D01*
G02*
X189111Y140555I0J2500D01*
G03*
X188674Y140813I-437J-242D01*
G01*
X183947D01*
G02*
X180942Y142058I-0J4250D01*
G01*
X172459Y150541D01*
G03*
X172105Y150687I-354J-354D01*
G01*
X145682D01*
G03*
X145285Y149883I-0J-500D01*
G02*
X145800Y148363I-1985J-1520D01*
G01*
Y141763D01*
G02*
X143300Y139263I-2500J-0D01*
G01*
X136700D01*
G02*
X134200Y141763I0J2500D01*
G01*
Y148363D01*
G02*
X135401Y150499I2500J-0D01*
G03*
X135527Y151245I-260J427D01*
G02*
X141719Y160476I4473J3692D01*
G03*
X141850Y160454I148J478D01*
X141967Y160393I287J410D01*
G02*
X143810Y159310I-1967J-5456D01*
G03*
X144139Y159187I329J377D01*
G01*
X174073D01*
G02*
X177078Y157942I-0J-4250D01*
G01*
X185561Y149459D01*
G03*
X185914Y149313I353J354D01*
G01*
X188674D01*
G03*
X189111Y149571I-0J500D01*
G02*
X190001Y150499I2189J-1208D01*
G03*
X190127Y151245I-260J427D01*
G02*
X198410Y159310I4473J3692D01*
G03*
X198739Y159187I329J377D01*
G01*
X204534D01*
G02*
X207539Y157942I-0J-4250D01*
G01*
X221428Y144054D01*
G03*
X221810Y143908I353J353D01*
G37*
G74*
*
G75*
G36*
G01*
X189000Y172750D02*
Y163750D01*
G02*
X186500Y161250I-2500J0D01*
G01*
X142955D01*
G02*
X142273Y161345I-0J2500D01*
G03*
X142154Y161363I-136J-481D01*
X142048Y161420I-287J-409D01*
G02*
X140455Y163750I907J2330D01*
G01*
Y172750D01*
G02*
X142955Y175250I2500J0D01*
G01*
X186500D01*
G02*
X189000Y172750I0J-2500D01*
G37*
G74*
*
*
G04 PC Copper Outlines (1)*
G04 Layer Name LEDpanel.pcb - dark (1)*
%LPD*%
*
*
G04 PC Area=Custom_Thermal*
*
G04 PC Custom Flashes*
G04 Layer Name LEDpanel.pcb - flashes*
%LPD*%
*
*
G04 PC Circuitry*
G04 Layer Name LEDpanel.pcb - circuitry*
%LPD*%
*
G54D12*
G01X391000Y142000D03*
G54D13*
X604000Y134000D03*
X168000D03*
X278000Y136000D03*
X494000Y134000D03*
G54D25*
X614000Y171250D02*
Y166000D01*
X611818*
X610182Y171250D02*
Y166000D01*
Y171250D02*
X607818D01*
X610182Y168750D02*
X608727D01*
X610182Y166000D02*
X607818D01*
X606182Y171250D02*
Y166000D01*
Y171250D02*
X604909D01*
X604364Y171000*
X604000Y170500*
X603818Y170000*
X603636Y169250*
Y168000*
X603818Y167250*
X604000Y166750*
X604364Y166250*
X604909Y166000*
X606182*
X602000Y169500D02*
Y164250D01*
Y168750D02*
X601636Y169250D01*
X601273Y169500*
X600727*
X600364Y169250*
X600000Y168750*
X599818Y168000*
Y167500*
X600000Y166750*
X600364Y166250*
X600727Y166000*
X601273*
X601636Y166250*
X602000Y166750*
X596000Y169500D02*
Y166000D01*
Y168750D02*
X596364Y169250D01*
X596727Y169500*
X597273*
X597636Y169250*
X598000Y168750*
X598182Y168000*
Y167500*
X598000Y166750*
X597636Y166250*
X597273Y166000*
X596727*
X596364Y166250*
X596000Y166750*
X594364Y169500D02*
Y166000D01*
Y168500D02*
X593818Y169250D01*
X593455Y169500*
X592909*
X592545Y169250*
X592364Y168500*
Y166000*
X590727Y168000D02*
X588545D01*
Y168500*
X588727Y169000*
X588909Y169250*
X589273Y169500*
X589818*
X590182Y169250*
X590545Y168750*
X590727Y168000*
Y167500*
X590545Y166750*
X590182Y166250*
X589818Y166000*
X589273*
X588909Y166250*
X588545Y166750*
X586909Y171250D02*
Y166000D01*
X186000Y171250D02*
Y166000D01*
X183455Y171250D02*
X186000Y167750D01*
X185091Y169000D02*
X183455Y166000D01*
X180364Y171250D02*
X181818Y166000D01*
X180364Y171250D02*
X178909Y166000D01*
X181273Y167750D02*
X179455D01*
X177273Y171250D02*
Y166000D01*
X174727Y171250D02*
X177273Y167750D01*
X176364Y169000D02*
X174727Y166000D01*
X173091Y171250D02*
Y166000D01*
X170909*
X169273Y171250D02*
Y166000D01*
X167636Y171250D02*
Y166000D01*
X165091Y171250D02*
X167636Y167750D01*
X166727Y169000D02*
X165091Y166000D01*
X159091Y170000D02*
Y170250D01*
X158909Y170750*
X158727Y171000*
X158364Y171250*
X157636*
X157273Y171000*
X157091Y170750*
X156909Y170250*
Y169750*
X157091Y169250*
X157455Y168500*
X159273Y166000*
X156727*
X154000Y171250D02*
X154545Y171000D01*
X154909Y170250*
X155091Y169000*
Y168250*
X154909Y167000*
X154545Y166250*
X154000Y166000*
X153636*
X153091Y166250*
X152727Y167000*
X152545Y168250*
Y169000*
X152727Y170250*
X153091Y171000*
X153636Y171250*
X154000*
X149818D02*
X150364Y171000D01*
X150727Y170250*
X150909Y169000*
Y168250*
X150727Y167000*
X150364Y166250*
X149818Y166000*
X149455*
X148909Y166250*
X148545Y167000*
X148364Y168250*
Y169000*
X148545Y170250*
X148909Y171000*
X149455Y171250*
X149818*
X144182D02*
X146000Y166000D01*
X146727Y171250D02*
X144182D01*
X648700Y123000D02*
Y176100D01*
G75*
G03X648200Y176600I-500J-0D01*
G01X555558*
G03X555136Y175833I0J-500*
G01X545345Y167138D02*
G03X555136Y175833I4185J5147D01*
G01X545345Y167138D02*
G03X545029Y167250I-316J-388D01*
G01X451254*
G03X450939Y167138I0J-500*
G01X442568D02*
G03X450939I4185J5147D01*
G01X442568D02*
G03X442252Y167250I-316J-388D01*
G01X437893*
G03X437578Y167138I0J-500*
G01X429207D02*
G03X437578I4185J5147D01*
G01X429207D02*
G03X428891Y167250I-316J-388D01*
G01X400923*
G03X400492Y166497I0J-500*
G01X400837Y165229D02*
G03X400492Y166497I-2500J0D01*
G01X400837Y165229D02*
Y158729D01*
X398337Y156229D02*
G03X400837Y158729I0J2500D01*
G01X398337Y156229D02*
X391837D01*
X390587Y156564D02*
G03X391837Y156229I1250J2165D01*
G01X390587Y156564D02*
G03X389837Y156131I-250J-433D01*
G01Y151057*
G03X389984Y150703I500J-0*
G01X392541Y148146*
G03X392894Y148000I353J354*
G01X394500*
X397000Y145500D02*
G03X394500Y148000I-2500J0D01*
G01X397000Y145500D02*
Y138750D01*
G03X397500Y138250I500J0*
G01X399969*
G03X400323Y138396I0J500*
G01X407054Y145127*
G03X407200Y145481I-354J354*
G01Y148363*
X408401Y150499D02*
G03X407200Y148363I1299J-2136D01*
G01X408401Y150499D02*
G03X408527Y151245I-260J427D01*
G01X417600Y158470D02*
G03X408527Y151245I-4600J-3533D01*
G01X417600Y158470D02*
G03X417643Y158421I397J304D01*
G01X425022Y151042*
G03X425204Y150926I354J353*
G01X426748Y149940D02*
G03X425204Y150926I-3006J-3005D01*
G01X426748Y149940D02*
X432634Y144054D01*
G03X433016Y143908I353J353*
G01X439605Y139612D02*
G03X433016Y143908I-6213J-2327D01*
G01X439605Y139612D02*
G03X440541I468J175D01*
G01X447130Y143908D02*
G03X440541Y139612I-377J-6623D01*
G01X447130Y143908D02*
G03X447512Y144054I28J499D01*
G01X452463Y149005*
X454579Y150156D02*
G03X452463Y149005I889J-4156D01*
G01X454579Y150156D02*
G03X454827Y150291I-105J489D01*
G01X462957Y158421*
G03X463000Y158470I-354J353*
G01X472073Y151245D02*
G03X463000Y158470I-4473J3692D01*
G01X472073Y151245D02*
G03X472199Y150499I386J-319D01*
G01X473089Y149571D02*
G03X472199Y150499I-2189J-1208D01*
G01X473089Y149571D02*
G03X473526Y149313I437J242D01*
G01X476186*
G03X476539Y149459I-0J500*
G01X485022Y157942*
X488027Y159187D02*
G03X485022Y157942I0J-4250D01*
G01X488027Y159187D02*
X518061D01*
G03X518390Y159310I0J500*
G01X526673Y151245D02*
G03X518390Y159310I-4473J3692D01*
G01X526673Y151245D02*
G03X526799Y150499I386J-319D01*
G01X528000Y148363D02*
G03X526799Y150499I-2500J-0D01*
G01X528000Y148363D02*
Y141763D01*
X525500Y139263D02*
G03X528000Y141763I0J2500D01*
G01X525500Y139263D02*
X518900D01*
X516400Y141763D02*
G03X518900Y139263I2500J-0D01*
G01X516400Y141763D02*
Y148363D01*
X516915Y149883D02*
G03X516400Y148363I1985J-1520D01*
G01X516915Y149883D02*
G03X516518Y150687I-397J304D01*
G01X489995*
G03X489641Y150541I-0J-500*
G01X481158Y142058*
X478153Y140813D02*
G03X481158Y142058I0J4250D01*
G01X478153Y140813D02*
X473526D01*
G03X473089Y140555I0J-500*
G01X470900Y139263D02*
G03X473089Y140555I0J2500D01*
G01X470900Y139263D02*
X464300D01*
X461800Y141763D02*
G03X464300Y139263I2500J-0D01*
G01X461800Y141763D02*
Y144036D01*
G03X460946Y144389I-500J-0*
G01X459552Y142995*
X457437Y141844D02*
G03X459552Y142995I-890J4156D01*
G01X457437Y141844D02*
G03X457188Y141709I104J-489D01*
G01X453522Y138043*
G03X453376Y137661I354J-353*
G01X440541Y134958D02*
G03X453376Y137661I6212J2327D01*
G01X440541Y134958D02*
G03X439605I-468J-176D01*
G01X426769Y137661D02*
G03X439605Y134958I6623J-376D01*
G01X426769Y137661D02*
G03X426623Y138043I-499J29D01*
G01X421839Y142828*
G03X421657Y142944I-354J-354*
G01X420113Y143930D02*
G03X421657Y142944I3006J3005D01*
G01X420113Y143930D02*
X419654Y144389D01*
G03X418800Y144036I-354J-353*
G01Y141763*
X416300Y139263D02*
G03X418800Y141763I0J2500D01*
G01X416300Y139263D02*
X413418D01*
G03X413064Y139117I-0J-500*
G01X404942Y130995*
X401937Y129750D02*
G03X404942Y130995I0J4250D01*
G01X401937Y129750D02*
X378747D01*
X375742Y130995D02*
G03X378747Y129750I3005J3005D01*
G01X375742Y130995D02*
X366995Y139742D01*
X365750Y142747D02*
G03X366995Y139742I4250J-0D01*
G01X365750Y142747D02*
Y143486D01*
G03X365604Y143839I-500J-0*
G01X365054Y144389*
G03X364200Y144036I-354J-353*
G01Y141763*
X361700Y139263D02*
G03X364200Y141763I0J2500D01*
G01X361700Y139263D02*
X355100D01*
X352600Y141763D02*
G03X355100Y139263I2500J-0D01*
G01X352600Y141763D02*
Y148363D01*
X353801Y150499D02*
G03X352600Y148363I1299J-2136D01*
G01X353801Y150499D02*
G03X353927Y151245I-260J427D01*
G01X363000Y158470D02*
G03X353927Y151245I-4600J-3533D01*
G01X363000Y158470D02*
G03X363043Y158421I397J304D01*
G01X373005Y148459*
X374250Y145453D02*
G03X373005Y148459I-4250J0D01*
G01X374250Y145453D02*
Y144714D01*
G03X374396Y144361I500J0*
G01X380361Y138396*
G03X380714Y138250I353J354*
G01X384500*
G03X385000Y138750I-0J500*
G01Y142045*
G03X384854Y142398I-500J-0*
G01X381728Y145523*
X380337Y148882D02*
G03X381728Y145523I4750J0D01*
G01X380337Y148882D02*
Y156131D01*
G03X379587Y156564I-500J0*
G01X378337Y156229D02*
G03X379587Y156564I0J2500D01*
G01X378337Y156229D02*
X371837D01*
X369337Y158729D02*
G03X371837Y156229I2500J0D01*
G01X369337Y158729D02*
Y165229D01*
X369841Y166734D02*
G03X369337Y165229I1996J-1505D01*
G01X369841Y166734D02*
G03X369441Y167535I-400J301D01*
G01X335959*
G03X335621Y167403I0J-500*
G01X326638D02*
G03X335621I4491J4882D01*
G01X326638D02*
G03X326299Y167535I-339J-368D01*
G01X227016*
G03X226678Y167403I0J-500*
G01X216581Y175833D02*
G03X226678Y167403I5605J-3548D01*
G01X216581Y175833D02*
G03X216158Y176600I-423J267D01*
G01X123000*
G03X122500Y176100I0J-500*
G01Y123000*
G03X123000Y122500I500J0*
G01X648200*
G03X648700Y123000I-0J500*
G01X635873Y151245D02*
G03X627590Y159310I-4473J3692D01*
G01X635873Y151245D02*
G03X635999Y150499I386J-319D01*
G01X637200Y148363D02*
G03X635999Y150499I-2500J-0D01*
G01X637200Y148363D02*
Y141763D01*
X634700Y139263D02*
G03X637200Y141763I0J2500D01*
G01X634700Y139263D02*
X628100D01*
X625600Y141763D02*
G03X628100Y139263I2500J-0D01*
G01X625600Y141763D02*
Y148363D01*
X626115Y149883D02*
G03X625600Y148363I1985J-1520D01*
G01X626115Y149883D02*
G03X625718Y150687I-397J304D01*
G01X599595*
G03X599241Y150541I-0J-500*
G01X590758Y142058*
X587753Y140813D02*
G03X590758Y142058I0J4250D01*
G01X587753Y140813D02*
X582726D01*
G03X582289Y140555I0J-500*
G01X580100Y139263D02*
G03X582289Y140555I0J2500D01*
G01X580100Y139263D02*
X573500D01*
X571000Y141763D02*
G03X573500Y139263I2500J-0D01*
G01X571000Y141763D02*
Y148363D01*
X571515Y149883D02*
G03X571000Y148363I1985J-1520D01*
G01X571515Y149883D02*
G03X571118Y150687I-397J304D01*
G01X569150*
G03X568796Y150541I-0J-500*
G01X556299Y138043*
G03X556153Y137661I353J-353*
G01X549907Y143908D02*
G03X556153Y137661I-377J-6623D01*
G01X549907Y143908D02*
G03X550288Y144054I28J499D01*
G01X564177Y157942*
X567182Y159187D02*
G03X564177Y157942I0J-4250D01*
G01X567182Y159187D02*
X572661D01*
G03X572990Y159310I0J500*
G01X581273Y151245D02*
G03X572990Y159310I-4473J3692D01*
G01X581273Y151245D02*
G03X581399Y150499I386J-319D01*
G01X582289Y149571D02*
G03X581399Y150499I-2189J-1208D01*
G01X582289Y149571D02*
G03X582726Y149313I437J242D01*
G01X585786*
G03X586139Y149459I-0J500*
G01X594622Y157942*
X597627Y159187D02*
G03X594622Y157942I0J-4250D01*
G01X597627Y159187D02*
X627261D01*
G03X627590Y159310I0J500*
G01X617000Y172750D02*
Y163750D01*
X614500Y161250D02*
G03X617000Y163750I0J2500D01*
G01X614500Y161250D02*
X585682D01*
X583182Y163750D02*
G03X585682Y161250I2500J0D01*
G01X583182Y163750D02*
Y172750D01*
X585682Y175250D02*
G03X583182Y172750I-0J-2500D01*
G01X585682Y175250D02*
X614500D01*
X617000Y172750D02*
G03X614500Y175250I-2500J0D01*
G01X324506Y137661D02*
G03X330753Y143908I6623J-376D01*
G01X324506Y137661D02*
G03X324361Y138043I-499J29D01*
G01X311863Y150541*
G03X311510Y150687I-353J-354*
G01X309482*
G03X309085Y149883I-0J-500*
G01X309600Y148363D02*
G03X309085Y149883I-2500J-0D01*
G01X309600Y148363D02*
Y141763D01*
X307100Y139263D02*
G03X309600Y141763I0J2500D01*
G01X307100Y139263D02*
X300500D01*
X298311Y140555D02*
G03X300500Y139263I2189J1208D01*
G01X298311Y140555D02*
G03X297874Y140813I-437J-242D01*
G01X294547*
X291542Y142058D02*
G03X294547Y140813I3005J3005D01*
G01X291542Y142058D02*
X283059Y150541D01*
G03X282705Y150687I-354J-354*
G01X254882*
G03X254485Y149883I-0J-500*
G01X255000Y148363D02*
G03X254485Y149883I-2500J-0D01*
G01X255000Y148363D02*
Y141763D01*
X252500Y139263D02*
G03X255000Y141763I0J2500D01*
G01X252500Y139263D02*
X245900D01*
X243400Y141763D02*
G03X245900Y139263I2500J-0D01*
G01X243400Y141763D02*
Y148363D01*
X244601Y150499D02*
G03X243400Y148363I1299J-2136D01*
G01X244601Y150499D02*
G03X244727Y151245I-260J427D01*
G01X253010Y159310D02*
G03X244727Y151245I-3810J-4373D01*
G01X253010Y159310D02*
G03X253339Y159187I329J377D01*
G01X284673*
X287678Y157942D02*
G03X284673Y159187I-3005J-3005D01*
G01X287678Y157942D02*
X296161Y149459D01*
G03X296514Y149313I353J354*
G01X297874*
G03X298311Y149571I-0J500*
G01X299201Y150499D02*
G03X298311Y149571I1299J-2136D01*
G01X299201Y150499D02*
G03X299327Y151245I-260J427D01*
G01X307610Y159310D02*
G03X299327Y151245I-3810J-4373D01*
G01X307610Y159310D02*
G03X307939Y159187I329J377D01*
G01X313477*
X316482Y157942D02*
G03X313477Y159187I-3005J-3005D01*
G01X316482Y157942D02*
X330371Y144054D01*
G03X330753Y143908I354J353*
G01X215563Y137661D02*
G03X221810Y143908I6623J-376D01*
G01X215563Y137661D02*
G03X215417Y138043I-499J29D01*
G01X202920Y150541*
G03X202566Y150687I-354J-354*
G01X200282*
G03X199885Y149883I-0J-500*
G01X200400Y148363D02*
G03X199885Y149883I-2500J-0D01*
G01X200400Y148363D02*
Y141763D01*
X197900Y139263D02*
G03X200400Y141763I0J2500D01*
G01X197900Y139263D02*
X191300D01*
X189111Y140555D02*
G03X191300Y139263I2189J1208D01*
G01X189111Y140555D02*
G03X188674Y140813I-437J-242D01*
G01X183947*
X180942Y142058D02*
G03X183947Y140813I3005J3005D01*
G01X180942Y142058D02*
X172459Y150541D01*
G03X172105Y150687I-354J-354*
G01X145682*
G03X145285Y149883I-0J-500*
G01X145800Y148363D02*
G03X145285Y149883I-2500J-0D01*
G01X145800Y148363D02*
Y141763D01*
X143300Y139263D02*
G03X145800Y141763I0J2500D01*
G01X143300Y139263D02*
X136700D01*
X134200Y141763D02*
G03X136700Y139263I2500J-0D01*
G01X134200Y141763D02*
Y148363D01*
X135401Y150499D02*
G03X134200Y148363I1299J-2136D01*
G01X135401Y150499D02*
G03X135527Y151245I-260J427D01*
G01X141719Y160476D02*
G03X135527Y151245I-1719J-5539D01*
G01X141719Y160476D02*
G03X141850Y160454I148J478D01*
X141967Y160393I287J410*
G01X143810Y159310D02*
G03X141967Y160393I-3810J-4373D01*
G01X143810Y159310D02*
G03X144139Y159187I329J377D01*
G01X174073*
X177078Y157942D02*
G03X174073Y159187I-3005J-3005D01*
G01X177078Y157942D02*
X185561Y149459D01*
G03X185914Y149313I353J354*
G01X188674*
G03X189111Y149571I-0J500*
G01X190001Y150499D02*
G03X189111Y149571I1299J-2136D01*
G01X190001Y150499D02*
G03X190127Y151245I-260J427D01*
G01X198410Y159310D02*
G03X190127Y151245I-3810J-4373D01*
G01X198410Y159310D02*
G03X198739Y159187I329J377D01*
G01X204534*
X207539Y157942D02*
G03X204534Y159187I-3005J-3005D01*
G01X207539Y157942D02*
X221428Y144054D01*
G03X221810Y143908I353J353*
G01X189000Y172750D02*
Y163750D01*
X186500Y161250D02*
G03X189000Y163750I0J2500D01*
G01X186500Y161250D02*
X142955D01*
X142273Y161345D02*
G03X142955Y161250I682J2405D01*
G01X142273Y161345D02*
G03X142154Y161363I-136J-481D01*
X142048Y161420I-287J-409*
G01X140455Y163750D02*
G03X142048Y161420I2500J0D01*
G01X140455Y163750D02*
Y172750D01*
X142955Y175250D02*
G03X140455Y172750I-0J-2500D01*
G01X142955Y175250D02*
X186500D01*
X189000Y172750D02*
G03X186500Y175250I-2500J0D01*
G54D31*
G01X381000Y142000D03*
G54D42*
X391000D02*
Y142485D01*
X391485*
X385087Y148882*
Y161979*
X222186Y172285D02*
X331129D01*
X385087Y170000D02*
X387087Y172000D01*
X549245*
X549530Y172285*
X549530*
X446753*
X385087Y170000D02*
X382802Y172285D01*
X331129*
X385087Y161979D02*
Y170000D01*
X446753Y172285D02*
X446753D01*
X446753*
X433392D02*
X446753D01*
X549530*
G54D43*
X194600Y145063D03*
X358400D03*
X140000D03*
X467600D03*
X522200D03*
X303800D03*
X249200D03*
X576800D03*
X631400D03*
X413000D03*
G54D44*
X194600Y154937D03*
X358400D03*
X140000D03*
X467600D03*
X522200D03*
X303800D03*
X249200D03*
X576800D03*
X631400D03*
X413000D03*
G54D45*
X395087Y161979D03*
X385087D03*
X375087D03*
G54D46*
X222186Y137285D03*
Y172285D03*
X446753Y137285D03*
Y172285D03*
X331129Y137285D03*
Y172285D03*
X549530Y137285D03*
Y172285D03*
X433392Y137285D03*
Y172285D03*
G54D47*
X140000Y154937D02*
X174073D01*
X194600Y145063D02*
X183947D01*
X174073Y154937*
X194600D02*
X204534D01*
X222186Y137285*
X303800Y145063D02*
X294547D01*
X284673Y154937*
X249200D02*
X284673D01*
X303800D02*
X313477D01*
X378747Y134000D02*
X401937D01*
X413000Y145063*
X378747Y134000D02*
X370000Y142747D01*
Y145453*
X359458Y155995*
X358400Y154937*
X331129Y137285D02*
X313477Y154937D01*
X423742Y146935D02*
X423119D01*
X414058Y155995*
X467600Y154937D02*
X466542Y155995D01*
X467600Y145063D02*
X478153D01*
X488027Y154937*
X522200*
X433392Y137285D02*
X423742Y146935D01*
X446753Y137285D02*
X455468Y146000D01*
X456547*
X466542Y155995*
X413000Y154937D02*
X414058Y155995D01*
X549530Y137285D02*
X567182Y154937D01*
X576800*
Y145063D02*
X587753D01*
X597627Y154937*
X631400*
G54D48*
X626332Y150131D02*
X629067Y147396D01*
X636468Y150131D02*
X633733Y147396D01*
X636468Y139995D02*
X633733Y142730D01*
X626332Y139995D02*
X629067Y142730D01*
X244132Y150131D02*
X246867Y147396D01*
X254268Y150131D02*
X251533Y147396D01*
X254268Y139995D02*
X251533Y142730D01*
X244132Y139995D02*
X246867Y142730D01*
X517132Y150131D02*
X519867Y147396D01*
X527268Y150131D02*
X524533Y147396D01*
X527268Y139995D02*
X524533Y142730D01*
X517132Y139995D02*
X519867Y142730D01*
X134932Y150131D02*
X137667Y147396D01*
X145068Y150131D02*
X142333Y147396D01*
X145068Y139995D02*
X142333Y142730D01*
X134932Y139995D02*
X137667Y142730D01*
X353332Y150131D02*
X356067Y147396D01*
X363468Y139995D02*
X360733Y142730D01*
X353332Y139995D02*
X356067Y142730D01*
X370069Y156961D02*
X372789Y159681D01*
X370069Y166997D02*
X372789Y164277D01*
X380105Y156961D02*
X377385Y159681D01*
X390069Y156961D02*
X392789Y159681D01*
X400105Y166997D02*
X397385Y164277D01*
X400105Y156961D02*
X397385Y159681D01*
G74*
X0Y0D02*
M02*
/roboti/istrobot/camerus/HW/CAM_PROFI/V2.rep
0,0 → 1,22
 
 
Photo-Plotter Apertures Report
==============================
Position Width Hgt/ID Shape Qty
======== ===== ====== ===== ===
12 70 0 SQR 1
13 236.22 0 RND 4
25 10 0 RND 306
31 70 0 RND 1
42 45 0 RND 17
43 66 0 SQR 10
44 66 0 RND 10
45 65 0 SQR 3
46 82.68 0 RND 10
47 35 0 RND 32
48 25 0 RND 25
 
 
 
 
 
/roboti/istrobot/camerus/HW/PCB/LEDpanel.pcb
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/HW/SCH/LEDPANEL.DSN
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/HW/SCH/LEDPANEL.ONL
0,0 → 1,274
(PCB LEDPANEL
(description
(timeStamp "2007 03 11 21 45 48")
(program "CAPTURE.EXE" (Version "10.5.0.p001 CIS - D"))
(source "Original data from OrCAD/CAPTURE schematic")
(title "LEDpanel")
(date "Sunday, March 11, 2007")
(document "D:\\KAKLIK\\PROJEKTY\\ROBOTI\\ISTROBOT\\CAMERUS\\HW\\SCH\\LEDPANEL.DSN")
(revision "")
(organization "")
(address1 "")
(address2 "")
(address3 "")
(address4 "")
(partvaluecombine "{Value}")
(pcbfootprintcombine "{Device},{Value}@{PCB Footprint}"))
(structure )
(placement
(component JUMP3
(place J1
(property
("PCB Footprint" JUMP3)
(Device JUMP3)
(timestamp 000003DB)
("Source Package" JUMP3)
(Value JUMP3))))
(component RL090
(place R1
(property
("PCB Footprint" RL090)
(Device R)
(timestamp 000000CF)
("Source Package" RL090)
(Value RL090)))
(place R2
(property
("PCB Footprint" RL090)
(Device R)
(timestamp 000000DF)
("Source Package" RL090)
(Value RL090)))
(place R3
(property
("PCB Footprint" RL090)
(Device R)
(timestamp 000000EF)
("Source Package" RL090)
(Value RL090)))
(place R4
(property
("PCB Footprint" RL090)
(Device R)
(timestamp 000000FF)
("Source Package" RL090)
(Value RL090)))
(place R5
(property
("PCB Footprint" RL090)
(Device R)
(timestamp 0000010F)
("Source Package" RL090)
(Value RL090))))
(component LED5mm
(place D10
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 000000B6)
("Source Package" LED5mm)
(Value LED5mm)))
(place D1
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 00000026)
("Source Package" LED5mm)
(Value LED5mm)))
(place D2
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 00000036)
("Source Package" LED5mm)
(Value LED5mm)))
(place D3
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 00000046)
("Source Package" LED5mm)
(Value LED5mm)))
(place D4
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 00000056)
("Source Package" LED5mm)
(Value LED5mm)))
(place D5
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 00000066)
("Source Package" LED5mm)
(Value LED5mm)))
(place D6
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 00000076)
("Source Package" LED5mm)
(Value LED5mm)))
(place D7
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 00000086)
("Source Package" LED5mm)
(Value LED5mm)))
(place D8
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 00000096)
("Source Package" LED5mm)
(Value LED5mm)))
(place D9
(property
("PCB Footprint" LED5)
(Device LED)
(timestamp 000000A6)
("Source Package" LED5mm)
(Value LED5mm))))
(component "C-ELYT-CE025X6"
(place C1
(property
("PCB Footprint" CE025X6)
(Device "C-ELYT")
(timestamp 000003AA)
("Source Package" "C-ELYT-CE025X6")
(Value 1000uF))))
(component HOLE_M3
(place M1
(property
("PCB Footprint" HOLE_M3)
(Device PAD)
(timestamp 00000619)
("Source Package" HOLE_M3)
(Value HOLE_M3)))
(place M2
(property
("PCB Footprint" HOLE_M3)
(Device PAD)
(timestamp 00000643)
("Source Package" HOLE_M3)
(Value HOLE_M3)))
(place M3
(property
("PCB Footprint" HOLE_M3)
(Device PAD)
(timestamp 0000066D)
("Source Package" HOLE_M3)
(Value HOLE_M3)))
(place M4
(property
("PCB Footprint" HOLE_M3)
(Device PAD)
(timestamp 00000697)
("Source Package" HOLE_M3)
(Value HOLE_M3)))))
(library
(image RL090
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_RLC.OLB)
(Device R))
(pin 999 1
(property
(pinname 1)
(pintype 4)))
(pin 999 2
(property
(pinname 2)
(pintype 4))))
(image "C-ELYT-CE025X6"
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_RLC.OLB)
(Device "C-ELYT"))
(pin 999 A
(property
(pinname A)
(pintype 4)))
(pin 999 C
(property
(pinname C)
(pintype 4))))
(image HOLE_M3
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\PAD.OLB)
(Device PAD))
(pin 999 1
(property
(pinname PIN)
(pintype 4))))
(image JUMP3
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\JUMP.OLB)
(Device JUMP3))
(pin 999 1
(property
(pinname 1)
(pintype 4)))
(pin 999 2
(property
(pinname 2)
(pintype 4)))
(pin 999 3
(property
(pinname 3)
(pintype 4))))
(image LED5mm
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_OPTO.OLB)
(Device LED))
(pin 999 A
(property
(pinname A)
(pintype 4)))
(pin 999 C
(property
(pinname C)
(pintype 4)))))
(network
(net VCC
(property
(nettype S))
(pins
R3-2 C1-A J1-2 R5-2 R1-2 R2-2 R4-2))
(net GND
(property
(nettype S))
(pins
D8-C C1-C D4-C M1-1 D2-C M3-1 M4-1 D6-C J1-3
J1-1 M2-1 D10-C))
(net N00380
(pins
R1-1 D1-A))
(net N00388
(pins
D1-C D2-A))
(net N00433
(pins
D4-A D3-C))
(net N00446
(pins
D3-A R2-1))
(net N00494
(pins
R3-1 D5-A))
(net N00649
(pins
D5-C D6-A))
(net N00715
(pins
D7-A R4-1))
(net N00793
(pins
R5-1 D9-A))
(net N00822
(pins
D9-C D10-A))
(net N00885
(pins
D7-C D8-A)))
)
/roboti/istrobot/camerus/HW/SCH/LEDPANEL.asc
0,0 → 1,51
*PADS-PCB*
*PART*
C1 C-ELYT,1000uF@CE025X6
D1 LED,LED5mm@LED5
D10 LED,LED5mm@LED5
D2 LED,LED5mm@LED5
D3 LED,LED5mm@LED5
D4 LED,LED5mm@LED5
D5 LED,LED5mm@LED5
D6 LED,LED5mm@LED5
D7 LED,LED5mm@LED5
D8 LED,LED5mm@LED5
D9 LED,LED5mm@LED5
J1 JUMP3,JUMP3@JUMP3
M1 PAD,HOLE_M3@HOLE_M3
M2 PAD,HOLE_M3@HOLE_M3
M3 PAD,HOLE_M3@HOLE_M3
M4 PAD,HOLE_M3@HOLE_M3
R1 R,RL090@RL090
R2 R,RL090@RL090
R3 R,RL090@RL090
R4 R,RL090@RL090
R5 R,RL090@RL090
 
*NET*
*SIGNAL* VCC
R3.2 C1.A J1.2 R5.2 R1.2 R2.2 R4.2
*SIGNAL* GND
D8.C C1.C D4.C M1.1 D2.C M3.1 M4.1 D6.C
J1.3 J1.1 M2.1 D10.C
*SIGNAL* N00380
R1.1 D1.A
*SIGNAL* N00388
D1.C D2.A
*SIGNAL* N00433
D4.A D3.C
*SIGNAL* N00446
D3.A R2.1
*SIGNAL* N00494
R3.1 D5.A
*SIGNAL* N00649
D5.C D6.A
*SIGNAL* N00715
D7.A R4.1
*SIGNAL* N00793
R5.1 D9.A
*SIGNAL* N00822
D9.C D10.A
*SIGNAL* N00885
D7.C D8.A
*END*
/roboti/istrobot/camerus/HW/SCH/LEDPANEL_0.DBK
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerus/ToDo.txt
0,0 → 1,18
- Tlaèítko na vypnutí, pøípadnì (IRDA)
- vyrobit modul na oci
 
- Pøedìlat modul LEDROBOT, nadimenzovat ho na vìtší proud.
- napajení elektroniky udìlat pøes spínaný zdroj (aby nevadily vybité baterie)
 
- pøilepit zatáèecí koleèko k osièce, aby se nemuselo, poøád rovnat.
 
- Udìlat podsvìtlení, aby se robot líbil porotì.
 
- Modul s kroutitkama 6 kroutitek
 
- modul s LED, nebo neosadit stabilizator do modulu LEDrobot
 
- vymyslet postup kalibrace kamery (jak vizualizovat co kamera vidi)
- co pouzit LEDbar?
 
- projit problemy lonske konstrukce
/roboti/istrobot/camerus
Property changes:
Added: svn:ignore
+*.bak
+*.BAK
+*.cof
+*.err
+*.hex
+*.lst
+*.sta
+*.sym
+*.tre
/roboti/istrobot/camerusII/HW/PCB/WhiteLEDPanel.pcb
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerusII/HW/WHITELEDPANEL.DSN
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/camerusII/HW/WHITELEDPANEL.asc
0,0 → 1,49
*PADS-PCB*
*PART*
D1 LED,LED5mm@LED5
D10 LED,LED5mm@LED5
D2 LED,LED5mm@LED5
D3 LED,LED5mm@LED5
D4 LED,LED5mm@LED5
D5 LED,LED5mm@LED5
D6 LED,LED5mm@LED5
D7 LED,LED5mm@LED5
D8 LED,LED5mm@LED5
D9 LED,LED5mm@LED5
J1 SCW2,ARK210/2@ARK210/2
J2 UNIPAD2,UNIPAD2@UNIPAD2
M1 PAD,HOLE_M3@HOLE_M3
M2 PAD,HOLE_M3@HOLE_M3
M3 PAD,HOLE_M3@HOLE_M3
M4 PAD,HOLE_M3@HOLE_M3
P1 R-TRIM,100@PT6V
R1 R,20@RL090
 
*NET*
*SIGNAL* N00284
D2.A D1.C
*SIGNAL* N00288
D2.C D3.A
*SIGNAL* N00294
D3.C D4.A
*SIGNAL* N00302
D4.C D5.A
*SIGNAL* N00312
D5.C D6.A
*SIGNAL* N00324
D6.C D7.A
*SIGNAL* N00338
D7.C D8.A
*SIGNAL* N00354
D8.C D9.A
*SIGNAL* N00372
D9.C D10.A
*SIGNAL* N00482
P1.3 D10.C J2.1 J2.2 P1.1
*SIGNAL* N00504
P1.2 R1.1
*SIGNAL* VCC
D1.A J1.2
*SIGNAL* GND
R1.2 M2.1 M3.1 J1.1 M1.1 M4.1
*END*
/roboti/istrobot/cholerik/cholerik.c
0,0 → 1,274
// Program pro MiniSumo na R-Day 2006
//"$Id$"
 
#include "cholerik.h"
 
#define THRESHOLD 15 // rozhodovaci uroven pro okraj areny
// 0-15 (od 0.25 do 0.75 Vdd)
// 0 jasnejsi; 15 tmavsi
 
//motory //Napred vypnout potom zapnout!
#define FR output_low(PIN_B5); output_high(PIN_B4) // Vpred
#define FL output_low(PIN_B7); output_high(PIN_B6)
#define BR output_low(PIN_B4); output_high(PIN_B5) // Vzad
#define BL output_low(PIN_B6); output_high(PIN_B7)
#define STOPR output_low(PIN_B4);output_low(PIN_B5) // Zastav
#define STOPL output_low(PIN_B6);output_low(PIN_B7)
 
//cidla
#define SIDE_R !input(PIN_A7) // Sensory na soupere
#define SIDE_L !input(PIN_A4)
#define FRONT !input(PIN_A6)
#define BACK !input(PIN_B3)
#define GRAVITY !input(PIN_A1)
// PIN_A3 Prave cidlo na okraj areny (C1OUT)
// PIN_A2 Leve cidlo na okraj areny (C2OUT)
 
#DEFINE SOUND_HI PIN_B1 // komplementarni vystupy pro piezo pipak
#DEFINE SOUND_LO PIN_B2
 
// makro pro PWM
#define GO(motor, direction, power) if(get_timer0()<=power) \
{direction##motor;} else {stop##motor;}
 
unsigned int8 majak=0;
unsigned int8 sl=0;
unsigned int8 sr=0;
unsigned int8 b=0;
unsigned int8 f=0;
unsigned int8 g=0;
int1 arena_l=FALSE;
int1 arena_r=FALSE;
int1 diag=FALSE;
 
#int_TIMER0
TIMER0_isr()
{
int1 stav;
 
stav = ((majak & 0b1) == 0b1);
if (((SIDE_R && stav) || (!SIDE_R && !stav))) {if (sr<255) sr++;} else {sr=0;};
if (((SIDE_L && stav) || (!SIDE_L && !stav))) {if (sl<255) sl++;} else {sl=0;};
if (((BACK && stav) || (!BACK && !stav))) {if (b<255) b++;} else {b=0;};
if (((FRONT && stav) || (!FRONT && !stav))) {if (f<255) f++;} else {f=0;};
majak++;
stav = ((majak & 0b1) == 0b1);
 
if (!C1OUT) arena_r=TRUE; else arena_r=FALSE;
if (!C2OUT) arena_l=TRUE; else arena_l=FALSE;
 
if (stav)
{
set_pwm1_duty(27); // 1:1
}
else
{
set_pwm1_duty(55); // 1:0
};
setup_comparator(NC_NC_NC_NC); // inicializace komparatoru
if (GRAVITY) {if (g<255) g++;} else g=0;
setup_comparator(A3_VR_A2_VR); // inicializace komparatoru
if (g>3 && !diag) {FL; FR; while(TRUE);}; // kdyz nas preklopi, nedej se
}
 
// Primitivni Pipani
void beep(unsigned int16 period, unsigned int16 length)
{
unsigned int16 nn;
 
disable_interrupts(GLOBAL);
for(nn=length; nn>0; nn--)
{
output_high(SOUND_HI);output_low(SOUND_LO);
delay_us(period);
output_high(SOUND_LO);output_low(SOUND_HI);
delay_us(period);
}
enable_interrupts(GLOBAL);
}
 
/**** DIAG ********************************************************************/
inline void diagnostika()
{
unsigned int16 n;
 
setup_comparator(NC_NC_NC_NC); // inicializace komparatoru
if (GRAVITY)
{
setup_comparator(A3_VR_A2_VR); // inicializace komparatoru
diag=TRUE;
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
while (true) // Diagnostika cidel
{
if (g>100) beep(800,100);
Delay_ms(50);
if (arena_l) {beep(1000,200); delay_ms(10);beep(1000,200);};
Delay_ms(50);
if (arena_r) {beep(2000,300); delay_ms(10);beep(2000,300);};
Delay_ms(50);
 
if (sr>10) beep(3000,400);
Delay_ms(50);
if (f>10) beep(4000,500);
Delay_ms(50);
if (sl>10) beep(5000,500);
Delay_ms(50);
if (b>10) beep(6000,600);
Delay_ms(50);
if((g>100) && arena_l && arena_r) break; // Preklopen na zada a bily papir na obou cidlech na okraj areny
};
 
while(TRUE) // Diagnostika podvozku
{
for (n=500; n<800; n+=100)
{
beep(n,n); //beep UP
};
Delay_ms(1000);
//zastav vse
STOPL; STOPR;
//pravy pas
FR; Delay_ms(1000); STOPR; Delay_ms(1000);
BR; Delay_ms(1000); STOPR; Delay_ms(1000);
Beep(880,100); Delay_ms(1000);
//levy pas
FL; Delay_ms(1000); STOPL; Delay_ms(1000);
BL; Delay_ms(1000); STOPL; Delay_ms(1000);
Beep(880,100); Delay_ms(1000);
//oba pasy
FL; FR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);
BL; BR; Delay_ms(1000); STOPL; STOPR; Delay_ms(1000);
};
};
}
 
/**** MAIN ********************************************************************/
void main()
{
unsigned int16 n; // for FOR
 
STOPL; STOPR; // zastavi motory
 
setup_oscillator(OSC_8MHZ|OSC_INTRC); // CPU clock 8MHz
setup_adc_ports(NO_ANALOGS); // komparatory vypnuty
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // Casovac pro SW PWM a cteni cidel
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_1,54,1); // Casovac pro PWM pro IR sensory cca 36kHz
setup_ccp1(CCP_PWM); // HW PWM ON
set_pwm1_duty(27); // 1:1
setup_comparator(A3_VR_A2_VR); // inicializace komparatoru
setup_comparator(NC_NC_NC_NC); // inicializace komparatoru
setup_vref(VREF_HIGH|THRESHOLD); // 16 kroku od 0.25 do 0.75 Vdd
 
Beep(1000,200); //double beep
Delay_ms(50);
Beep(1000,200);
diagnostika();
 
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
 
for (n=1;n<=5;n++) // 5s do zacatku souboje
{
Delay_ms(670); // 5,25s
Beep(1000,200);
}
 
/*----- Main Loop ------------------------------------------------------------*/
while(true) // hlavni smycka
{
LOOP:
 
GO(L, F, 150); GO(R, F, 150);
 
if (arena_r)
{
BL; BR;
delay_ms(180);
STOPL; BR;
for(n=0; n<5000; n++)
{
if (!arena_r || arena_l) {BL; BR;};
};
FL; BR;
delay_ms(100);
STOPL; STOPR;
}
 
if (arena_l)
{
BL; BR;
delay_ms(180);
BL; STOPR;
for(n=0; n<5000; n++)
{
if (!arena_l || arena_r) {BL; BR;};
};
BL; FR;
delay_ms(100);
STOPL; STOPR;
}
 
if (sr>10) // Nepritel vpravo
{
FL; FR; // popojed rovne
for(n=0; n<5000; n++)
{
if (arena_l || arena_r) {BL; BR; delay_ms(100); goto LOOP;};
};
FL; BR; // otoc se na nej
for(n=0; n<10000; n++)
{
if (arena_l || arena_r) {BL; BR; delay_ms(100); goto LOOP;};
if (f>5)
{
FL; FR; // vytlac ho
};
if (sl>5) {BL; FR;};
if (sr>5) {FL; BR;};
};
}
 
if (sl>10) // Nepritel vlevo
{
FL; FR; // popojed rovne
for(n=0; n<5000; n++)
{
if (arena_l || arena_r) {BL; BR; delay_ms(100); goto LOOP;};
};
BL; FR; // otoc se na nej
for(n=0; n<10000; n++)
{
if (arena_l || arena_r) {BL; BR; delay_ms(100); goto LOOP;};
if (f>5)
{
FL; FR; // vytlac ho
};
if (sl>5) {BL; FR;};
if (sr>5) {FL; BR;};
};
}
 
if (f>10) // Nepritel vpredu
{
BL; FR;
delay_ms(110);
FL; BR;
delay_ms(50);
STOPL; STOPR;
}
 
if (b>10) // Nepritel vzadu
{
BL; FR;
delay_ms(110);
FL; BR;
delay_ms(50);
STOPL; STOPR;
}
 
} // while(true)
}
Property changes:
Added: svn:keywords
+Id Rev
\ No newline at end of property
/roboti/istrobot/cholerik/cholerik.PJT
0,0 → 1,43
[PROJECT]
Target=tank.HEX
Development_Mode=
Processor=0x688F
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\drivers\;C:\library\CCS;
Library=
LinkerScript=
 
[Target Data]
FileList=C:\dokumenty\svn\Kaklik\roboti\istrobot\cholerik\cholerik.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[tank.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=tank.c
 
[Windows]
0=0000 tank.c 0 0 796 451 3 0
 
[Opened Files]
1=C:\dokumenty\svn\Kaklik\roboti\istrobot\cholerik\cholerik.c
2=C:\dokumenty\svn\Kaklik\roboti\istrobot\cholerik\cholerik.h
3=C:\Program Files\PICC\devices\16F88.h
4=
5=
6=
7=
[Units]
Count=1
1=C:\dokumenty\svn\Kaklik\roboti\istrobot\cholerik\cholerik.c (main)
/roboti/istrobot/cholerik/cholerik.h
0,0 → 1,19
#include <16F88.h>
#device adc=8
 
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOIESO //Internal External Switch Over mode disabled
#FUSES CCPB0 //Vystup PWM
 
#use delay(clock=8000000)
 
/roboti/istrobot/laserus/problem.txt
0,0 → 1,4
- nepodařilo se vyřešit snímání čáry ani jednou ze dvou typů čteček čárových kódů.
-čtečka nedokáže za phybu dostatečně přesně rozmítat laser. Proto dochází k automatickému vypnutí při prní chybě čtení.
-AGC (Automatic Gain Control) zabudované ve čtečce vyhodnotí za určitých případů čáru jako šum. Zvláště při najetí na čáru šikmo tak, že čára přetíná světelnou stopu ve větší délce, AGC pak dorovná celkový jas a čára se na datovém výstupu čidla ztratí.
/roboti/istrobot/laserus/SW/PIC/873/Reg.H
0,0 → 1,298
// Komplete definition of all Special Feature Registers
// of PIC16F87 and PIC16F88
// (c)miho 2005
 
#nolist
 
// SFR Registers in Memory Bank 0
#byte INDF = 0x00
#byte TMR0 = 0x01
#byte PCL = 0x02
#byte STATUS = 0x03
#bit IRP = STATUS.7
#bit RP1 = STATUS.6
#bit RP0 = STATUS.5
#bit TO = STATUS.4
#bit PD = STATUS.3
#bit Z = STATUS.2
#bit DC = STATUS.1
#bit C = STATUS.0
#byte FSR = 0x04
#byte PORTA = 0x05
#byte PORTB = 0x06
#byte PCLATH = 0x0A
#byte INTCON = 0x0B
#bit GIE = INTCON.7
#bit PEIE = INTCON.6
#bit TMR0IE = INTCON.5
#bit INT0IE = INTCON.4
#bit RBIE = INTCON.3
#bit TMR0IF = INTCON.2
#bit INT0IF = INTCON.1
#bit RBIF = INTCON.0
#byte PIR1 = 0x0C
#bit ADIF = PIR1.6
#bit RCIF = PIR1.5
#bit TXIF = PIR1.4
#bit SSPIF = PIR1.3
#bit CCP1IF = PIR1.2
#bit TMR2IF = PIR1.1
#bit TMR1IF = PIR1.0
#byte PIR2 = 0x0D
#bit OSFIF = PIR2.7
#bit CMIF = PIR2.6
#bit EEIF = PIR2.4
#byte TMR1L = 0x0E
#byte TMR1H = 0x0F
#byte T1CON = 0x10
#bit T1RUN = T1CON.6
#bit T1CKPS1 = T1CON.5
#bit T1CKPS0 = T1CON.4
#bit T1OSCEN = T1CON.3
#bit T1SYNC = T1CON.2
#bit TMR1CS = T1CON.1
#bit TMR1ON = T1CON.0
#byte TMR2 = 0x11
#byte T2CON = 0x12
#bit TOUTPS3 = T2CON.6
#bit TOUTPS2 = T2CON.5
#bit TOUTPS1 = T2CON.4
#bit TOUTPS0 = T2CON.3
#bit TMR2ON = T2CON.2
#bit T2CKPS1 = T2CON.1
#bit T2CKPS0 = T2CON.0
#byte SSPBUF = 0x13
#byte SSPCON1 = 0x14
#bit WCOL = SSPCON1.7
#bit SSPOV = SSPCON1.6
#bit SSPEN = SSPCON1.5
#bit CKP = SSPCON1.4
#bit SSPM3 = SSPCON1.3
#bit SSPM2 = SSPCON1.2
#bit SSPM1 = SSPCON1.1
#bit SSPM0 = SSPCON1.0
#byte CCPR1L = 0x15
#byte CCPR1H = 0x16
#byte CCP1CON = 0x17
#bit CCP1X = CCP1CON.5
#bit CCP1Y = CCP1CON.4
#bit CCP1M3 = CCP1CON.3
#bit CCP1M2 = CCP1CON.2
#bit CCP1M1 = CCP1CON.1
#bit CCP1M0 = CCP1CON.0
#byte RCSTA = 0x18
#bit SPEN = RCSTA.7
#bit RX9 = RCSTA.6
#bit SREN = RCSTA.5
#bit CREN = RCSTA.4
#bit ADDEN = RCSTA.3
#bit FERR = RCSTA.2
#bit OERR = RCSTA.1
#bit RX9D = RCSTA.0
#byte TXREG = 0x19
#byte RCREG = 0x1A
#byte ADRESH = 0x1E // F88 only
#byte ADCON0 = 0x1F // F88 only
#bit ADCS1 = ADCON0.7
#bit ADCS0 = ADCON0.6
#bit CHS2 = ADCON0.5
#bit CHS1 = ADCON0.4
#bit CHS0 = ADCON0.3
#bit GO = ADCON0.2
#bit ADON = ADCON0.0
 
// SFR Registers in Memory Bank 1
#byte INDF_1 = 0x80 // miror
#byte OPTION = 0x81
#bit RBPU = OPTION.7
#bit INTEDG = OPTION.6
#bit T0CS = OPTION.5
#bit T0SE = OPTION.4
#bit PSA = OPTION.3
#bit PS2 = OPTION.2
#bit PS1 = OPTION.1
#bit PS0 = OPTION.0
#byte PCL = 0x82
#byte STATUS_1 = 0x83 // mirror
#bit IRP_1 = STATUS_1.7
#bit RP1_1 = STATUS_1.6
#bit RP0_1 = STATUS_1.5
#bit TO_1 = STATUS_1.4
#bit PD_1 = STATUS_1.3
#bit Z_1 = STATUS_1.2
#bit DC_1 = STATUS_1.1
#bit C_1 = STATUS_1.0
#byte FSR = 0x84
#byte TRISA = 0x85
#byte TRISB = 0x86
#byte PCLATH_1 = 0x8A // mirror
#byte INTCON_1 = 0x8B // mirror
#bit GIE_1 = INTCON_1.7
#bit PEIE_1 = INTCON_1.6
#bit TMR0IE_1 = INTCON_1.5
#bit INT0IE_1 = INTCON_1.4
#bit RBIE_1 = INTCON_1.3
#bit TMR0IF_1 = INTCON_1.2
#bit INT0IF_1 = INTCON_1.1
#bit RBIF_1 = INTCON_1.0
#byte PIE1 = 0x8C
#bit ADIE = PIE1.6
#bit RCIE = PIE1.5
#bit TXIE = PIE1.4
#bit SSPIE = PIE1.3
#bit CCP1IE = PIE1.2
#bit TMR2IE = PIE1.1
#bit TMR1IE = PIE1.0
#byte PIE2 = 0x8D
#bit OSFIE = PIE2.7
#bit CMIE = PIE2.6
#bit EEIE = PIE2.4
#byte PCON = 0x8E
#bit POR = PCON.1
#bit BOR = PCON.0
#byte OSCCON = 0x8F
#bit IRCF2 = OSCCON.6
#bit IRCF1 = OSCCON.5
#bit IRCF0 = OSCCON.4
#bit OSTS = OSCCON.3
#bit IOFS = OSCCON.2
#bit SCS1 = OSCCON.1
#bit SCS0 = OSCCON.0
#byte OSCTUNE = 0x90
#bit TUN5 = OSCTUNE.5
#bit TUN4 = OSCTUNE.4
#bit TUN3 = OSCTUNE.3
#bit TUN2 = OSCTUNE.2
#bit TUN1 = OSCTUNE.1
#bit TUN0 = OSCTUNE.0
#byte PR2 = 0x92
#byte SSPADD = 0x93
#byte SSPSTAT = 0x94
#bit SMP = SSPSTAT.7
#bit CKE = SSPSTAT.6
#bit DA = SSPSTAT.5
#bit P = SSPSTAT.4
#bit S = SSPSTAT.3
#bit RW = SSPSTAT.2
#bit UA = SSPSTAT.1
#bit BF = SSPSTAT.0
#byte TXSTA = 0x98
#bit CSRC = TXSTA.7
#bit TX9 = TXSTA.6
#bit TXEN = TXSTA.5
#bit SYNC = TXSTA.4
#bit BRGH = TXSTA.2
#bit TRMT = TXSTA.1
#bit TX9D = TXSTA.0
#byte SPBRG = 0x99
#byte ANSEL = 0x9B // F88 only
#bit ANS6 = ANSEL.6
#bit ANS5 = ANSEL.5
#bit ANS4 = ANSEL.4
#bit ANS3 = ANSEL.3
#bit ANS2 = ANSEL.2
#bit ANS1 = ANSEL.1
#bit ANS0 = ANSEL.0
#byte CMCON = 0x9C
// #bit C2OUT = CMCON.7
// #bit C1OUT = CMCON.6
#bit C2INV = CMCON.5
#bit C1INV = CMCON.4
#bit CIS = CMCON.3
#bit CM2 = CMCON.2
#bit CM1 = CMCON.1
#bit CM0 = CMCON.0
#byte CVRCON = 0x9D
#bit CVREN = CVRCON.7
#bit CVROE = CVRCON.6
#bit CVRR = CVRCON.5
#bit CVR3 = CVRCON.3
#bit CVR2 = CVRCON.2
#bit CVR1 = CVRCON.1
#bit CVR0 = CVRCON.0
#byte ADRESL = 0x9E // F88 only
#byte ADCON1 = 0x9F // F88 only
#bit ADFM = ADCON1.7
#bit ADCS2 = ADCON1.6
#bit VCFG1 = ADCON1.5
#bit VCFG0 = ADCON1.4
 
// SFR Registers in Memory Bank 2
#byte INDF_2 = 0x100 // mirror
#byte TMR0_2 = 0x101 // mirror
#byte PCL_2 = 0x102 // mirror
#byte STATUS_2 = 0x103 // mirror
#bit IRP_2 = STATUS_2.7
#bit RP1_2 = STATUS_2.6
#bit RP0_2 = STATUS_2.5
#bit TO_2 = STATUS_2.4
#bit PD_2 = STATUS_2.3
#bit Z_2 = STATUS_2.2
#bit DC_2 = STATUS_2.1
#bit C_2 = STATUS_2.0
#byte FSR_2 = 0x104 // mirror
#byte WDTCON = 0x105
#bit WDTPS3 = WDTCON.4
#bit WDTPS2 = WDTCON.3
#bit WDTPS1 = WDTCON.2
#bit WDTPS0 = WDTCON.1
#bit SWDTEN = WDTCON.0
#byte PORTB_2 = 0x106 // mirror
#byte PCLATH_2 = 0x10A // mirror
#byte INTCON_2 = 0x10B // mirror
#bit GIE_2 = INTCON_2.7
#bit PEIE_2 = INTCON_2.6
#bit TMR0IE_2 = INTCON_2.5
#bit INT0IE_2 = INTCON_2.4
#bit RBIE_2 = INTCON_2.3
#bit TMR0IF_2 = INTCON_2.2
#bit INT0IF_2 = INTCON_2.1
#bit RBIF_2 = INTCON_2.0
#byte EEDATA = 0x10C
#byte EEADR = 0x10D
#byte EEDATH = 0x10E
#byte EEADRH = 0x10F
 
// SFR Registers in Memory Bank 3
#byte INDF_3 = 0x180 // mirror
#byte OPTION_3 = 0x181 // mirror
#bit RBPU_3 = OPTION_3.7
#bit INTEDG_3 = OPTION_3.6
#bit T0CS_3 = OPTION_3.5
#bit T0SE_3 = OPTION_3.4
#bit PSA_3 = OPTION_3.3
#bit PS2_3 = OPTION_3.2
#bit PS1_3 = OPTION_3.1
#bit PS0_3 = OPTION_3.0
#byte PCL_3 = 0x182 // mirror
#byte STATUS_3 = 0x183 // mirror
#bit IRP_3 = STATUS_3.7
#bit RP1_3 = STATUS_3.6
#bit RP0_3 = STATUS_3.5
#bit TO_3 = STATUS_3.4
#bit PD_3 = STATUS_3.3
#bit Z_3 = STATUS_3.2
#bit DC_3 = STATUS_3.1
#bit C_3 = STATUS_3.0
#byte FSR_3 = 0x184 // mirror
#byte TRISB_3 = 0x186 // mirror
#byte PLATH_3 = 0x18A // mirror
#byte INTCON_3 = 0x18B // mirror
#bit GIE_3 = INTCON_3.7
#bit PEIE_3 = INTCON_3.6
#bit TMR0IE_3 = INTCON_3.5
#bit INT0IE_3 = INTCON_3.4
#bit RBIE_3 = INTCON_3.3
#bit TMR0IF_3 = INTCON_3.2
#bit INT0IF_3 = INTCON_3.1
#bit RBIF_3 = INTCON_3.0
#byte EECON1 = 0x18C
#bit EEPGD = EECON1.7
#bit FREE = EECON1.4
#bit WRERR = EECON1.3
#bit WREN = EECON1.2
#bit WR = EECON1.1
#bit RD = EECON1.0
#byte EECON2 = 0x18D
 
#list
/roboti/istrobot/laserus/SW/PIC/873/laserus.PJT
0,0 → 1,40
[PROJECT]
Target=laserus.HEX
Development_Mode=
Processor=0x873F
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\Dr
Library=
LinkerScript=
 
[Target Data]
FileList=C:\PIC\laserus\873\laserus.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[laserus.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=laserus.c
 
[Windows]
0=0000 laserus.c 0 0 796 451 3 0
 
[Opened Files]
1=C:\PIC\laserus\873\laserus.c
2=C:\PIC\laserus\873\laserus.h
3=C:\Program Files\PICC\devices\16F873.h
4=
[Units]
Count=1
1=C:\PIC\laserus\873\laserus.c (main)
/roboti/istrobot/laserus/SW/PIC/873/laserus.c
0,0 → 1,130
#include "laserus.h"
 
#define SERVO PIN_B5 // Vystup pro rizeni serva
#define LASER PIN_B4 // Vstup pro cteni laseru
 
#define MOT_DIR_L PIN_C0 // Rizeni smeru otaceni motoru
#define MOT_DIR_R PIN_C3
 
// kroutitka
#define CERVENA 0 // AN0
#define CERNA 1 // AN1
//#define ZELENA 3 // AN3
//#define MODRA 4 // AN4
 
#byte INTCON = 0x0B // Interrupt configuration register
#bit GIE = INTCON.7
#bit PEIE = INTCON.6
#bit TMR0IE = INTCON.5
#bit INT0IE = INTCON.4
#bit RBIE = INTCON.3
#bit TMR0IF = INTCON.2
#bit INT0IF = INTCON.1
#bit RBIF = INTCON.0
 
boolean edge;
int8 uhel, olduhel;
int16 uhel16;
 
#int_EXT
EXT_isr()
{
int n, t1, t2, t;
 
set_timer0(0); // Vynulovani casovace pro 2ms
output_high(SERVO);
while(get_timer0()<(1000/256)); // Ceka 1ms
for(n=uhel; n>0; n--) delay_us(3); // Sirka impulzu podle uhlu
output_low(SERVO);
while(get_timer0()<(3000/256)); // Ceka do 3ms, nez zacne scanovat
 
set_timer0(0); // Vynulovani casovace pro zjisteni polohy cary
if(edge) // Zrcatko prejizdelo tam nebo zpet?
{
edge=false;
ext_int_edge(H_TO_L); // Pristi inerrupt bude od opacne hrany
INT0IF=0; // Povoleni dalsiho preruseni
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
// do
{
while(0==input(LASER)); // Ceka na detekci cary
// output_high(SERVO);
t1=get_timer0(); // Poznamena cas nabezne hrany
while(1==input(LASER)); // Ceka az zkonci cara
// output_low(SERVO);
t2=get_timer0(); // Poznamena cas sestupne hrany
t=t2-t1;
} while((t<3) || (t>20)); // Cara je detekovana, kdyz trva mezi xx ms
// if ((t>3) && (t<20)) uhel=(160-(read_adc()>>2))-t1;
// if (abs(olduhel-uhel)<40)
{
uhel=(160-(read_adc()>>2))-t1;
olduhel=uhel;
};
// uhel16=uhel;
// set_pwm1_duty(250-(uhel16<<2)); // Elektronicky diferencial
// set_pwm2_duty((uhel16));
set_adc_channel(CERNA);
}
else
{
edge=true;
ext_int_edge(L_TO_H); // Pristi inerrupt bude od opacne hrany
INT0IF=0; // Povoleni dalsiho preruseni
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
// do
{
while(0==input(LASER)); // Ceka na detekci cary
t1=get_timer0(); // Poznamena cas nabezne hrany
while(1==input(LASER)); // Ceka az zkonci cara
t2=get_timer0(); // Poznamena cas sestupne hrany
t=t2-t1;
} while((t<3) || (t>20)); // Cara je detekovana, kdyz trva mezi xx ms
if (abs(olduhel-uhel)<40)
{
// uhel=((read_adc()>>2)+32)+t1;
// olduhel=uhel;
};
set_adc_channel(CERVENA);
}
while(true);
}
 
 
 
void main()
{
 
setup_adc_ports(ALL_ANALOG); // Analogove vstupy pro cteni trimru
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); // Casovac pro cteni laseru
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_4,255,1); // Casovac pro PWM cca 900Hz
setup_ccp1(CCP_PWM); // Nastaveni PWM pro diferencial RC1, RC2
setup_ccp2(CCP_PWM);
 
set_pwm1_duty(90); // Zastaveni PWM
set_pwm2_duty(90);
 
delay_ms(100);
set_adc_channel(CERVENA);
Delay_ms(1);
 
ext_int_edge(L_TO_H);
edge=true;
uhel=((read_adc()>>2)+32)+30;
olduhel=uhel;
 
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
 
delay_ms(1000);
 
output_high(MOT_DIR_L); // Oba motory vpred
output_high(MOT_DIR_R);
 
while(true);
}
/roboti/istrobot/laserus/SW/PIC/873/laserus.h
0,0 → 1,15
#include <16F873.h>
#device adc=8
 
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
 
#use delay(clock=4000000)
 
/roboti/istrobot/laserus/SW/PIC/88/16F88_Reg.H
0,0 → 1,298
// Komplete definition of all Special Feature Registers
// of PIC16F87 and PIC16F88
// (c)miho 2005
 
#nolist
 
// SFR Registers in Memory Bank 0
#byte INDF = 0x00
#byte TMR0 = 0x01
#byte PCL = 0x02
#byte STATUS = 0x03
#bit IRP = STATUS.7
#bit RP1 = STATUS.6
#bit RP0 = STATUS.5
#bit TO = STATUS.4
#bit PD = STATUS.3
#bit Z = STATUS.2
#bit DC = STATUS.1
#bit C = STATUS.0
#byte FSR = 0x04
#byte PORTA = 0x05
#byte PORTB = 0x06
#byte PCLATH = 0x0A
#byte INTCON = 0x0B
#bit GIE = INTCON.7
#bit PEIE = INTCON.6
#bit TMR0IE = INTCON.5
#bit INT0IE = INTCON.4
#bit RBIE = INTCON.3
#bit TMR0IF = INTCON.2
#bit INT0IF = INTCON.1
#bit RBIF = INTCON.0
#byte PIR1 = 0x0C
#bit ADIF = PIR1.6
#bit RCIF = PIR1.5
#bit TXIF = PIR1.4
#bit SSPIF = PIR1.3
#bit CCP1IF = PIR1.2
#bit TMR2IF = PIR1.1
#bit TMR1IF = PIR1.0
#byte PIR2 = 0x0D
#bit OSFIF = PIR2.7
#bit CMIF = PIR2.6
#bit EEIF = PIR2.4
#byte TMR1L = 0x0E
#byte TMR1H = 0x0F
#byte T1CON = 0x10
#bit T1RUN = T1CON.6
#bit T1CKPS1 = T1CON.5
#bit T1CKPS0 = T1CON.4
#bit T1OSCEN = T1CON.3
#bit T1SYNC = T1CON.2
#bit TMR1CS = T1CON.1
#bit TMR1ON = T1CON.0
#byte TMR2 = 0x11
#byte T2CON = 0x12
#bit TOUTPS3 = T2CON.6
#bit TOUTPS2 = T2CON.5
#bit TOUTPS1 = T2CON.4
#bit TOUTPS0 = T2CON.3
#bit TMR2ON = T2CON.2
#bit T2CKPS1 = T2CON.1
#bit T2CKPS0 = T2CON.0
#byte SSPBUF = 0x13
#byte SSPCON1 = 0x14
#bit WCOL = SSPCON1.7
#bit SSPOV = SSPCON1.6
#bit SSPEN = SSPCON1.5
#bit CKP = SSPCON1.4
#bit SSPM3 = SSPCON1.3
#bit SSPM2 = SSPCON1.2
#bit SSPM1 = SSPCON1.1
#bit SSPM0 = SSPCON1.0
#byte CCPR1L = 0x15
#byte CCPR1H = 0x16
#byte CCP1CON = 0x17
#bit CCP1X = CCP1CON.5
#bit CCP1Y = CCP1CON.4
#bit CCP1M3 = CCP1CON.3
#bit CCP1M2 = CCP1CON.2
#bit CCP1M1 = CCP1CON.1
#bit CCP1M0 = CCP1CON.0
#byte RCSTA = 0x18
#bit SPEN = RCSTA.7
#bit RX9 = RCSTA.6
#bit SREN = RCSTA.5
#bit CREN = RCSTA.4
#bit ADDEN = RCSTA.3
#bit FERR = RCSTA.2
#bit OERR = RCSTA.1
#bit RX9D = RCSTA.0
#byte TXREG = 0x19
#byte RCREG = 0x1A
#byte ADRESH = 0x1E // F88 only
#byte ADCON0 = 0x1F // F88 only
#bit ADCS1 = ADCON0.7
#bit ADCS0 = ADCON0.6
#bit CHS2 = ADCON0.5
#bit CHS1 = ADCON0.4
#bit CHS0 = ADCON0.3
#bit GO = ADCON0.2
#bit ADON = ADCON0.0
 
// SFR Registers in Memory Bank 1
#byte INDF_1 = 0x80 // miror
#byte OPTION = 0x81
#bit RBPU = OPTION.7
#bit INTEDG = OPTION.6
#bit T0CS = OPTION.5
#bit T0SE = OPTION.4
#bit PSA = OPTION.3
#bit PS2 = OPTION.2
#bit PS1 = OPTION.1
#bit PS0 = OPTION.0
#byte PCL = 0x82
#byte STATUS_1 = 0x83 // mirror
#bit IRP_1 = STATUS_1.7
#bit RP1_1 = STATUS_1.6
#bit RP0_1 = STATUS_1.5
#bit TO_1 = STATUS_1.4
#bit PD_1 = STATUS_1.3
#bit Z_1 = STATUS_1.2
#bit DC_1 = STATUS_1.1
#bit C_1 = STATUS_1.0
#byte FSR = 0x84
#byte TRISA = 0x85
#byte TRISB = 0x86
#byte PCLATH_1 = 0x8A // mirror
#byte INTCON_1 = 0x8B // mirror
#bit GIE_1 = INTCON_1.7
#bit PEIE_1 = INTCON_1.6
#bit TMR0IE_1 = INTCON_1.5
#bit INT0IE_1 = INTCON_1.4
#bit RBIE_1 = INTCON_1.3
#bit TMR0IF_1 = INTCON_1.2
#bit INT0IF_1 = INTCON_1.1
#bit RBIF_1 = INTCON_1.0
#byte PIE1 = 0x8C
#bit ADIE = PIE1.6
#bit RCIE = PIE1.5
#bit TXIE = PIE1.4
#bit SSPIE = PIE1.3
#bit CCP1IE = PIE1.2
#bit TMR2IE = PIE1.1
#bit TMR1IE = PIE1.0
#byte PIE2 = 0x8D
#bit OSFIE = PIE2.7
#bit CMIE = PIE2.6
#bit EEIE = PIE2.4
#byte PCON = 0x8E
#bit POR = PCON.1
#bit BOR = PCON.0
#byte OSCCON = 0x8F
#bit IRCF2 = OSCCON.6
#bit IRCF1 = OSCCON.5
#bit IRCF0 = OSCCON.4
#bit OSTS = OSCCON.3
#bit IOFS = OSCCON.2
#bit SCS1 = OSCCON.1
#bit SCS0 = OSCCON.0
#byte OSCTUNE = 0x90
#bit TUN5 = OSCTUNE.5
#bit TUN4 = OSCTUNE.4
#bit TUN3 = OSCTUNE.3
#bit TUN2 = OSCTUNE.2
#bit TUN1 = OSCTUNE.1
#bit TUN0 = OSCTUNE.0
#byte PR2 = 0x92
#byte SSPADD = 0x93
#byte SSPSTAT = 0x94
#bit SMP = SSPSTAT.7
#bit CKE = SSPSTAT.6
#bit DA = SSPSTAT.5
#bit P = SSPSTAT.4
#bit S = SSPSTAT.3
#bit RW = SSPSTAT.2
#bit UA = SSPSTAT.1
#bit BF = SSPSTAT.0
#byte TXSTA = 0x98
#bit CSRC = TXSTA.7
#bit TX9 = TXSTA.6
#bit TXEN = TXSTA.5
#bit SYNC = TXSTA.4
#bit BRGH = TXSTA.2
#bit TRMT = TXSTA.1
#bit TX9D = TXSTA.0
#byte SPBRG = 0x99
#byte ANSEL = 0x9B // F88 only
#bit ANS6 = ANSEL.6
#bit ANS5 = ANSEL.5
#bit ANS4 = ANSEL.4
#bit ANS3 = ANSEL.3
#bit ANS2 = ANSEL.2
#bit ANS1 = ANSEL.1
#bit ANS0 = ANSEL.0
#byte CMCON = 0x9C
// #bit C2OUT = CMCON.7
// #bit C1OUT = CMCON.6
#bit C2INV = CMCON.5
#bit C1INV = CMCON.4
#bit CIS = CMCON.3
#bit CM2 = CMCON.2
#bit CM1 = CMCON.1
#bit CM0 = CMCON.0
#byte CVRCON = 0x9D
#bit CVREN = CVRCON.7
#bit CVROE = CVRCON.6
#bit CVRR = CVRCON.5
#bit CVR3 = CVRCON.3
#bit CVR2 = CVRCON.2
#bit CVR1 = CVRCON.1
#bit CVR0 = CVRCON.0
#byte ADRESL = 0x9E // F88 only
#byte ADCON1 = 0x9F // F88 only
#bit ADFM = ADCON1.7
#bit ADCS2 = ADCON1.6
#bit VCFG1 = ADCON1.5
#bit VCFG0 = ADCON1.4
 
// SFR Registers in Memory Bank 2
#byte INDF_2 = 0x100 // mirror
#byte TMR0_2 = 0x101 // mirror
#byte PCL_2 = 0x102 // mirror
#byte STATUS_2 = 0x103 // mirror
#bit IRP_2 = STATUS_2.7
#bit RP1_2 = STATUS_2.6
#bit RP0_2 = STATUS_2.5
#bit TO_2 = STATUS_2.4
#bit PD_2 = STATUS_2.3
#bit Z_2 = STATUS_2.2
#bit DC_2 = STATUS_2.1
#bit C_2 = STATUS_2.0
#byte FSR_2 = 0x104 // mirror
#byte WDTCON = 0x105
#bit WDTPS3 = WDTCON.4
#bit WDTPS2 = WDTCON.3
#bit WDTPS1 = WDTCON.2
#bit WDTPS0 = WDTCON.1
#bit SWDTEN = WDTCON.0
#byte PORTB_2 = 0x106 // mirror
#byte PCLATH_2 = 0x10A // mirror
#byte INTCON_2 = 0x10B // mirror
#bit GIE_2 = INTCON_2.7
#bit PEIE_2 = INTCON_2.6
#bit TMR0IE_2 = INTCON_2.5
#bit INT0IE_2 = INTCON_2.4
#bit RBIE_2 = INTCON_2.3
#bit TMR0IF_2 = INTCON_2.2
#bit INT0IF_2 = INTCON_2.1
#bit RBIF_2 = INTCON_2.0
#byte EEDATA = 0x10C
#byte EEADR = 0x10D
#byte EEDATH = 0x10E
#byte EEADRH = 0x10F
 
// SFR Registers in Memory Bank 3
#byte INDF_3 = 0x180 // mirror
#byte OPTION_3 = 0x181 // mirror
#bit RBPU_3 = OPTION_3.7
#bit INTEDG_3 = OPTION_3.6
#bit T0CS_3 = OPTION_3.5
#bit T0SE_3 = OPTION_3.4
#bit PSA_3 = OPTION_3.3
#bit PS2_3 = OPTION_3.2
#bit PS1_3 = OPTION_3.1
#bit PS0_3 = OPTION_3.0
#byte PCL_3 = 0x182 // mirror
#byte STATUS_3 = 0x183 // mirror
#bit IRP_3 = STATUS_3.7
#bit RP1_3 = STATUS_3.6
#bit RP0_3 = STATUS_3.5
#bit TO_3 = STATUS_3.4
#bit PD_3 = STATUS_3.3
#bit Z_3 = STATUS_3.2
#bit DC_3 = STATUS_3.1
#bit C_3 = STATUS_3.0
#byte FSR_3 = 0x184 // mirror
#byte TRISB_3 = 0x186 // mirror
#byte PLATH_3 = 0x18A // mirror
#byte INTCON_3 = 0x18B // mirror
#bit GIE_3 = INTCON_3.7
#bit PEIE_3 = INTCON_3.6
#bit TMR0IE_3 = INTCON_3.5
#bit INT0IE_3 = INTCON_3.4
#bit RBIE_3 = INTCON_3.3
#bit TMR0IF_3 = INTCON_3.2
#bit INT0IF_3 = INTCON_3.1
#bit RBIF_3 = INTCON_3.0
#byte EECON1 = 0x18C
#bit EEPGD = EECON1.7
#bit FREE = EECON1.4
#bit WRERR = EECON1.3
#bit WREN = EECON1.2
#bit WR = EECON1.1
#bit RD = EECON1.0
#byte EECON2 = 0x18D
 
#list
/roboti/istrobot/laserus/SW/PIC/88/laser.PJT
0,0 → 1,41
[PROJECT]
Target=laser.HEX
Development_Mode=
Processor=0x688F
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\Dr
Library=
LinkerScript=
 
[Target Data]
FileList=C:\PIC\laserus\laser.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[laser.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=laser.c
 
[Windows]
0=0000 laser.c 0 0 796 451 3 0
 
[Opened Files]
1=C:\PIC\laserus\laser.c
2=C:\PIC\laserus\laser.h
3=C:\Program Files\PICC\devices\16F88.h
4=C:\PIC\laserus\16F88_Reg.H
5=
[Units]
Count=1
1=C:\PIC\laserus\laser.c (main)
/roboti/istrobot/laserus/SW/PIC/88/laser.c
0,0 → 1,96
#include "laser.h"
#include "16F88_Reg.H"
 
#define SERVO PIN_B5 // Vystup pro rizeni serva
#define LASER PIN_B4 // Vstup pro cteni laseru
 
// kroutitka
#define CERVENA 0 // AN0
#define CERNA 1 // AN1
//#define ZELENA 3 // AN3
//#define MODRA 4 // AN4
 
//#define OFFSET 100 // Predni kolecko vprostred pri care vprostred
//#define HYSTERESE 3 // Rozdil mezi behem tam a zpet
 
boolean edge;
int8 uhel;
 
#int_EXT
EXT_isr()
{
int n, t1, t2, t;
 
set_timer0(0); // Vynulovani casovace pro 2ms
output_high(SERVO);
while(get_timer0()<(1000/256)); // Ceka 1ms
for(n=uhel; n>0; n--) delay_us(3); // Sirka impulzu podle uhlu
output_low(SERVO);
while(get_timer0()<(3000/256)); // Ceka do 3ms, nez zacne scanovat
 
set_timer0(0); // Vynulovani casovace pro zjisteni polohy cary
if(edge) // Zrcatko prejizdelo tam nebo zpet?
{
edge=false;
ext_int_edge(H_TO_L); // Pristi inerrupt bude od opacne hrany
INT0IF_1=0; // Povoleni dalsiho preruseni
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
// do
{
while(0==input(LASER)); // Ceka na detekci cary
// output_high(SERVO);
t1=get_timer0(); // Poznamena cas nabezne hrany
while(1==input(LASER)); // Ceka az zkonci cara
// output_low(SERVO);
t2=get_timer0(); // Poznamena cas sestupne hrany
t=t2-t1;
} //while((t<5) || (t>7)); // Cara je detekovana, kdyz trva mezi xx ms
if ((t>3) && (t<8)) uhel=(160-(read_adc()>>2))-t1;
set_adc_channel(1);
}
else
{
edge=true;
ext_int_edge(L_TO_H);
INT0IF_1=0; // Povoleni dalsiho preruseni
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
// do
{
while(0==input(LASER)); // Ceka na detekci cary
t1=get_timer0(); // Poznamena cas nabezne hrany
while(1==input(LASER)); // Ceka az zkonci cara
t2=get_timer0(); // Poznamena cas sestupne hrany
t=t2-t1;
} //while((t<5) || (t>7)); // Cara je detekovana, kdyz trva mezi xx ms
if ((t>3) && (t<8)) uhel=((read_adc()>>2)+32)+t1;
set_adc_channel(0);
}
while(true);
}
 
 
 
void main()
{
setup_adc_ports(sAN0|sAN1|VSS_VDD); // AD pro kroutitka
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_oscillator(False);
 
delay_ms(100);
set_adc_channel(0);
Delay_ms(1);
 
ext_int_edge(L_TO_H);
edge=true;
uhel=((read_adc()>>2)+32)+30;;
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
}
/roboti/istrobot/laserus/SW/PIC/88/laser.h
0,0 → 1,18
#include <16F88.h>
#device adc=8
 
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES MCLR //Master Clear pin enabled
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOIESO //Internal External Switch Over mode disabled
 
#use delay(clock=4000000)
 
/roboti/istrobot/laserus/DOC/Fotky/P1140012.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/laserus/DOC/Fotky/P1140013.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/laserus/DOC/Fotky/P1140014.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/laserus/DOC/Datasheets/-5400b.pdf
0,0 → 1,1245
+%âãÏÓ
+0000000016 00000 n
+0000000907 00000 n
+0000001200 00000 n
+0000001407 00000 n
+0000001569 00000 n
+0000001591 00000 n
+0000005034 00000 n
+0000005056 00000 n
+0000008229 00000 n
+0000008251 00000 n
+0000011780 00000 n
+0000011802 00000 n
+0000015523 00000 n
+0000015545 00000 n
+0000019173 00000 n
+0000019195 00000 n
+0000021980 00000 n
+0000022090 00000 n
+0000022195 00000 n
+0000023615 00000 n
+0000023637 00000 n
+0000028639 00000 n
+0000028661 00000 n
+0000032332 00000 n
+0000032409 00000 n
+0000032487 00000 n
+0000000962 00000 n
+0000001179 00000 n
+stream
+hI Ã÷ -Äò`1^ÖÊ W/0Ú0ðnf`žs€áaƒ¶7C°öµ ì
+stream
+€A ¡ˆ€Ò ŒqÈÈ\0ÃŒ<h ÇpÜ@r2ÀÊât$A
+…ˆòbTœ@j“‹†#!Ü@1…D²ì(É!ò9N
+ Æâá¤\kfEÍ°;Õò.1 †±d d1½Œæ˜ŒV3d„8æ Acïc
+žrùŸËèô±Ê¾ƒ‰EÆc™”Ó]”Øæöƒ<¶‡)ً·ºþ€ifÒj7Ã^\iEöü̝SۍÐÞ6Û/Ú¾÷l],½DsC†ýíõG×â÷íê#JŸ§·ÃŒøÕf?Ôô?ŽSüÅ&£æò7ÊÓöÃ@J«58NÂ<0€m O³Ï»ì9Ï3Øô¸ÎÓ="¡»Ñ7®zÄú¼T\èÄ®ld³F´<³Aîbfå8-Èhæ7’i†ŒK’Ð82CÍIŒëн†PÃLÏ‹Øjö0®ãé /rò9L‹ŒŽKòb÷ Ìï¼Ë
+¶’âöð¯ñÒ3K
+ž)¦;R.‰Y컬Z9
+5¸µJÔÚ#Ut©…´5÷
+‹3L"P˜É>Hdšy’¥YÐIƒ„M J“¬âIICŸ%¥+B“rªOJÙE+å! ”Æp…²ùVå²þ–é?<Ç #åd •Ò&X“'@™¥ü‘™RÞfLBS愵šs
+=<C5æTâ§Ri䥴Z¦‚#PfM$¨“¾¯U«Tªå>34‚¨ÔµÖà*ík¬Ä^´MZŒ ©m¬5m*ï^k¥n¥Ô ‚Ö
+W¯V¾X–ü͎ݒ±¶RÇÎù-Wì#²µúÌ‹Af흟åîMXkSM,µµ•²ÔU«Ul¥=Œ«3´ôÛ¬šì»¢µÚÌ[uZ+ì,¸·ÁV›~flÕ±çËË]mªež,VžéZ;”•.åu£¥ìÛK»PÛ©O³–æXë³jæ½í³–ÂÒ:óYîmĕ7Ê×®»|bÎÝP[—Š¦µû£r/þ¿—bž½ecxnm}±X?ÛËôb¯6´Šk ߚ:ÕnÂt
+NŽÎK
+D
+stream
+Éâè$²1Ž£Ò ¤Rn.JçpÉôºaB™A Ã)ԘkF¤I"Óù}‡3©Õa£Iµf›@˜Ñ,2XhÌAÊëtêõDi;—QíÐaÄRçh¨Z¥VÈĒár–à+ðIØʍ&á…ÃxMþ»i°D±ðф®R8­brøœîû„ÎÛë™j~.i’ÄG1Lþ†¹­»i±û(¤]¬ºà¶¸ˆâ)_´[Š$ˆaUâñä{k¦b¥šØäåŽV߃3çt;[[>]ŸìdœŽïWI! æÃX«·Éòó&~Ž$ó<î?.ûàù;!£þü8²È‘»!›iA/xh‘)ìí½¬Rìþ>pdé! 
+)Pì? DP”8ˆ†1D"×DŽÌZ”Ã/47!a¢õ§‘L`ƒÄ±ÐsF¯Ò GAÃÿ"ÀPœ€’É2\}ª±ÐoɑŸ²rĦ¢I
+G3õM¼ªâ8E›6âcGøÈo‹_8*NWö!‘ä~3ZW•=Ɣ^9*ao1™åñ*S Ö&Oç¹Å5˜CÖî}ŒÆqîM¢i5%(ª†1Ûï§^t®£!å¸L¾zŒ”íÄ92z…ëÏþá:îk¨ÊúÎ/ë²î§?à,~¢D ®Ñ'@›$ÒönŽÆý;BÛ’ê<#AÀíZí†øt‡1/Ãq›´<•·ÛÕÄ¢'|·6Õ.< ׿S«uwÐñÃzøòP’׿URÍ] Ìz.‡©}‹]h>hºsÛ'½Âj’¢ö"wâï~ƒ«g>Ì¿Z.²"ÆLªúø—Èùët“‰ü9Lƒ|³
+É"Š%ò%xÁß‹Ó Š$£@FBKãTQ¤êḡŸ±JÌ}ô9çø 3mi+?ø}#øÐ¡À¢Hàle„¥ðB¨dáo„Er¨…ÚŒkPò
+e•…£u†³Q8dcÒG³çfËhŒvk¦CƾÑ2E;‰5£ö½Û
+v.mÀ÷2Ÿ hioˆ•RF…ŠS<&a,, ®øfç™
+–2˜F†êHK³cWÏÙ•é¼á!v«³Ö{;?Ýa³ï}ÚÚ^ù—}8EôÉQ8׺ŠPM>¹:ݵ xÌÏCMÍhNàÒꗺå„n¿Üy;½ÒHÄÆ(ÀÛPÁsÂp«‘wkÝ9ñ ›Eü ƒü[…¼&ÅxQ
+¢ã‡n®CĈ?%ដ8þ4Âxç"Ýáßrn#Eï/müǔ;^t‘¹à5€ü¨ôðùúèÅ#šr#О‡DB|Ÿ¨=Ž’uºZ셼oª@áÖù‡]~K ¹N(­»)#é½£ª]>?Û:{¡{Í£´¸HsÐ;j}ìåHusßÚyÏ`ç}çŸx.ñÓãÏ{ñ
+jÞڐÜ~mv€
+ ÜΊ/v×Ë-Ɉ„0úÞðȧªW
+½jöê"qD‘â{çëh°¶qq^ÛBÚnelHm ¯„yѓ ~ÇbŽ`D!+¶$Ò ‚PÁ!Ä:ÿ¦ÎzlþyÃúÿ²"R¶Xh28ÐÄèmѶTÏ]%ƒ¿#¬p?¯^xòÏÃêWQ’­ˆY"È·¤
+fRN­ˆfiFÑ ‹rBÎß'dfòE(û°Œ Lþó¦K(ò C¦“*`*¬:EŽ¥)æHPž?RÁO‰,ñê¸ÊÂã2(l:ù/ ‹„K™.'ù-+A+¿&òîOŽH•3N @¡“
+¬'1´ÞÌV%s)óK…;2(?.ÅN!3-
+stream
+‡‹†²©dn: ÈfRI4æwžË¨ Î.›N"8ÄTk–Ïè3Àg
+ŒIÅÕIU^3>—РÔúˆe7ŠŽ#›Mp$¯Ù­×&µL™AÇ"ᅆr1†EFó{¥.Õw¯N¢v,D¨m~ºÓpQj–&6¨c-ë¶o'$¨4mo49ÁéãcxƀoXÑë°; Ê#7Ðh©[«^ iEaš–cI¯ÁfðèØÓ?JÖà8±4lf ‹±v~jƒîÇ#¿’ÿÍŽwà ¿†/îÌîð(l †>˛ró$Ž«úô"a¢tá=ë´
+’,Ž‡AA²1$®ò2,¢É²|•)§b›Ê{ªÃKRä®L„»)6òÊúLèÚÚ½ˆdΈ4ï 73ªÓªÁ6H³Êp„¾óš Óд£PŒ$å"Γý>J-›O G“jVÃR“#K§f‰ÒÎm:ÂPÒô°‡4]!/'MHÕ¨W#QÉ-VHR„ÖÒíq †ïõ^¦¡íQGG!!
+»1¤·Sèå”îG° bð¨²Cö­ÔaÄLñ7œÄZˆt`ÂhU½sʵS?–mà•Û)ÓÀ‹FPm‰tB·RÆõµÿRh³êñE1ò„Tl¬í~Ä2Š¿7ȃ¯Q`Êc‹ºn“Sca¶¶AX¶U9ŽÈªýu‘Îe–b×%båeSNh‡«óMP•ºùÔgg­=Œž]÷ýsX»è«Ûãõ–~ª¬–“[Z3ÔË9Øv£2V/¦‘¨P»
+ù®äÔâð‡,N ¡Üû.Öÿì{…þ¯ì˜p‰¢²Þ¯"îS‚¾m÷6ïµpAºU¿l—äÕÅ)þk¼ðPï’ÙÈJõÊê¼fío,KËòH5=t{ï1sô3T_Òq¼ÛÃ×õ].¿2Ù=¯¢¾Ü#ïƾûœGÈø 5éªíÍ&!KæŸÏȺÊq]ŒWW¥A~š"‰«éþ æJ—Ô)äÜó´²<+6 ðÖÞbß}ùü6=ñûL¯ÁÛ~žf5•cž„¢ÄseM¨ £
+ÙiÆŠÜ¢ïv’qT·i€“›ÖR%º•¼W!Øëµ=ëŠ]dB
+Ûë»/ų»''Þ¼gmÖ—¶æßÞzìa¯­Ý¦·Æûa;Õ_F±xe]¨ûCnæB‚Ð$Ûï1WÄÔ-Ub$7K±m—W'¦ËW™Žo±©WÆöDŸØ²ìý~!6œôZ ‡hì1 ³&Ôדíf{9FËáÃü߯Ò#ª¹bì奅éÉÆÌ3&Áb*díE‚¾èFÍÞ{á›/}T¤¸73NÓG~¯‘Ç7{_h o³õÛʗžêÚý©1
+'œî½?7:ËÞ¼
+ؖœ¸)Þ®»s‘q罧©/Ç8‘pR^]xHª–¥†çó^‚•ùç6ñý
+L/L­¿Kļo[·Í{/R±:á—þc¯{YpJ½çÌïí‚ ¯ã0Z
+stream
+‡¸Ôf.Œ„Ø, †ÃÆCA²+G#"èÜv>.Ã£)$.<
+@¡QÃZ¾œÎé’iõ#JÄ©Óù$Št.¬Õ)òXlìaFÅÃ
+²U<©
+àòFilÄÀQÊm¢ñÌ^‚¤/ô…Ȫ¼JÆHŒã¥ I+â¯-L›(JҔ¡Hˆ|-³È2!µq
+ËIl4Ì¥§1ŒA®4Å·.L‡¸s«Ÿ5Ï.ÛÁ¥Œ 3$P/«×²®Ò¤ÐªG'Ѭ
+5B@é[};Òë¼1<1rä 3§/ì'5Íã'5ËèkúÎRó´þÏr½TçL2r0>rC9%Wü›#õìÌÖé€üW¯L`žX¯lÙ²DP†XQ;'`×0£a^Ç ]fÆVóilYíCZBa0Â|íq0/ìä Z+LïZ¯ÜÿÀ5­€‡:Ð"BÎ;Á«8úD,JsƒÃSYeHCÙaÐîý»ˆÈ8¶(üO×1»øô M·E–ßäÒ$o”U–³Ÿ:å±\í=L1QXÀ¹³¯mPW-ÄØOؼ
+Fˆš
+aZ
+"+â)Àص'GP€È,LS*Yij„bÊ06F&"E·¦q¢ÒŽ+íª0¡§ å‹ÙJn±!î¾ØÖy+mˆŒõG3Á㱋lQÂ,Gg<ìbYœæTÏeë\Qê„EÓPTniùÇƗ$dŽ•ŽÅ˜èrø64L–PÊ3‘"Dif‚UÙB\‰Ô‰qzNÅÕ*Ñ¢´S—F+°øÁZ„‘Š'½C#ؗ1ÔD<òÖc¸Vi̧ŒE:Í3¬UQ*ÄåD³¢`fìÚ%÷N#˜‡ä)@œèV\¼t«/Ý"K‹)Vn%‘0"TQ•®‚}5ÙÕe3抲:8¹ÇÎå¤|ùrÒ.yDBÇTŠb®¾=‘¤±(²KŒ„±‚Έ‰G$oqó֑N3‘6\±,IóV•Ó‘ «7¤äîDºh¯œ±;xæ¢"S©!!J‘9Qq‚ ’ gOgŠ–rFŸEÊmS¢‰|¤§0·RӘ¨¤­#‡ò U§ýL×ü8ª0šŚ3 ¢Y…0>‰C
+q(dG“pµcI$d¹ 䩂0b[jå/b¹Nª^Oå‹R©­ijVY¡5ßµIJš”D‰¨ò,{̓.3ċ9=´ÈRÎÐÑ9 'Êu$ ‚ƒtàCLP&ܝ²ûbX­¢è|֐„:yøå­ë%•åúœ[qmW;ÿ·/õS\¦óà%¹ºéXÚÞDkÝl¶miz”åƒ5â=ß²uVïZöéu/1͸jîákÄNmú"½7Æ×=+nSÃðA õÍpiZ ˜ÄÿÒkÖF¦ÚG‹ñ~Áb¿1Ç9B J`5 Jó™%‡¤”pƒ.mÔ‚ FPñx Å ʃ21¶ ¥ G[vhMûp¥; I;âhÍpù"g^£‘cýÆșÌe<•qÚN‡ïÿ"ÉÊÄL2ítgÙf8Øupb_îf9¢£PswqÜn(ØñÞLw,ÖRÎ3H±fú®3Æ΋ó!#ø”Ü1@š—8_¡ê€
+Ô·²¼»[²ë2-Ë3ºfÛɹ·»~éÜ»·ÚîÁUíîù;Ü7ð¿ÁRúÔÕ; 벜[ч1Öñjïˏ¦‹á¾^žpgëçz·
+Ú¢PlÞ‰%w¦êûg°DîC×}vÖ몖Yi]<Èw®—÷kÝ4{:z}ô˜æ-{Ù<ÆõÖò3z³¨‡¢ÁŽì¤ëé|‹ôw»QÐßcâ¬íö)Z~럁žîO±É©ÇÔ_þŒ“ºoۍޛ™ŸnÓÐ-Aûz,ÿúäîßkŸð¾ü?­à¶À ÈÝÏÈL®?©Öԏ¸e ú*NüϪão¾ú®ùÎÛOœ„*%eäg¤pÑ`e/JØ°J¢o_'nMÏ®$ ÈþìZ¡¯¿p6ûç2·oÌDÏìú덯¾:túêyo¾øÎ$û杏· j(ÕàbIÄ©%
+‰}ˆîüP hÏwê
+䐪;‰Ÿ.ö°«LœúðyppŠq'Oõ¯·o|úä ¦îž1"’ñzPé0ّ4O±8ûñ
+KjÍ°Q!®ÚÔRd™"k’Ù°R†e#0DüÑ*æ«û J{ñ.‰ÒI
+@µ n˜H³8íÖ
+stream
+€ACQ ä\9ãQˆ¸f2 CQ¨À]…ÃañœV/
+/wkFFc6±TrÓ)ËS¢Ï¨xÄak§c1tA*È b×!ÈË3
+´º|v®£•Y,.Ûqºi­r}V°gªðöq0+s»µÄ7òÒâíú܍5¿¾Óˆ'ö¯Ó«×äŒ,rˆ|Qžöõ<_(¸ní8(‚¢¸söò0n‹ê8
+MRuGO<43Öí@pmYTó5RVT½[GOÕ-RÕuÕi^Um HUÜûWÓhuYÂ6%lPTM^'õe%ZÓäb¢òS…o7iüçT†2ÕÇOÊÓ½ÑuP–UAAÙ¡„uÞWmE{DwŇeށš,ß·ÿoÖØ kà
+W_ßÚÞF-á öOKzyîßb²’„à~—o¦N~C\àä²£ùæ{Y‡ ïøß
+÷›zú_Ñà·ÿ_½ó^vyòy~ÏèsÞë¯OÉD½Çâ֝ùy¼hJԓý5§Á=Ç£–bÛ>ÐÈ»õKšƒÐx®r–´û¿|0™ÚAw‹ZYJŸçíò@-m•þ=†›ѹxÇ
+yæ$h¡ò¥Óúˆ‘c!)ºxñ»R™ b Þãªu;1ÅÍÄ@Î`,…sÉJH¨ò¸c+Yƒ¤50ôR
+€2õ`ÁRZ¬éY¡-Á—žgóDUupíÆR·zJÝ=I84 x­yêæ꽫q¶ºõòëUû»y3–_Î4¿Z^ͯuÆ¿°9©3e‹Ù‡mÓ¾6¶ûÁ9o{/ÅüÎó·Ý;÷f¯fÛYfãÂå‚疐ŕ×Q㩃¬°–çÃeg¬53ðâ¶Þá{Úm1.*°8¦afó‹ÉÆ\)e<u¸x4¥ÛÀÇ!*™õÃ0–Dɹmñ<•\8ÓYAôåkƒÇªþYpUÓ[æM#ÉAŽþÐÜ?2ò¼ÏMö9…Í™Æóg›Â{3¶ÖÙÜæÝÃ>g«3æÞÂ9ÿîº7šw-*–ýlèœ!£«v Ëz»I»˜M¶t¦"Òz_¦i›Åm&Ùº$¢Î–ÒqÁG €Í÷ÓRTv»m=íæ¨å㋙Ý3Ý=îýEØw>ø\²¿6ǽçŸä °‡b¼oŸÅSþËâ»f€”]¨î÷YÜü ó×½Z9+;߈ð3¹xûá®o‚v¿±Óß°-¨1K;;‡JKä]Σ ·婍Žöìëø
+ßݐÖŽ&Z赛ä°ù¥Á}»Gס§ü¿© ¼GÎô’ŸíSM!=T—¯zĹBh×z?7x¶vìºþ®°›üµ»É}ÃÓÛoªj»E¿þûçÛ©I’ëOdEÉzÕš8#èÝC|=Žù£XÆ…¬hù)þúšŸïû‰ðÆð$`,i¤Šöiê" 8÷€÷O’÷§÷è²ø/“¯‰ëEïú´P(öO¥/¹0.Oö½ë¦þîøû°‡/
+ÒoÀþ­¾®ïËηïÒ/îòÀg
+O× + G2WÏâþÌ$ÿ0‚Ý0U$ÞݯoI¾¸Ð
+ÞPöCYP€öð!£|ÆJöf7ððTLÆöeÎáo/kÐF4€)>ò” pÒ¯"Á1Ž¤;â\,Šác)Êî鏍$€rÄ€ãb]Cè52íQN‚ñJFløè `x‰ RQP›)½q ï$4ÎßQz^ÉÍIÂ9õ鼦Ⲃpo=‘›.ñ‘¢VÐÀGqÃG‘à)±‚К‘?±=‘Bª‘IñŸ‘Q§1]kAQÒfiÛÊ$<ñü£E%Ñ}r L5 aÑê›1”²qí13QÅò)Ïb‰d&$ò°&[#KüwežŒè¨],A*Šhí$ PÉ&c#òNÿ)%DÉ$¸‘§ {âCBöXi`j1é'È\irlþ€fp‡,{â`žÏ#)#Ô¼FZ Œt1F‘_(òdtg]#âb›bötr±*l,(÷*RŒ³Rdu •+Ҝ€© ’É*¢‘.)H²AZŽÝ,g*2å(Ë/òÇ-1â: ±/±V`“
+kR©â0îQÒ@\èbp‡ï%r¿gŸ1§#1îñ3²ÐkS*;©ªcÓ3&³6ï­3ÒtÁÓO2R²¬®ðeJ'1Sk.Ç_4¤5Ó]$²@aÖoG4ŒË
+Ç*‰Èì*„~²»0Ӛ9ð$’W8âüu2K9‘lg“Ÿ4ƒg;h ;ÓS/¬)•9DÉ;Nñ<2s8
+ÓcÓ7ó«ãÓ;³>Áb×>³Û%sÞ5CÍ7R?8óÿ;–Át>ҙ?¯xjò£=ȵÇ93w@ÔAJh“?Èl'â7@4 †Ô-@«DÔL”0étl´9AÓ)@DmD¤‹=TS<ç_Dé¤-΋REÆÙD3ÓB”{?tL¦tŠC×<t[Cè¥GÔcB”—HPCH„PêáCÃéJt`QÔeK˜QÔN;¢µ*)5)”\N4º?”¶o´Î<”NšÂ›*ãJÃUMô³M N”ÖöìN;¤Ý,ó&?‚
+stream
+€AFaTb6‹†ƒÌf.Ãѐ€Z0 b§#,
+†‘hÄhAAAC˜ä\3’CÆÃaÆo‹ÈåñØÈb4Ÿ ç’YÜ6S,¡L(°a¤ÚWL¥Ð¨2ê”~f5„Áᳩàà\8†VãtJô ±Êg‘1½[k˜È*öA¢ÑP®[(ÓQtä\5•Ï†’»Uó3¤MépüE:y®Ñª°«ŽV.Ì` ÖÎO+³_ô8ût*%ÊÝ.ÕÌo:½ééÔ¬â§3Âa†‘ZNϬÈï$¼:u×{ŽßÑê×f¾¶é,\¸®¦Ówè[aî¤WeÏÌÈ2œ)%?WÑàÜFsÙÿ£kGÅkáÿ9×ې餯â´ð=*úÂÓ>nóüè¼k„<ïzÚÛ³z1#îÂÒ2†8°ZÚÈÁÌû^÷COü+)ÍRè»M0b†AP’Ãќ ŠDJ4(G(bEǨ49 äC*Êã$¹®»ÂÍ@| ëH°3K'¬«;¾Ú5‘Ĺ¹Òclϴ҂DœK)¢m"'prľ³3ð§Î3›-6³jºQ=K´b†ÏíD½6ÌSÊWÅðœ­?NIZDÅÍ¡šÌ©kó‰:ѬÒ}L¬ïk/Nª5ÊP(cAÎ!ÃÛL‚¬×Ôïì읰´%BúR•ºm6U¨ªý/¸îŠë9$•:Eb; /Pï¤Ù;26„£>TȅQ6ՉE£@Ԋýg][ñEbñ"vM´ÅC7<o_ÝV‡6Øõ¥´‘5L7g×A¬AN]Òlð”_Ö½©là·-;x$OXX®ÊmPa76#¢s†^]¸º ^êOCÎÖ8m{`¨HaŽÙ²3SH’V2 ó8æ3Þ
+¥ÎšUp=uŸ@x]W‰èjÍG£WÒ™W·
+ç åç’à•s¡NÔ²ÏHs¥§©29ºQ°àÛ%³´gùnPmš.€¦Û2n«âÛrŒÞÛEÙDj›:W«êV=)8ïÈVY)¯J¼iz½ WA•7±èÛ-ÕËm<ͳÎm¼fßÊÕ÷ÓYºG“A¼ôMm1ÒcœëÕXY' žÒæÿ’¤A—rö®êÍ»6—Lè²<¤ãâÖÛVxŒÛt…åú:—Qå%gYU<}©ÝêYg쯽¶ÃR*1×÷˜¡ÐÕZönŸ7ÿ1 y*¿é̾wôœ˜{Ç;/Mý½VŒõßûõgO„„½è
+øcT€®ó¶rI_[‘oD…<@Wà¾ÝI> Éû·§òCaY®y
+â›Í‡M~D×b¯œ\!ð­ DhËbK­‰q”9xžÀ¡¼us±V’—J·!Œzƒé„Œ'>ðc­<pò?Fwälb¤Š&H(âüK4L¯>?I5á4V0ñv-C7 Ðd…5äúS½³îxߜ£‡Íê AyG$ Ü”Œ²¶,ÉƒÈ ÊKöŽìÖ(ÆU-(j}˜Ð@%¹€Mæb·#Úc÷ƒ! БÐF4Í©pëctϚ²^ â| ¡$Ã(ä¢CXU:¦Tϝ‘UE¹Ý=%|ӌ³Îo½Â,gœ³‘RB~GÛ(,½œ²¬ŒÄäù;(aG™
+ªx“ê%* ΢Ñbub1hiNšñŽ&Q*÷$…2KÒ]LúUBc^9DøGj §m5¢gފӈþô¨Õ>ŸnÓ©û+ÈLL§TžWÉ
+Jè<e©ôÀøc”úäâÔ%’¬F¹à€*ìätïN°ÕCÄF=a¤pþ¤Ú±S T¬&ò¨ƒ:Ë:©‘K#DúO
+6u…›pþ¹Xç}KŒ±L¸ÂØҚ’Û%®Åȧ9Fwg¡œêU„`¦Ù²gGŒ=z´“ZDÏék„D©®ÎÜT5Kmí®&…šËÚ3+hÌ°yZ{—G&iÛ#2³X»cs鵩ÜÝWen¤êœ7Nè<+;`dç¦ë´ØÙ(P­í·Ôféª~øma¯¾VÑDš¯}¬œ´²§V±[û3€.^%֌ù܇ñr°e¥·VÀ +ªhìF£·ç
+Y‹e‰o6 %³
+õÕÄ?„–ÅñÅ÷
+¸CvÓÁ;¿çös²ön·hšÇKlª­è³VÝÆï][b]¹§K²Ô›Î
+I2Ÿ¾6(3ܙ­»èóºu[qݛI_覙¼xKxÛ:ïˆèQ økå5NDqÆD7‘…;¼ƒWg÷WÂË&ҐþsðGW] f«wLÏ!o¾EÆ´Žä<ž¼lpoÈ^+ÃÞ´ðéç÷µÊ:Ô庭íq9ýÓ*̏ãC~˝þMº?=ä‰u’JI:—Dö›)õȍ4·bé[;µk•²û]È: Rv®«84GmÕ'c’¢újmÍ7dýþ÷ÙÙ|ÅΞ';˜¯ ÷§oÙ'¹ñ~ë;¼Eï>½ìbRàÞ«Xç®GÉ =fíKÐö¿S9ƒLî)ù[wå⟙>úŸÖñþý×#׶9ûÂIoO=L–é•ËIX°¤É$@ס×ôyÆáûfxI7˜Ê§Ä뒷Ãú½â»L·ó»Wƒþ§õnÿה~èÖ{ÏՖxíë“ðĪÄNü¯ð‰ÆùoöÚXóðHNh›OèçPà-Žû®¸ 0¢„ÿê
+ËM$çІ­-ÎÖܱ4ˆmõ‹̌ßñ:ó¯óŽúð%©1µ©Š¹Ñ[M£‹fýqAËßÑ$)±D-O0(0±»°2§‘Y°ŒH‘aÐÚQ˜Îñ@¹‘ròÑ¢pp\êÑ7N?‹Ó
+stream
+€AFaTb3‹†#aÊ3 EÃA €Z0… „#,
+Sñ”½.’BðÀe´¼TR¬£?énÆf$@“SË(‹1¥äÍh²î ÊÂHF"‚¦˜S].Æ9«/HiTJ,©q8cd“~X‘…Å:ž’œàÊÀG#*§¡
+tÀâR©Ò"MƜ«¢·g @Ùq,$ÑÁ‘‰7)¨Q4t¤aöÅò{BÞUž1dÐщ%;¨z‘taõÀYû)4™‹¸H`mP)ôçÄò*)štØS‚ÌØIÂg§Ì©*­Å%P͂F§m6žª¢YRçåM,Ñ<Æ/z¤ÊœåK!•!: v!Wa\(• »B5Y Å<¨`Ø¡¾Ú¡MÊmm1‰þµ¯òq]
+l$‹¾[VºôCI¢ü­pÚ±Êüq*ò°ëò·ÕuN«QÓ]î¹¾z†üªas/6\´$f͝'
+¢ÐkC Œ²÷áaXë'soõ:¯ÙW;S`ä7žõ®Y™â$Ok\….Ø.¸·WkUå¥Ùt –wam©¥<˜ƒ ,ë~îFz•¶ß±†Á~šÅ«¹Jøã2ÌÉÉ£
+¬ôUvXpå`|øo
+c{hN'&>ˆu—dl. åž!«Ö±],bk2­×ªh~±bØ~jýN©Rw-TCc–qòÔÆÙNfß,·3qf>]ïÌ_VUœðH!.bÜ÷˜09f¹•ß@²­Rð‚¥Õ¥šÝÌGi‘ËdU):¬yUÁžªALƒ—šÜhŽ†–9= À5?vâƒprȃ‘á$6² ˆÈQ A* ^è
+˜ƒc݌Dqéƒï$…M#±ñèr úì,^™ áÌP°@‰X0 ˆ*2FƒÅ
+Ü°PCÀc ¡°6PÜR !¸3‚ZAÁ@e!t*­ÎE¢º
+ƒî]Ï>·^í½ðPC oL1ï°Üwç༶Ò+Âø|
+Ý[°€ˆCl'{†Päƒò`¤*®I×ç([ r¾$ƒ`aa ÐÊCxrßÄèžEÁºäÛ †t3ˆz0
+ÝÁH:ïÞ¨Ã(d2‡0ÒÃwW䆮[t-Ð Çå¡ 7†Þ¡Üyï$šeS»l-Íظ˜)ࣩu@Æ
+¤:PÆ©î]dÁæзãðۀ«@Ž#â )Q@ ;‚™d
+­öÞ@A
+ƒ;
+àê àñ
+‘`§°VöàçÐxQ~#–ï±õ
+Ò:> Q/é!€ênÏ6Ç°k NºîòЮ(.. îÐ ïï‚/i*C*ðÏñ
+Îw;ï¾"/ÃϐǤŒ8PᱶÜRl SP>B%³Lې"Jª
+Ñ ±Ý Ñ(²¢æ3q1²i$´°ÝÑÑ
+ñ×°”nbþ’«*ñS@m/qQj÷¯/\n« Øqù1t¯N­ÓNï` ЩXåò,æ‘Ù)nrþ€[pù±¥A4Pþ“3
+±•öíÇ!s Sϟ@%(n=1.0ï Âû.;ñ¥M°ò”Âۑ×
+p«U­¸ €QrvéSpÝÔ¤ï¢[#ñ  à§!n5O”õ#ÓQ ñ•4ò?)-é2² €Sî@ú²äpaX¼ÜsÖÝÕ ÀëLVæ1PR’mð µI
+µé¾ÞÎÛ°ÏBî°4-Ž4$ŒÀntM„Ò „Ú­®
+fDÛmºÛà 3ÝT@§#àÝ4àäí@¡î£ù)ŽJñpµLé–gpPßÏ÷ajvx¬zô]$Ö]XN[R¬öî9X®¥ÉF7ev”Qkîë“u TJ
+oìÿõ;Ϻ¥mH n¡Â*aªad-¨ÚÍ°ÛM¸ÛÔyGåJ¶4Ԋ: ±n0&/0/dvídÀAeõ_ä p=Ž6æÀÓLR`­zë-Ž
+@Žàà”Ô€ÔtÄà@ P
+(–ÞG*Ò0
+–`Au,›töâ{çÃu€kn_v‹Ž M9sD:dMÐÊ6Ú`Ãlæ>ÍT‘wXï´(6æ§Ì ¡Âïy7wx°˜wœ‹W 'WšùjtÂÈâ‚-
+| yzkùʘ!i°ªL ¼Â#QéÁ{cÈ!bP¼­‚>eu€Ê¢!cv·L¡€xº8)ƒøBÈ·ôq¸ F!wímé‘~§Z/ó|'ÎÊg{f^\hªËL šÅÆËø7Ä©8yy‡ Ì׫xɐÌ؊·8~µ7L7‡ÂÌ×éŠ*ۉíx£rQŒ§}ø¢½Æ”L˜Üp(eBŸƒ8¢¶æU†XƤÇw
+|@r¡”?…J¥ŽJUCóÈËXå€K‹8û‹–<½˜âhe%‚÷¾Xåt>x¹ ‘˜‰¹
+]åt!x}’y91€—´Óøæ(‚ƒ€ C ÁŒ/zÍ}·ñŒxÔ³«‹I`"7݈¥ØAy ‹ø§{×ˋHcy
+• ‡{8’{9_‰Fw{#B§ÂâÙFk†ÂïuN&‡¹FDÚY<«¸l7W›¥M‘ ëŽI`>Ù·Y͊y‹ÙÕøÿ‚˜äœDVf™žÓàq‚&iz£ùxKŸL£¹íCY<bYŽ pÃÙєfÅ~Ù†ùðIøƒ¸ï¡©m‘ -¢9~y塨!yÁ¢·ãD¤y£Y*_ l?˜0.è_¡šG‡:¦)¦yǁØ‘Z/9-…ú5†³­”ú4ÂøÈúhŠ˜3­£¬ö7«îȹú¡Z¢ª:Îye€¹ñŸÂ‚¢Z*Ç:¡«Ù
+ºš²©™
+stream
+€AFaTf1‹†ÃAÄn0 †B˜€[ÄÎFX 0 ‡Øx¸b Ddqy4j9‚‚†cÌFŒ"‘´Z1.ŽÌ`ð‘¬Nq&ŠKgÔ¨Ý?!HÆ#i¨æG)Jçâ
+lÂ?5ÏjuY@q –Fk’øôÊ.¢Ãj‚ê´R—j®Ûfr¤Þæ8žÊm»Í
+h.T¯óÛ6™l¡[î69ö+i W¦RÊj7†Jn9‹];75±\ô©:ñƒd¨Ú¨f_ °ÍÈF­DOEÒakâá¾Ï{¬âÝó7«}ûŽ3¥pw>„ó=p”BµÜ¼4ÖÏ×ò8}5à¤Úº^Q‡C¿”Õû\­.jgUÔØ,°¯§
+܄¹Ásâ»=o³Úâ8ȋâ'°+˜ˆ7n¸dÆ1
+òE 5ðÂ!Ç-cÃ|S ºTZÃ:
+ä.ŽÈq;Œ'Ê(„YÅÉT°À’Z>èKô ¤m´¸ÈÊêœÎýËqëì·ªrÄÐô¼s\ƛK´)ȓœÚ¨¡P¤ã*¿é3S(OÓŽ@ëTܸ6´|Ù6r€j†"È¡3­'MÑÔüÇ,ˆœÕ9AôÅP‰ËT³cPÑlEUY3iMI¢²LóVRá3EuÃ̐Kìi`#éHoZ†3M—D 腅,Z*K¿SW1%&C’Tô·S³0]p).M¸™¥(Z䮑Åf\ŒBýx1Õ1[¬˜mxTùuÄ÷µÞ‘`T;ëH7ø8oRߖ® ©Þ|AcG/>(¸ZS-‚¯¸8kiaOõٍ_ìEÃ_ڙï•)9+§ŒÆHgãØ%˃æêM=ˆæŒUà‰)9Î#—`ú#¡ŸÜy=E”¤ó#·…Òù7¨Æ÷^3§†Ë¦;©äÚB§®®º\©ªY·:ý®°
+dsŠÎžAgʾ¤2‘9½H€ccñ
+`Km I4@À£¤#ŽÇ¾J9¤Æ$ó•„MÚLH—A)ÚÔ©•ò†VFië#„–ÒR\Eøë+d¢2‰œïä“ XÄÀ:(·i‹&^4´fs”½#ù,eÜÕb2l½çã6ISYÏ~@Í×É5åÔáq
+KMÉHh‘›‘’Gòq? &ìt3`Ԙ(Õ”„ԁ­f]OÚåü݂ôb#yëBÝ4øë8¨êMRõ„4")>2äJWBxG²`8DgE¥1TšvÀ¨J׉¬““¸¿9ÖDhº54ÙÈ1ú^\©á™³N]–-N¥EH*už°JRáåB’&F”IÉ.’uP‰rúŽÔ mUɎõ*ÕɜŸ*€4C”â®Õš¾Ì*•b:ÕB/QÊÎÇ«£{žFEå׊ÞÏdÄå®u¾2×ffMT•„x4ú´XªÃ`©Üo¬Ö¥U±[ ˱*†™P
+õ½u›r{ZµmÍâóöÛë|¥
+6:_M/œ£xbf‚ôK§Ó]_§t3Öۜdæxã1^B¢ªO`pÓän­s:IçkÂéK€®µþßN¤žþ™*¬Ã3ƒ¾Wç\ûü³à'R´wûõû*
+í†?l; È %q
+ðééÙfâv„(½Ã§Qw†[§á%I‘†BÄ(Œ½
+àÜÌ$Ë#å,R,ÀP 2J ²5'’|Lõ(RˆBXŒ"N
+stream
+ÿØÿîAdobed€ÿۄ  
+
+ #"""#'''''''''' 
+!! !!''''''''''ÿÀ  "ÿÄ¢
+ 
+ s!1AQa"q2‘¡±B#ÁRÑá3bð$r‚ñ%C4S’¢²csÂ5D'“£³6TdtÃÒâ&ƒ
+„”EF¤´VÓU(òãóÄÔäôeu…•¥µÅÕåõfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø)9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúm!1AQa"q‘2¡±ðÁÑá#BRbrñ3$4C‚’S%¢c²ÂsÒ5âDƒT“
+&6E'dtU7ò£³Ã()Óã󄔤´ÄÔäôeu…•¥µÅÕåõFVfv†–¦¶ÆÖæöGWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÝÿÚ ?ïù³fÅ]›6lUÙ³fÅ]›6lUÙ³fÅ]›6lUÙ³fÅ]›
+ôSärC <öbq‘Ëw¨æÀZ~©cª@.lgIâ?´§¡ðaÔcƒ+\›óf͊»6lØ«³f͊¿ÿÐïù³fÅ]›6lUÙ³fÅ]›6lUÙ³fÅ]›6Õ5;m*Ù®.´qŽ¬ÞøœUVòöÚ¸ºGØW©?Ê£©9ÖüÙs}ÊZÛÛnŒÃü¶_øˆúI­SXºÕî Ó5m²«à¿ÇǨT¦O-›£7;”Šÿ̶6ޘˆúå«C_N0•£°¥w¥Þêڎ ±^h7*脙,¨@|LTsgú:)ÃýGA¶½å,Ac·nJ7ÿŒ‰ãþPß"ƒC½ŽùmÖxìd4~ªrRM`u¥HP
+xÒÛÏ¡m” Ä;¿ˆ~¶C¢yž×PXRek[‰€1Ç( êV¿Ý-I`)×$ÈÊßkcødRx¡LVXâÔcWP!øìܦ»îFÿ14­K]ÒîÒÛ]å-´«H^4yÜÛ—*íÝBü–›áE‰q-ò¸b6÷qIÉb‘e±G
+A*êšt#ÃŽ,*»Œ(Rà2¸bÅsqÅ*<2ŠbôÌWAÍoñ˜æ@èz†Â;ÍX«%e¼GíõOídœ ðƔ)X~Ÿ©ßéWY°™ •v`:~Ë©ëò9Ò¼½ù‡i{Â×VÒäì%ÿu9ùŸ±ôí‘{í*ÞøraéÌÃ2õÿd?hdjîÊæÅÂÎh“.èÞÞÇØ⠋_B¤ªàjàŒS8——üç©h|`“ý&Ìz,wQÿ·o—Lê:'™´½n0læ¨xá‘Ø÷ùŒ¶3ªQ!<͔¼“f͛ÿÑïù³fÅ]›6lUÙ³fÅ]›6lUÙ³e$ìSŠ¨^ÞAam%ÕÃqŽ1SâOeç9V³¬O¬]´òšF6E_þ{ᇛ<ÀuYŽ³¡DHB?l‹ý=½¾y„ pÐH
+ z@¤žÙTæ9tonjóÍ_Á0LTbJ{ãÃW"•Q‰ÜÚÛÞDa¹ŒH‡z ø©ê#}k5ݹŠ †¶”K"xŽÍíŒÒ¤ÔÊÉ¥WŠgR) ñ¦;j `÷¥wViìe‘Må¨é!¯©¼¡7u#|¸5&cL2)
+‘Ö„ÑPÇNßÊ6÷É ìN6ÛJ··w–(ÄM)äô­+â ¯zd<2¤Ó‘ã DŒ‘³ö~Æ3e ÝÛ_ÇwbâÚÙþ6Wåê*Óh
+QÔЂ;‚0˜5d}]ÝVëÈû³±î\ڕz`¤[Þ|¡æGÖ4à÷$˜[Ӕ¹l
+µ=ÁûòT’†Ã<«4&³ 0¿¯:¾¨‰@ß/!mæiæÄ¢~C‡ÿÒïù³fÅ]›6lUÙ³fÅ]›6lUØGæëÏ©yzõÆòHžŒKZU¤øi_
+õ6ºžÆQGþŽ>ÔÛü\ºa´$¨3Pzøc—-ººG%ð=F%gg¸"!öYÎäý8 ù3”£(ò©yr(•$š`•@7sOl
+÷1[©ß~ç
+o5Àµ²vÖÈîFÔ_q¬¢Ö‡"—¼’ÄฑÏÄØÙ4úïZ7݀$֝ºa(5êröÅšNfï•õُí-FíŠ-.e=Xã…Äž80ñdž¥&rzâ‚F=ð(qŠ¢•s® ª_5­…ÄÀÑøñ‹ývøŸIÁJǦŸëw—WuªË)XÏùþí~úWZƒŠ‘Æ‘ŽŠû²äz 4„ÿA¾6ǀ?i¹Õü3©ù{P.|âÚ[7¨>yÔ¼°[àˆšŽåêö2ò@p}p«M¯¦0Ó
+ÿÓïù³fÅ]›6lUÙ³fÅ]›6lUØúxí­ä¸•¸Ç—vð
+<]ÉÝי`œ—1|®7ñHjfCþÈ\.â}Ê@ß8£?ñ®<Kÿkcÿ<"ÿšq¤Z(\Ä݋ÿ1Ââ/÷âÿÁ $ƒþYm¿äDóN8Kÿkaÿ<"ÿšqTGÖbîÅÿ‚_\ƒ¼È?Ù뉉Ôt‚Ü| ‹þiǭۏ²±¯ú± ýKŠÛbú×ýþŸðCKÈXŽ,[ýUfýC)oî‡Ù•—ý]¿V_×®ÛíO!ÿdqM¢UæmÒÞv"þ bƒëg¥³¯üdhÓþ&ãúîßi‰ùœÞ²¬ӂ•0ÿI=D1ÿ­//ù4¯—I?jæ5öŽ6ÅÙ?V›Ø|R(úq#¬Ù¯Gæ|W+a8?ښgùŒ}ÁXþ9ׅ¡¼¶Ž(©2,’vj…GÆÄoBzf›ÌEaœöúÎI5ýÌòÜKÆ7”‚@ހ
+*É”y§3+ž*j{Ó rƲ3?±Ø}ÃAàAà2b=ìLû“"Ò.u,[lçz¡.»g\òå¯]²Lžž”A†Àö©ÅF
+Š:
+á< e¼‘û—ÛåZÃALùÜv”þà÷?ïÓ÷bÑ@_¶E¦»Ž™*Ìl÷¥\îߍ—Êãýøß~.!ýœxÑdþ\hw-žö?ûÓÕÛïÊôØõ©ù“’EÑ$?³Š®„çöpÐE–/õzþÏáŽíá’ÔÐþΏˮgaËjç¶,¶.{dâ-±ýŒ0‡Ë'ù1WŸÅ¦;vÃk-هÓ»,tø0òËËaHøqV?¡hÌ¥I\éZEŸ¦«¶'a£¬TøpþÞÜ ˜ª"%⸦PËÅ_ÿÕïù³fÅ]›6lUÙ³fÅ]”̨¥Ø…Ubvùyó®©õ=7êQµ&½ªuïÓP¿N$ÐHi€y—Y{ë˝EAnDEiî+Æ%ö©<Ó… ¢ÒÕ`åɀ«¿ó1ø™¾–$ã‰ޓþê³A™Æÿðá°üõ')=í܅%×RԜ,•«‚fj“s
+±abž«ÏË+ü˜ºyi“'ÂÍ<1ÂÑlUƒ'–Óù0L~^Aû92Ê;c„
+;b¬Z=ìàÈôhÇìáø‰F;‚ŽØªQ—þÎ
+ŽÉ¶ ËÅT’\P2ób®Í›6*ÿÿÖïù³fÅ]›6lUÙ³fÅ]œ‡ÍzÏ×o®o—ãŠ?ÜÚ'óx 빯ӝ͚Ÿèý&D©=×îc§PøÛè_Ç9+^ñTÿuh·¼¬(ƒýŠïôŒ„ÏFÌcª‘_ªZ¬Lܤ5i_ù'o¥Ž]KRNjԟà fzålŠCˆ‘Š1ßpª™Æ‘ŠiñÅTa\+¼œ±ôÿ¬GêÁw×’Ð}¦û#øálh]¼I뒌z°‘è¾K)’m#M22š`M/O20Û:6£}’W,`˜ùHãÄñ·§ZˆÐm€´½9cQ¶H"Œ(ª¢­;6lUÙ³fÅ]›6lUÙ³fÅ]›6lUÙ³fÅ]›6lUÿ×ïù³fÅ]›6lUÙ³a^¿©~‹Ó&M&oÝÃþ»wÿb7ÅXœõ”¸¿šJÖÚÉLq¿&jžìÛ£"à5­­$?¿”™&#ùÛsOaÐ{ Vô‹Äƒý×'›À¶þ’ýà·Ð0£qR@9I6m¼l)-º—“…îÕÅfzœNø°åW,åaV± åXг×v Â[ÙÌÒzKöTïîpeÐPwiä.ß@ðg§Ùm¬íŒŒ6Éƅ¤—+ðå­IŽ£ò*JçLÑôÁ®ØC҂*ž92µ·£lURB¶ Ê™x«³f͊»6lØ«³f͊»6lØ«³f͊»6lØ«³f͊¿ÿÐïù³fÅ]›6lUÙÎ|í«¤·o/ôkndw~¯÷SŽMµ½Et½:[ªþóìBwnŸw\ã×ln®ã¶cÉT‹›’w­îÔÿ¬ã—û„ÎÔÏÞÔW•½©y….'&Y½™º/û~Œ »›“†ºÍIíÓ#ÓÉSL­°©9ß®Y5Ɯ(q8ÒsNG
+$(RW |½¤ý’W:V—b#EÛ
+°É4‰+öp÷KÑ°ªáMªhzQf_‡:Žƒ¦zj»av‡¢…
+JäîÂÌF£lUkcUxŒv*ìÙ³b®Í›6*ìÙ³b®Í›6*ìÙ³b®Í›6*ìÙ³b®Í›6*ìÙ³b®Í›6*ÿÿÖïùüÍóD^_Ð%€IÂâõZ2êÔh⠇“m÷û#ïí“9¥X#i_¢öO¶yÛó*ãPÔ5)fwôç
+¬£Òt¦ÑÔö[2ˆßw˜êwm-Á–zG+Ý]Eº:õþÝò´­&ãV¼ñ*ö®'AEU´kOÕ¾-§i7÷÷ë§éв\KRб
+/y £qQ_é=2ÏËÖRµ£JÔk™ûÈôëìa‚!$¤×1CmYÛ
+‚ÄØok\~*ìÙ³b®Í›6*ìÙ³b®Í›6*ìÙ³b®Í›6*ìÙ³b®Í›6*ìÙ³b®Í›6*ìÙ³b¯ÿ×ïSÆ$Œ©ÜÙÏ|ÏåQ¨V‘[—OPlŸåW:1èpªü|&˜«Ì"дÿ,Y½½’òšMî.X|nßÁGa‘=CœÒœèZÍ»È[lŽ&ÒIR¸ªS¥im#‚W:>‡¥
+xà}F ĕɥ• Fت½­¸E˜4
+°É(Ë
+;vlÙ±Wf͛vlÙ±Wf͛vlÙ±Wf͛vlÙ±Wf͛vlÙ±Wf͛vlÙ±Wf͛vlÙ±Wf͛ÿÙ
+stream
+¥vt9¿R?Î|­
+¬ý•Þë÷‘UÔlñß,؏P_¬”Ô¾"²&Ÿç‘â+Ç£g¥.0 a9¡; cG˜¢À/ÌX*ÁxÄ|™dYS:â
+Àëœ9¥²aÀH6dܚ!n:`Âïù›vÌ=„¸ã!V¹ÐwÆí .g„û-BˆÔ„åè+‡¯´zmàfAAïu\À‚
+~µÿ~…ןôÿã«¿
+ð/)Àï ¦AÆ`ÇOAè
+Æ@+¸@R*aÚ1Y1p<²ÀJ(Ôöabœó«.PÚÊÉUE
+ٓ%v+{FOö4{]. îƒW2å1ºDÅö dÃ.ìÜû4hÈÖêÉV+ˆC¶dO¶XA²ÐÙlqÈÂýöì]x{Ã^{bÃlÏBl|cÃtXè˜Û<²`~Ò3{Ìæê±){lŒödÇã°Ý1ªc§pØêÕáÀ;dÚU‘ŒhS|ž"C¶I¨`O«Ú„mx장H:"iN³%퓧¢À:²öÉSY`Ïçͯ²öÉSY`Yûä©,°'.4°éÑ ÞĘ[‚÷@«h҈]ÀžÕºDô4ƒÄ¢ÏóN”HÃÏÆd·º4H²Þí]I´Y’‘․éi"Éb]g Š‘'6<g=º×ÍÖu²¹ ž“ ÀÒtô¸ÙUXS¶Í@E¡èýc ûbïB´Í˜cÁ¾U¬QƒYè[å1ÃÐX $´­òœ;ÎRÀV‰ÍaÈbOڍô&sJ§w
+°ÑkéQlÈOgù ñë7X– €úœˆ^rˆOýéɂÕúæypA‘Ÿ7˜]¼I?0ÂÇÒ#j>c¥:׎—Ê€øøHò-¯ 2hÎÛ] ¤Œtz¢Ö2L)Ë?;>ç€*o÷'„žŸ—ÅØÇëæe_€b¾âÅb,å~§®}Ç,⏖œ".¢:c´ÂN• ®kÙ0„:I¤V’LÒ
+X”­Ë.š­öÌÅ"Jà4—2v‡ifl|‡¥sJF{—x-ð\n†ÓÈ¥¨Zã¥P[8VCƒ*^1Ô؝dçI8N2\ïz4PÐ¥XyoT7aGguí¸#iWâMæAPó4p–{”{¼Ô’.ýXJsÀ<9׊òrÈ©°ÊÝR–· ¾\ÖC¬kkž BmÖàtQ¡ Ë(þÖ
+óBÅY櫯|õ•¯¾òÕWþ—}ƕÚeêƒ"ýT˜šŽ¯
+ªé¬›)ƒ7Xå¤ÔB‡á
+rª…±#XÃAíÂ&ÔbïšÜÔZì܆g_w¶ûF7ñ û"ó
+nQX¬l
+vWùBn°a!yOrĦM ˆ}\÷èì{ž-ý雖6Øm҅ݺk²ê®MöAnK_Dáò=mÚzÛ6]m°Ž·Íik¼-{Yu·9]MDûå÷)±æS…Ùºélìnu:›°[wMv¸k³ân5û“ºK¢[wuÜ-¶·™9Ç×â¹j‘!Š¹HÆüp4vµgëhñü,ž›iÓ ²Ž£ÉmP&;\µYõ5¹Ê´ê?|—ݵä „#Øn}Ì?Ǧ1›ÿë
+ÀmWéeÎÕ|]¶
+ƒ$¶[¡Ðî¥ÚH*”AÇnt ¤Û.¦}¥¡kiŸª©ã6
+eð½i¶Ûà(HÅm«œšÛàV¨†Áí65Ý^¤@Í2r¹êr ¤Û.¦feuì^ູí^°@]ڜä_îv@jvBâài0ØuýgBä»Ne~NÓ耎ÏF*T1Jwñ¢Ô*¤Û+¦feuÜBí¶Û`‰2¿uTf·VÏnuJ¡!môj=ížý²ð±Ûk…êúhF…Ô§ùàâLP‹R¯N¯™W”Òñ
+š§QðQiRÇ,”n·”¦i÷"ÓS«‹:v/·6Aºíbڜ¬Žß ÜáŽß‹”'yrü~¾îb±;!³kÛetÚ¥´Ý“ÂvM‹íN
+í¥=þi{Î:/BŒý/JÍQçEÈ´ÔQ'Eh:j:†aCÍóƒà¶aÛïtÌ4ÏKó¬”îy)¼˜0ҝ‚b²ßëøQ-5TH5ɪÍõO/|ØQæõ‚ÑíSs”ßÖ1”y¹˜Ô1”²bÇ'¹Ò0®ÁÚou>PrëA"õ`>9FÇOtˤæÃvÞêø‰n5ˆ¤$M9ˆçI…ŽCº)Á×±w:f‚ç%p+ýóí܋Rj†Ðå†ÑvÞKý,-1¤ÔqÔÇ©¼ž´hKTÊîF©_Hƒön£ä󭬘ÝîÔ
+¥Ð®>·¡ÉÂÌ6~ñ1JÍBºÍ6RINNôÛ6§(åfkğ6ÕEG]Àf«SeÝf+¹ùœœ¨ÙêT¥Ülñ¼ïÃÏ*‚âô»›GñÄ^Šg¥`'—¾3u¸I§•Ô=/É­@n7B;É­1‰Ô˜i(¾Oó1ÝÝiÈ絙‘è‘HŠÈ|pÈx³e£Ž¡à–H·!¡ÜPp E@…¢ק¿"ü@3§+z~.·R@òǤù¹ŒÇÏåւ Ղå§}¾ÔÎ`ÔÍ„Ä †ÓËdß
+­v¹¥ÒmèBmèrKÁEJüwý|q%+¤~%~?õÐWÆӣӏRî§ã¡ çé†[”útûéð´›LÍO'µ@asì4ïë4Ï ‚âe±W6ÇIóŒåð1_Yp%˜NŠ3,J½@jf
+8ÌÇMq
+%\ ¾uAÇPr+¤ÛPʞ¡äV‚äU‚ÿ®çt›¿RP㢡¿³*Ÿ+/_4^ë´Çqxnªú‰„픂—Qp
+’Ïs‘,À³y£•Œ|ØγQÊÓQÌòQH‚lgÔ«dôØd'#¡8£`â8þÄ) ¥)fý^a–œÚóXXNB½œZörJsìäTÇÎf®²ûÂq|CœR¥²“Rq2*nBBG%ÀùžÎlRwÒIlgg£¯WZ:ÉÙ؀ÙE¬Žý*ë•qt’ʤ!cé4FÑ.•h¯èi¯ÈµREú8EZ ãŽúTŽ^‘?m¬þ³foiëoí¡µb:2ÎóÚJ©Þ)}ß©ÖÈó’„
+ÃQ:Ò—(Í$©IA'·Ê´ñ!é¤ÁÙª£öN;ÌÉhƒ ¥SZԚEaqXz•6“Çy®€rÒ@÷­8Ï¡mÿÎ)çñþ6Š÷·Ñü¾Ú (¿˜°rB¼ÁóG!Þà
+e‰ï¡|@ eÅFØ?õ'Jʗøgãú ë( çÇu,Ô õÆ1³˜a‹?a¯½ý-¥¥®P~s Çß%ž¿ãL<$N8Zþ‰,ú3²ç‡¾ž³Â6ÖCŒçü~§tô’óÛªËó÷kt~†m| ¯ïG£¤ðªÃá3Ôçý³ Ø#ãŠz½Š¦øž÷¤ÑÏ“/uû÷“õøíÉùûýô[4¿oŸëŸ¿I·•…û2ªîŒUk÷ ¿a4èµÄã¹ñ7œ×õÖ}í»‡eÙ qÝj~B[™ùáùzúãÚ Óç>˜5vý9_7¢k9n}uó^Ÿº¢ï}ÊI¾mì _æ7Üٝ+ê=4góÈ<Ãús4aÒ±ÑÊoþÙíDŽÌµžßÃûRX»j‡öÛo6ëç7Êùvlë0ò÷¿ñÚkfùù‰ŽIÞ#[ž~ÿ¶_‰÷ûþ˜áù ·2:wi—5þŽÿ§û}PÝ s#Ž%Wúøñ¿ÿü÷?U›Y«y´Ì2~z¯Ø‡JË,Cƒ©´Ìúìl‡JËthøkÌÒè˜JÃlã b*Ó¡Ò2ÛóBthùkÆÒHéËrŠÕ£Ò2ûؘJˤT&cØMó ‡2rX²eŒOXÇñڐl™šeúKD%C$Ýae¹ÊˆÉ¥
+Ñа!íýÂxÈ{¸@Þ§ò^,6ܒ¦*7N¼9
+(ëN‰G E©W‹uã|Ks§ÔÆ4½²N/¤ľ¢¹1v»‘¢™3ۍ«%ڕ”Áz'E°íKiƒÙ|ÞJß³y·;é{¨Ÿ—y)·½e譔]AþÏwµdَ°­Ô
+œRlRDJäU
+p²[odé!áð4,DeœDg!§’ƶq‡RÉ«,Òö(ÔØ6îÚnàAð0lFd8]õT¢Y8„xù©Dƒ²¥Ô‡7M;Š°Éó<Ûæ¤{µrÏ°þᅥ5ãŠû䯂i0ì8çŸ_EÐW2°vÜ~„qð·ækð­£zW$Ï6ˆ—G]F°tƒEGóǼ‰ÓäŽ5z(sýPéLú$!+‚™Qño^`ùIMxF1~ ]*4 |©º&ªË³}Ÿ¥€‡å½zN'°TãZ!;–ÍÑ
+;qøT ®-|¾ó[Áÿ¨¨ÝÃLûþßÄZ•¯^ª–²|ù|²î©Ë߅Ï_+´ôß@؏çý§!gÜL+蕻<HU¾àw|¶¼èÄ!¯ }åPêñ·ÇËurâ¼nÍù-cgÇ*«vž eÇú¼çBÓßS\Çó}µù‘☘‹Ã¹.ì‡ÏÛß°óóq´õÕúÅy)ž±þ9þÞ1 J^vyÅßqɇ8qþ­¯k0xˆ¥zòø<¦µé ¥bRïéJß$¾õ`KÁD¾•+„»,˜æ+Ãëä—ç©É¬•/ïÓÎõcL]}XFèؚ9rò6‚òï3Ê6%¤üøº÷3µÃ,Ü!ÖB#˜ O§ZΙÖ`§Qö2dv<ªþs-NœF¥åBS<Žæ3eD’ÅÌ¡ïBŸ
+ê>È»¬Û(Ïïx ,1r@q4Mâ÷#g®ï‡Ü~äKÚ:6”}{wVÓfIèqq§ÕNÒ×אָb'c’_ÖSšd;™ú“;]‡›Lçª=ESv“¨vZö¸M’Ô?p§ãp“¹ï΅m“Ò~˜Évïœ?퇗ÌÇn²M*Å/›ä‹1ë¹d»Ï ç¢H+ä!u¿7Ošwmær¾Ñª¦ùtWcÚõ¢Q Ô%Oú*¦ávŠ‰¾Š UŠHUÒX<¥µÞYÕB×Ë䎊éÅS“T¸ËK/v[”oRV#~,¨ð½°®¿Úôý‡ M›‰Ÿb²0W148SÐf¨ڟ)öh?T ÍÑ»¿ÒÇd)XtiÝFZí7ȅn#Í¢Scoë¦x`Ñm¦Y´‹&ýxƒîñÀb‹µ²K<˜44G“†æhÒÈMöÒçÂ>¨€…M·vÍ3ÜƎ“½õ•Ð¸¯î”
+Xçðþ¼yFÛ"ôå2“€ÄyÉ/Dž£êÑ=›‡ïôª³GW¸ª;Œ%Ÿ|š°A’]¹²dWüÈ=ÐÍDÍ=Ð
+‘³í¹ç´:¯¡ú7¡s·wûyºmF¶’#ð•á7e‰L~$žØÕî•%7PW¾‘­t‹ /23éYRFËK),‘ƒ@»Ðøo½ß¾ÓGÿ²
+ð«?¥þdÜ~ÚqÑ©˜aâ"ÿÂÖ§W¼¦º~Øù‹#›ü'®øùÕåÛNÈQ©ïJ7Ú~OU /áÝñØ\Úü:’J'×ج!(ÜG:KfÒ!"ºüêŒ@ûk ǔž€Òqg÷ëxI@{ˆ™4E @?ÎޜtF­;iúegÚÇB£kœh*“¦¡r§º¨¯¸Nú8É<Šýmì¾)"h—´¿×ñÐÁ¬J3¸<§4£kCµÐ¤ôº»& •B£R”TŠÌ*AüQ¡CC•È©†•"Ë$ÒKø)Ž?J¢„£d¹Ÿ›„”£•ŽÈ,ŒZ£ q^÷<~%JÐLÝÇJÉ%ÀhàyÅQ"ÛÁC‡“čêSŽ «•N˜}4B€¦VÚ !h¸\è한aቀ §Ç‹Ð)3ƒ›°õ»¡4¦¤P7q²§t,ÇÚË4yæ™Ûk/Ó@¤ ãU‰§­q€CÒÔZóG¨¡Mæ@À+e6T—„¥Z4/ú§Ìø…7
+rS˜ðí¯ä”¢h¦RDN)
+ûŸ¶FBÃ!@±ù‡xevǸ_kžé9«öuT‚JÆʖ}­”VyŽ©ú¹‡ ÷v–è!<— ë¿%bÊԃJҔùôåXe ˜<MÎi8ð,®³Ö²/û¥­(käË÷43„³>FF-½}2õ¦Yõ†¶úCWêV"$"^×]-Ô@N+p)_Y½5Ë2³!Ð.ˆ‚d:¹ ì¥È쌨w=1øW³Jڗ2\ãêáìùçôá-
+Õò­ƒÕŒ²gx!WNÑ"“@®¦Èp¬dò±3Ø=‹ÜµÊ«
+4½²-w9ÛôÒ/eŽqÃÁ
+ÜQÔôÊ$Xã‰êØÀý
+ѝñ
+Öb%û7^1TÀ;óméã•Þ;KHÕÏ‘,Ô9Õv†_»›JJmºa“/µvàzu÷
+¬V«~Pr^\ÛÒ,Ã)•|“æ‹U–“(fŠ²U´)B}ðÓ.,©IRܒîM>sšÕˆ´r¼®ýøØ^w}8ôüƒÄâö\à lß8IU‹I07‡®ˆÖè£
+Iµ XEA“+i[r©’TÜô×÷Îãξ—…u¥™Ùû<÷œ¸_ºvœ:w|όÞDžPۍ³í݃&~lfm†çs1hÇÀu [¢‰›Ên>`‡Meù°ôÑݒØfm‡f´A¹¤«í0ô6(™®Êjƒ²Áª'3¤ÑFaÓ·ñ2m
+¨¹1ƒvHõ‹¶o¶:¢i+Ó샘ìÖ0¨Š’)›"Í$U”ì–æ3ª­ùLÒ=&šªeµSÛqz{°ã4É°*±,µ­¢©D8¢
+sѷєlȌuˆhÙ±ëî´m¾íD"½îÛªY˜žÉU³N];AZÌUߦØ'¦6¯Nή·Ëûù_þñ¡¬ŠŸ~:{C4£Î£³ß%?ÿLÞ\œŸ¼¹>ɉûowwröË#w{röNÁë[2‡HsM®—ä„
+
+þq޹ޜ̮Šey[.‡r[íO¯ÿyòöãùà·sïoóÛîyÆÃó4<Oýóá¨{þ“{Ñy!ý1H™pŽ\¯NfÅÎýͽ·Â­”ñ·Ý{œ±ø§ín³¨–Å„«
+(¬¥®«2|ÆzO-¾ºñ¬óõ¿)â7a$Â'ÿx(^¹?B¿Yˆ÷;9aY®Ñ!âþtöN„œçî2¼¢¨?ÕÖԛrUËôbMöËEU•ÕÝT ŽÌæ¼I*.|ÃJÿ9…åužÃiÉý§®àqòv]lŠêà]0
+»îƒrgœÐ£ñÌÇ?֋Ù{ðº:x·I^žr™3iG}×fÌ÷åÝý\m±?Xha âÆF§|ïäØ
+K±,b°š‡`]ŸË±`¹õg¤ïÀpFiYmÈïå¾ì}ÜP}k~\2ôi]õb_ìȪܮ
+r3ûüáâæt*G֗0ã9²"挭ù¡¡a¹û!¸ò©7Z
+âˆóÓôá{±‹™³¹Â—ÃmâQ…Æ6&æx~<«›/‹uù |ªñ~.ýÿžì+ÈìaáօvMƒö†¬õ@|b­ùNùãnÀ_ùbªbæz¤í±žS¯ô\E”®'îrq¨bVXêŽ^÷ Ǒil,ÀN7^û³}±ÌHµÝ”SSãô Ãí*Å»²X¯È—ru¸•ˆ—4†d`4†4AºÆ
+ŠŠ”UÀҗ››S²8Úø¥t¿œˆK=éì¹ÆXPJÛÑhG|ÛïJ@¨ómuØ-öˆ{”†ÕþâH )SJE仟ÉäãåŔ¿ÂÐN·
+¡hŽ×#hŠçȪŠê.îAp˜
+É3Ð3“þ
+üÅΑ åº£À¬;!™ÃŠñ¢c×{ۀ–F‡©žöWDi¹ÆȀ<F‡õÑõ,`•0DŽF3±F~0Dò==¼OòÓ­gTØØ6³bleÇP¸Š4_*‰,åüâò×ð2yÿ~* êóXÚ¯vaðÀ3†¬ŸL²ÉeñïGN=M ·63"g½4¡rP8¢9ƒŸQ¼r$&ù²>tČoÌëAÑöÍ]÷M)þW $ðœµÔÌ^y„Ò@ØC’òÌØy‰ Mã¸(†’á¥ü|qNÈvG৳—”E‡i ôÀrsäȟ[âK`?’UáàzO¶yØmWËYn«Ûò.éH$V0 i¢ÛÀ¸äۑ,ªÕd‰<éã]ü•‘â1–­šÓº\ôêPk¬qQ¹/Ü6‡¦œÑn婉%¤#†@cÈÉèøUÖ¢•œt9÷%6•K°û38“€]¶€§N™‚¾_­‹€°,§qzµ¤Ãu& ^t
+«*«»©4(¯ZÖۉql˜âÍðÏw;˜ÅˆùŒrù?=*{Âq<¥…€Y@èy~öfþ·ÜÝb_ÔÝäÄۀ(
+»M’Íkw@&ÙÆ3ÃFî:Šw)ÍÃͱäÀš±œÑÂ0§
+F×'‡Åä`(CÁähcÆcÁzÑüù!„Âî&iíX(J$ɕ EÐLIÙŤP,|g CÑC±eA) ëH,µ1’\t›6ÞTЃx“ê#‘æºÍnçT‡öðŸ?ÉûtÿíÿA¶X=P lªF(qUa(â‰]ü½Ãwp/õQ‰‘Ž8›íÂãE‹·ü`º%–(ä•Ûå
+èãߊ’éË}Q‘íC±[ŠP,²?e®;™™}wú~ù°=¥¢‘löýø"´®˜WØlWE:ü#)8É2à)÷d]Ã9€dðH´yMifU&rÞ«SàOnÕ*ÞØU_gó׫¡ù r›\€õ _[íç·»ÖR„cÎ/§©ž¥·(XDîÄJ¼âSx¾øv
+\Ð
+³Üî¦(
+»î=žîm+GŠë©x„£ íŽ=6r§‰ÂyÌëÍ·ÒÍ͇$IEc}S5"3 Zž¶ÓÕcµöÏbò<‡6ÈÈ9  ä”óÌQ4>®6ʍ\×r£FžkLkN{ì·Øx€yÜärµ‰¥A¿Ê¥o=R“ðiïi·]˜ªaZÒpÛ$»ñ>¼
+hk×<Ãã:o0+́òÌ!JT6™]h³–w2c¾Ü¿T:¹vØ u¨Éò(g±É¨TþUÞ½úŽ¶€™âé~‚¦Ïðëš'î˜|µÜ¿Üðõf6ϟì)£,ŸQ†¦—ŒÊL7½<wÏpSHï'»é[’µÖ°GšޜN=™­a#Cß&Ü·|=î_gW‡ínqªaïIs;?§ÐÊV›YX„€]¹DEéÄd±vÊuÆmZJóéç€!lb¸Â„SG“ì32Ü –•6¼+ðÝ0_ÏòÕ:½ú _ØY–ò£Õôóæy)e €T<ÃÍÔ­Ì҆o~¢Ôs|“F
+;C%»)œ+jAÿ‰ñ±¢ÿ£¾Ú–Ǎèì? *•ŠœµhâÌ>e{׳žK­œšJ</4Eۊ%Ò%Qöx¾>
+ÿ|•U9ΫrV”k¾á$ ”y/7P;Báp™>T}ÄÍì²½Oî<,äc“7P×VȀ5;iaí3–.å ïñ¬s†HÔ}|Ž<“ö7@_ðEk¬À¯ª§5º[UKč•6tÖñÒ²fîI’(fÇQW̍+†g€âç«¢.†
+/8¸Š½àÁéöÇÄø~@º)¼]ß÷­U
+hu·tVeô\Ø[é|‡¯sïõŠ&U¸tWºÀwÑ^êœvµZfe¾b@SŶá@#„Çù»Óޚb úìÊIµ|Z̋5‚‘õ]L&h²È`ú PHÊÝí´;Åæp|4B“óÁYsNyÿÜ"­?n3¨ë4ÆÇË+4}*rôr2…ñô¶ªj[;ê)L_j—¾­‰:ž^ŸNϏOÁ”£?‘ctևX"틻ê¦ßÎó§!dRTéÐÔIjš΃„»WƒüÌÕðñ×y9C§á| îŠRw“j÷€ûR¢³Íºº% ¦x?q9ö‹!{#Ìù¢ÈëΌõJ–´X–þ®ëf‰|èRX$jÚanï’(ðFíxr3:›¯ó#–h¥Åè![5x4g‹fHœ¦½Önƒ™Î–-ŸY:ÛÚ1˜s,]¦FF;‘Æ݈C”+>æÏ†Å² HжÒõbÙ{7æ™õõhlÓAžJ[vöT´ûտז)<T)l'”Ý›”Ù­7+wSfë–rÕ%'·P÷ßY>HÎ)Ì)R¨¢°/J®zÍ?}]ÞV‹êxªim–p͜^ ²[݃A„¹*÷îû2Ÿ‡ùa¯;Ÿ»ùIŸß1:ÇÇè}Tå
+÷Ëó÷ŸÜ&îz£mþ.ғíÞSSÎчî¯Á£èxkÀ}Ç\NO?¡l±Ïc Ñ'Ï»Ï+VëyUZíXožžŲ(‡Lº–,¢AjyZ]sÞ¼}j…Ù„]ksP7sÎÉMªhEÕÒýwƒ~Öo½&**¨Vô­‚"bÎã!N˜oÕ}çõ÷y¨¨7Óü˜Õa“kE›|þ}÷qÀø­ 1þeàKdðÄ\[i‡¹V
+Üa쑦ýR‡ÂäR}œ^ºMÖUØÅwîjýä— )’)éKÕçÐÖ¬5‚лjk”Lú²Ûl5P+nH±?Dü:Åè~N.dëع´l–:ÚkÀ›¢æ&¡dÄ3CÖGwcªy¾ñD\¢ØñŠ7ÿÌ}#žôËh›èosMæ·¹oŸÃmқ绻ytMå›$ßÍ!™aˆKÂ<ӗÕÖr{Ö6°A$3ãˆÁ#%ª ÏX ~#®1ݖêݛ
+fžaí#ÂKÃ]dÁ^=×i7°yû…Â_în>LgnÝÚ§q윱6¬Õó~Á;KZ~Ú_ù›Ñß]ÑÀ¨Ã•Z—åŸÞuãŲŸ`À’C/(y"5^F ÉA;ø»‹Tée|¨èïœØìÛgD}0ï¬Ð·ÑþÔ *ߎzÑq¢D¯ü;c
+Ń6‰ø7k©4ãCµø¤8è‚y¯”Ù÷wÁµ}/þßՄ¨0T¦@ 
+ å4h6û©‹ˆÓo푫èH/ã70Í>%:=Ò0±hýõ•œƒ ù—âvP*‚fœÄͨ󉾸€Y¬2œ’·oÂ>ôHàM¹ÆÄMçf¢0ÐníwÇ2H€7FaöãP¥®ÌwþV*2
+Á,ÉXÛµŽÎæ~·QÎâlõ¾´Sà­â´íëŒi¢Xß=\FÑf5ä[ÿS§ H€jç"­÷Æ Kÿ{æ÷·2—qdÿ­Œ ÞC{À;ߌ~>[_Iª01C£äéΩ¢‰À ¹½m„úß46ÿù
+jíô¾|‡“I(+Ó‰3…"ЮkM~ù:›¯ëÕüvSW«!@rnDÓÝDbþ0¶¢)hSë+tý×Ñå¬(ëI5+ÐU=(’”‰D
+BùB×C†¤*ái ¿{Öb­ªÔaKS0:ü ¥
+üI搵C¶‡u6°KÂ>,3¶PÃR£,Ô­%´Q¶ cÍéAkS™ÈȞµÌ»¤=…äIH…{V
+r£ZJŒ£î3ǯS‚î×èä‚YÝsÒj¦€´™ZS¤@üíîë%8’é•ñ÷èï0ìtE%ïZÔ42ÐÏè !¤N´hƒˆzm{HCBÊÍè†m…Ê ›yÓ£´mIC–vîñn‹è V
+£–óM_ݪԹr}Z p/ï‹×ò/k”We=,°)Ց;ó‘  ì·Í¼¼GO«j¶Ék4_>­úµA¥‹ÓlqA£#˜rw]í˜#‚+2°®$÷þ›Šn¸ŠBS_‡l¹>Fë§"ŸßÍó¬žWåÁtá ̬u€=š¹4„º‘ ÈêͪX£‡bUÌÇ,–D2ÂOµÆs“ííVZonÿY@ië
+ ª7jz®Ÿ’ ?c¶Ý"CzÓÊoº‘ïVitÔÅV1N·70‰dhÝÃé¯Ëéãý—ŸOïßx¡!ÖÖp_Oò¸ÒfìÛ;Ìî7týáãLJßN¿ÜÿëôøõéׯO/*´YÓÑuÀãH*Þ¡ý_NêǯŸß}÷’‚=`æÀµ'ÉÂ&ûPÞ°Æ(I‰Èþøðó?^–9e¦Ç,áÉ8D§íïOŸŸN_žî?8=|zz<½ýpÿ‹ËœÿñA°ãåašáLz“2-+ßþ¸ûíô×]<ÑçóÏK§ÿð¿9—
+ÿŒ‹o’»J?™DÙ×(5Ðã©vjcÁW±yù¨ÚÄ}¤ö8âÂ!únƒ$²ATbiêßÁšÏ©)®Äý&åЛ2 o•*‚Z:t1]ɕ=¯7F5ˆ–§f™¼S¶}¯I½«uOr D³
+q¬gûI¤‚2æ³H‰2ߌ’7,X(c\ay¹öŒ¬äÊ/:(*õ‰Ù§¯-æ
+³…×6㑚Å–Ín„sU|mX°xi×ï¾ 7Ûí´Kïæµõø¼4yû¿Ò,Æøí~ûËzŒØ¥6ÀÄ.<5n¶êE)µfÛOê  W×ýpßÞlË´Aej¯íolՙ­"ûB$dSó=
+7›ìFéöêCW-'’4q#„Îo£² Œ •ÕbÜæ^ÝF„89’n꺩SkÛ´.ø-¡„»±ðŞ+kUYÊ•(Ûéê7QJµA¢³m†ƒ7¯Ë̅Ëâ¡g@$D²Ç^dÏáÆښìT£&“àêjáB7ç–"ªç–’7¿ÁŒ9X
+¶¼úòˤZ2v[ísó&EQ°m(/ëWÂ\-…|YžfHüâ[x£½0fG“UTÉ¬"=±ôՒF›å0”&\’vكþ+óŽ»g‹:ÇhbmÊÇM÷
+«3B-ôD
+G¡«ý€³áàùª=Ϥ±¸óòÚ¼ªhfˆUAuÈÜg÷Á£û’‹x¬XEòZÖÖܵ÷kÄlË@ƒªì>àâ;6#t.¦ëÛÿo¼ZWãJŽðÌ;œŸ#ƒŽNß»a³à[‹ž$?V!ȲƫdÆ2’7&oŸê®KWŸac Sê>uëªú¾Âœ}ö~”Ëp?ŽêbÃs—†‹£œ½ö&ÏVùšÙWzì‚[_âb(3N¥‚ë…ìWPCÖ«D\Îx
+ œôî±êŠù.κÄ["òD$Yp±å¾tÂa›(¼­Áø³- ÀÃ÷΅g›Á½3E-{¶†ÍnS‘e0½vÖ¤*Æ¢Cáù8ľâYÒèo~#tÈp;«‡
+±‡"ôƒzUšù>³žiÒ¡A³n³æ4Ąeƒœ4ك´YµA%˜¨¸UŠ–£Z¬|˜õžEuÖoc‚¬«´k¡|)lœ|- 7•Ï*ô#.Võ˜d䢐£ò|3•Çg…IБXžÄ¤©cð\Ž)±²Ìh@Ü'sa«‚´`䡉â=$EÛ-âHಬITE[·š¬ý¥dþâõL-Æp-ÙXê|V™—\â4ìHYVÀªcG&0_­ÌMKi¶wԏÃëÐl—®¡BÒrÒñ¬8ç`ÄÒqúûÞE‰™ÏË8ŠÃ&KÁ­enß©BÛbŽj{à&T;Œ^ÄÒ¹‘cB#ˆé®4>uLÉ®U‰Äe±ÿdv˜Õ¢XÆGãÙľQòBÕÞÍÑÞÚ8W|Èόm
+†NpËÎH#9iš"#y´{ꗬœ–5Ç2ÌìØÉsÛ1Ñ\`„!rF²"g=jýþuymÀXtt‚oü #6ïߖ¾{Z†—¬H¡vâÔI’í*HËI¢$˜Žs-I %qé@F ¨hàr¹OOÎá{›Â3›,ÌB‚ÕœËÎYqÏÖ'*Ým"—®r…öÈ‘žœó4DÍj—ÖîÂ晆-7v{Çû¡ÙãrÄQ¯D
+zß¹\æY+N4Í+ÑjJ™9.<«lÖI흸CÌ0
+BÀ}ÖrFb(±æ‘ù蹤³ŒF¥VùGAp¿t’U… I^-,èZ™y§¨™2pÜ"{yŒ®¬ü,üÀžÁ‘ê2v§¤:ÈgÎ0£f$²XôŠ™.ïyÓ<
+ÓÕÓØ$”ïÖk眡®X4 èPy¼d–mó…>ÈO-¿ÚöQs€ãC8Šƒ¼aìA³BŒ'²ó¾õ‰×Y
+oDJ\B
+rMM¦ÖÐãÝfÿBXž[µŒ»™' 9#Z¦\tÛv
+æº?{|þ¶v…·Kr†È%Ý` [}q¢Eß[¤i }ëŽ ®Ígok_0±™¿>êD%{æú‰:¾/2¡¢`ô3çÏÞÏ]؏ïv¤Sá\Y·ÖC²í8¼øɹȋ?{( ýÆLõßã'YkCãx]ZSû•*¢œËD
+MŒgaW­V^ísHõÁE»Ä÷#
+‘ÍCõŽšœ¡8ʒ~@‘<‘Á,6ñÇ5Á.üb!°¦ç†Ôw‰n¨>™[ )6¨øÒý,ð$—`øí—é¢Ô¿†íýçY~_Ê/ˆKßÀwž‹ ä+€Š¨[ƒ1eÁå—\¯¿ðbY
+[&SùSû*â免Ð?6×ڙþ4½|šnOwÓÍÓôåáééþƒ\8ÜM_¦›Ãáá*·ä`·ß¦w7Çúçý‡Ãÿ¦Û¹ýß ™Ëöîqúzóøéîëôáæn|¼k•G¤¤³Ta(mñš™–FQ>4ú±ÉH£13”‹ƒ à)À~ ñ”¥ò—ÊsÚí’*±à±­ OrH±Ê@)B©\²jkt†ä*Ç>lœâ×NMõ
+stream
+%!FontType1-1.0: BPIPOA+MSTT31c4f9 1
+13 dict begin
+/FontName /BPIPOA+MSTT31c4f9 def
+/FontType 1 def
+/FontBBox {-94 -431 2048 1851} readonly def
+/FontMatrix [0.00049 0 0 0.00049 0 0] readonly def
+/PaintType 0 def
+/FontInfo 12 dict dup begin
+/BaseFontName (MSTT31c4f9) def
+end def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /G00 put
+dup 1 /G01 put
+dup 2 /G02 put
+dup 3 /G03 put
+dup 4 /G04 put
+dup 5 /G05 put
+dup 6 /G06 put
+dup 7 /G07 put
+dup 8 /G08 put
+dup 9 /G09 put
+dup 10 /G0A put
+dup 11 /G0B put
+dup 12 /G0C put
+dup 13 /G0D put
+dup 14 /G0E put
+dup 15 /G0F put
+dup 16 /G10 put
+dup 17 /G11 put
+dup 18 /G12 put
+dup 19 /G13 put
+dup 20 /G14 put
+dup 21 /G15 put
+dup 22 /G16 put
+dup 23 /G17 put
+dup 24 /G18 put
+dup 25 /G19 put
+dup 26 /G1A put
+dup 27 /G1B put
+dup 28 /G1C put
+dup 29 /G1D put
+dup 30 /G1E put
+dup 31 /G1F put
+dup 32 /G20 put
+dup 33 /G21 put
+dup 34 /G22 put
+dup 35 /G23 put
+dup 36 /G24 put
+dup 37 /G25 put
+dup 38 /G26 put
+dup 39 /G27 put
+dup 40 /G28 put
+dup 41 /G29 put
+dup 42 /G2A put
+dup 43 /G2B put
+dup 44 /G2C put
+dup 45 /G2D put
+dup 46 /G2E put
+dup 47 /G2F put
+dup 48 /G30 put
+dup 49 /G31 put
+dup 50 /G32 put
+dup 51 /G33 put
+dup 52 /G34 put
+dup 53 /G35 put
+dup 54 /G36 put
+dup 55 /G37 put
+dup 56 /G38 put
+dup 57 /G39 put
+dup 58 /G3A put
+dup 59 /G3B put
+dup 60 /G3C put
+dup 61 /G3D put
+dup 62 /G3E put
+dup 63 /G3F put
+dup 64 /G40 put
+dup 65 /G41 put
+dup 66 /G42 put
+dup 67 /G43 put
+dup 68 /G44 put
+dup 69 /G45 put
+dup 70 /G46 put
+dup 71 /G47 put
+dup 72 /G48 put
+dup 73 /G49 put
+dup 74 /G4A put
+dup 75 /G4B put
+dup 76 /G4C put
+dup 77 /G4D put
+dup 78 /G4E put
+dup 79 /G4F put
+dup 80 /G50 put
+dup 81 /G51 put
+dup 82 /G52 put
+dup 83 /G53 put
+dup 84 /G54 put
+dup 85 /G55 put
+dup 86 /G56 put
+dup 87 /G57 put
+dup 88 /G58 put
+dup 89 /G59 put
+dup 90 /G5A put
+dup 91 /G5B put
+dup 92 /G5C put
+dup 93 /G5D put
+dup 94 /G5E put
+dup 95 /G5F put
+dup 96 /G60 put
+dup 97 /G61 put
+dup 98 /G62 put
+dup 99 /G63 put
+dup 100 /G64 put
+dup 101 /G65 put
+dup 102 /G66 put
+dup 103 /G67 put
+dup 104 /G68 put
+dup 105 /G69 put
+dup 106 /G6A put
+dup 107 /G6B put
+dup 108 /G6C put
+dup 109 /G6D put
+dup 110 /G6E put
+dup 111 /G6F put
+dup 112 /G70 put
+dup 113 /G71 put
+dup 114 /G72 put
+dup 115 /G73 put
+dup 116 /G74 put
+dup 117 /G75 put
+dup 118 /G76 put
+dup 119 /G77 put
+dup 120 /G78 put
+dup 121 /G79 put
+dup 122 /G7A put
+dup 123 /G7B put
+dup 124 /G7C put
+dup 125 /G7D put
+dup 126 /G7E put
+dup 127 /G7F put
+dup 128 /G80 put
+dup 129 /G81 put
+dup 130 /G82 put
+dup 131 /G83 put
+dup 132 /G84 put
+dup 133 /G85 put
+dup 134 /G86 put
+dup 135 /G87 put
+dup 136 /G88 put
+dup 137 /G89 put
+dup 138 /G8A put
+dup 139 /G8B put
+dup 140 /G8C put
+dup 141 /G8D put
+dup 142 /G8E put
+dup 143 /G8F put
+dup 144 /G90 put
+dup 145 /G91 put
+dup 146 /G92 put
+dup 147 /G93 put
+dup 148 /G94 put
+dup 149 /G95 put
+dup 150 /G96 put
+dup 151 /G97 put
+dup 152 /G98 put
+dup 153 /G99 put
+dup 154 /G9A put
+dup 155 /G9B put
+dup 156 /G9C put
+dup 157 /G9D put
+dup 158 /G9E put
+dup 159 /G9F put
+dup 160 /GA0 put
+dup 161 /GA1 put
+dup 162 /GA2 put
+dup 163 /GA3 put
+dup 164 /GA4 put
+dup 165 /GA5 put
+dup 166 /GA6 put
+dup 167 /GA7 put
+dup 168 /GA8 put
+dup 169 /GA9 put
+dup 170 /GAA put
+dup 171 /GAB put
+dup 172 /GAC put
+dup 173 /GAD put
+dup 174 /GAE put
+dup 175 /GAF put
+dup 176 /GB0 put
+dup 177 /GB1 put
+dup 178 /GB2 put
+dup 179 /GB3 put
+dup 180 /GB4 put
+dup 181 /GB5 put
+dup 182 /GB6 put
+dup 183 /GB7 put
+dup 184 /GB8 put
+dup 185 /GB9 put
+dup 186 /GBA put
+dup 187 /GBB put
+dup 188 /GBC put
+dup 189 /GBD put
+dup 190 /GBE put
+dup 191 /GBF put
+dup 192 /GC0 put
+dup 193 /GC1 put
+dup 194 /GC2 put
+dup 195 /GC3 put
+dup 196 /GC4 put
+dup 197 /GC5 put
+dup 198 /GC6 put
+dup 199 /GC7 put
+dup 200 /GC8 put
+dup 201 /GC9 put
+dup 202 /GCA put
+dup 203 /GCB put
+dup 204 /GCC put
+dup 205 /GCD put
+dup 206 /GCE put
+dup 207 /GCF put
+dup 208 /GD0 put
+dup 209 /GD1 put
+dup 210 /GD2 put
+dup 211 /GD3 put
+dup 212 /GD4 put
+dup 213 /GD5 put
+dup 214 /GD6 put
+dup 215 /GD7 put
+dup 216 /GD8 put
+dup 217 /GD9 put
+dup 218 /GDA put
+dup 219 /GDB put
+dup 220 /GDC put
+dup 221 /GDD put
+dup 222 /GDE put
+dup 223 /GDF put
+dup 224 /GE0 put
+dup 225 /GE1 put
+dup 226 /GE2 put
+dup 227 /GE3 put
+dup 228 /GE4 put
+dup 229 /GE5 put
+dup 230 /GE6 put
+dup 231 /GE7 put
+dup 232 /GE8 put
+dup 233 /GE9 put
+dup 234 /GEA put
+dup 235 /GEB put
+dup 236 /GEC put
+dup 237 /GED put
+dup 238 /GEE put
+dup 239 /GEF put
+dup 240 /GF0 put
+dup 241 /GF1 put
+dup 242 /GF2 put
+dup 243 /GF3 put
+dup 244 /GF4 put
+dup 245 /GF5 put
+dup 246 /GF6 put
+dup 247 /GF7 put
+dup 248 /GF8 put
+dup 249 /GF9 put
+dup 250 /GFA put
+dup 251 /GFB put
+dup 252 /GFC put
+dup 253 /GFD put
+dup 254 /GFE put
+dup 255 /GFF put
+readonly def
+currentdict end
+currentfile eexec
+ʬ۞¤Œsµlû£TU®ä4WF©®¤"„”3œ@]®EIk±ÑX ÿ\6@2ÎÄSãF{°a¹ñ¢¿nIHJL¹GA®ŠH±£@¿ÂVàƆxeµQ]B„>U‰»Ÿ”:Ëöp„‹ÑÀ=€Ä›ˆÍæº4¤ÈÓòáÜJ&áÁ+³[¤´á„SÍS¦n
+dba¬‚Èâ[!¶Š­.Y /@¥Å?p#·NëöÕeÑ9í„8€·£"]yN‡ä_傜ä¦V¦ô9¬N–°†ãª+¿5ü–4VÃ…#[ (·×)çüîW*¢)q…ô—Û<}ÙÕ°¸^…¯m5~Šöµã§jn(‡ùN}7ÍYâtZ•8¦Ë$x_t¢ÔàŒ¦ÖÂ³ó —±JÛ¬# ”ƒ è¼´ê´¿aZûýҕÑû= \/Ӓ(º7HiÃÔÚÆÕh¤prÒi`®ˆæÈú³®•>Md‹ UË{ ݜƒþ¿©x¦
+­ !ɐ+Þjü)/Ы¦†ºG_æíÖ¦)ˆôÿµ[‰]½Q£:à½|¾zțMlØ6(¨ž×¼F©%nsTY›:§bØn·ƒjÿtÑÂe–ô¤ ÈØP¬0Kñ£ññoPãÌUhWÞ£­lD‘[x×ÑXɲi…ò²,[‚’Ê=ZºŸ3
+äm"‰¨Ò¿ÖNQ*W€Ò !\ÁGê`ÒzŽNxko'Š±tEi·Ž3Œ`˜±Ç“þî75ˆ•6y‚EĊqYÑvØK st‡WìK0Ñïa„Éã^1±)älžfFq¦'‹
+<½…²hQ‡`]âÀ›žj^ן$ïMÂíòÄÃq°êÖüæ²Op¾hŠàf³à©Øò€Ò+H‡Oúñ4LGJ?%D‚µ|!ûRå[ܦ­Mç£,.“k§zh+HB-ÖdòÒ@àhaeŠåºÍ%þ*¼®èA73…É~ÄÍ
+÷pÊnÿø˜…²¸y&*¯žÄxy—úSåQÆZx <ŒÿI
+ê–ýÃPs›ÝF‚³BƒšÛO³Øät7Ì^Ñôÿ_3©~£ä"wšÕ\ú$`?'!ïç`™Ú*R¡ss$'¤Gèd‡ºT;a ¾Y ·§Š·Âɬ¥
+0000000000 65535 f
+0000039559 00000 n
+0000039840 00000 n
+0000063532 00000 n
+0000063554 00000 n
+0000063662 00000 n
+0000063765 00000 n
+0000064863 00000 n
+0000065102 00000 n
+0000071767 00000 n
+0000073332 00000 n
+0000073439 00000 n
+0000073664 00000 n
/roboti/istrobot/laserus/DOC/Datasheets/SE 1200 Series Scan Engine Integration Guide.pdf
0,0 → 1,36988
+%âãÏÓ
+0000000016 00000 n
+0000002715 00000 n
+0000002896 00000 n
+0000003050 00000 n
+0000003083 00000 n
+0000003140 00000 n
+0000004801 00000 n
+0000004963 00000 n
+0000005033 00000 n
+0000005129 00000 n
+0000005222 00000 n
+0000005335 00000 n
+0000005509 00000 n
+0000005695 00000 n
+0000005791 00000 n
+0000005894 00000 n
+0000006079 00000 n
+0000006174 00000 n
+0000006290 00000 n
+0000006478 00000 n
+0000006667 00000 n
+0000006758 00000 n
+0000006851 00000 n
+0000007037 00000 n
+0000007132 00000 n
+0000007248 00000 n
+0000007435 00000 n
+0000007622 00000 n
+0000007711 00000 n
+0000007803 00000 n
+0000007991 00000 n
+0000008086 00000 n
+0000008201 00000 n
+0000008388 00000 n
+0000008578 00000 n
+0000008667 00000 n
+0000008760 00000 n
+0000008947 00000 n
+0000009042 00000 n
+0000009158 00000 n
+0000009346 00000 n
+0000009537 00000 n
+0000009627 00000 n
+0000009719 00000 n
+0000009907 00000 n
+0000010002 00000 n
+0000010117 00000 n
+0000010275 00000 n
+0000010446 00000 n
+0000010536 00000 n
+0000010628 00000 n
+0000010816 00000 n
+0000010911 00000 n
+0000011026 00000 n
+0000011184 00000 n
+0000011355 00000 n
+0000011444 00000 n
+0000011535 00000 n
+0000011705 00000 n
+0000011800 00000 n
+0000011914 00000 n
+0000012072 00000 n
+0000012244 00000 n
+0000012334 00000 n
+0000012426 00000 n
+0000012596 00000 n
+0000012692 00000 n
+0000012834 00000 n
+0000013006 00000 n
+0000013113 00000 n
+0000013224 00000 n
+0000013337 00000 n
+0000013491 00000 n
+0000013618 00000 n
+0000013726 00000 n
+0000013832 00000 n
+0000013947 00000 n
+0000014067 00000 n
+0000014185 00000 n
+0000014315 00000 n
+0000014427 00000 n
+0000014589 00000 n
+0000014718 00000 n
+0000014800 00000 n
+0000014912 00000 n
+0000015024 00000 n
+0000015188 00000 n
+0000015283 00000 n
+0000015390 00000 n
+0000015558 00000 n
+0000015642 00000 n
+0000015737 00000 n
+0000015832 00000 n
+0000015998 00000 n
+0000016123 00000 n
+0000016217 00000 n
+0000016340 00000 n
+0000016600 00000 n
+0000016658 00000 n
+0000017721 00000 n
+0000017921 00000 n
+0000018127 00000 n
+0000018892 00000 n
+0000021219 00000 n
+0000021296 00000 n
+0000022086 00000 n
+0000022226 00000 n
+0000022367 00000 n
+0000022627 00000 n
+0000036905 00000 n
+0000040454 00000 n
+0000040834 00000 n
+0000041222 00000 n
+0000041604 00000 n
+0000041995 00000 n
+0000003183 00000 n
+0000004777 00000 n
+stream
+iŸmZñ}؂€ZPÜA>¹{ÿùµ¾JÇZ]îä«K¢7›Ú(.Õ
+Ër~OÒb8§öl<zh‰W7%ì*:Åû¢ÖZ’ŒàsÒ_è`Bz0È4Šü\”å.0|x
+stream
+-ëýÁõG®è=)‹h²gœ¼¡uÏÀ¸FA 38Y4æc¨¿pT[½ ¿îÁœšëÞZ®<ZßëŽ1;eÔºQ܃ò¾7šyUsþ.‰ Vf2®6VmÌQ‰ èò6í‹"¾ÐH‰Ó/YdñU(°–­±$_0.-Œ
+/U…Ƭeéрàö4±Ûò£ºX«OÝ<¾rñ¤·`Sz¿{ô'u‹"ÄÉ´+!×pL‰ Þ°õFý¦â¦¥+¢DÜ}KàâàÇ'ªaã{ªr¦8JsâMʳP(Ú8R…Á‚•P€*ŸU ÷ԓ+àD55/°¿:ϐ<å‚á2…þZÖ;¿ÉÜx?ÄÅ@>ëô:a®ììÌ4¿l?O.I&y™®I)ÙÉrúØõ>À ?­>ëÄÅñÚ6#'ÆÿOýÿoáVK‹`ì0
+Ë!Q%J÷¤…H(3hø零´þó»’¾' ŠÑþè8ld׬Z=’ÎûEóÈoN•ùï髞y•6
+.3W”±ôí9ÅíµENÇf‚¯F²»%&‰¶iF.7‚†ãûˆi ɟ¾ß^ûÓþ!¹îzƺ Ü%þ
+ÕF—ùˆàÀǛºÎo´á矏åJü#ÒKFgwïùJ$&"}UcÔ}]__TíŽ@âo´y´¾ÌïO¡á™;$
+)atù®C|ó Ô[š£øɳ
+]Ø?>À¹jŠ²ôêñ՘¯#o´þOóyÎñ\Gá!¢»“Ev|F¨ýP4Y±'FR”Úè¹@‘9WÄmô"é[ów–œ$rRVz¿ñm„¾œ7â”è9…•ÖaùA".>⋉œ
+ùc­IÕQÛL˜Ù{”/ÿŸ|‘k(¤ÿµëªÇ š:"ëÿ@B¼Ùå#.¹ù¼ªÒ(h{¦Ð~8bâÒÏëÈÝ8«æÿµ”ªŸ¢Àêçrw(©ˆ/»u3´é_zøm¸Ì¡Ôº5 Èê‹(ütánØí},¢®¡bçNöf‡5/žƒ«Öu§ðnã¾ª£ò
+õ·Æ¡-™
+#Á³åLuõ\+Ëa§Åq|?KŽJhèU:ö¬o5qݞÙß)|,ˆ2‚¹Ü‡’9$E<Ÿ‚Q$¦2*p”b ü²bæø/>9ÂT]ƒx
+ԕ;蘈Øx>NLwžBû
+¾³Ò'à û-(ÛúªÌusCƒ%äÌ%jà-BÍ"¦·BŅÇLëӊÑĒ•}9ą‚ :íí1æ3rF‰É !Ÿs“NÏà×ûâٔÂÂõamx—ÑIñ2¸–µ{ŽûìèA™e ÖPåryyÅÈÈPʘ§º ˜}H3ƒq| Jz‘vNšÞ
+Ö'¯|¹o%ñxáÅø|“NÖÕNVÐïH‡å¸Çó®EG*Õ£¦,ƒõ·Ü—³³«@P—ú^5À~kÖÀ
+ˆ†2(ƌ58©®›ÃÃÕßë *qs²›^¶Ü²(aílQöû’¬»žPL/xLg˪UçM0W§@AÝÁ”ýŠßRñQG#w¢¸Ö¶p!RMP\Oo3TB1dqÙҏ1à P¾&äñ9\¯ðe¾<ö"8„|°·d wôŸ9òI?Iôû[!Ò c (¥cî‡EßÃgp±—¾[Ê8?'¨ä.Š…‘^$ƞi
+stream
+g"ÝLð3×/nå\öwÁÊ[E!}, ´“nŒÙù€pF n% ­\ÛnN„SÕmVmß3ÎE¢6x ‚1+e¶»
+`8ÈùfN`¦A))uãä…(±Þáޒî(ü2i~—xP½¸~ÜsõX‰CDŒÏ®QHÅ5ÇVm
+çBÝe&e^Qœï•îâ|Ú¹ýfuÓNˆƒCU&Ç
+Æü^öŒNÏMæ P®UŠ~ö>
+%‡i¹ö“#FÌêVfýýÕÉ‘E[#›¨§?h¶R‡Ä¤=T[›©:9ò¶_dØç ÄŽÒ…ÓÓVþ7¬’³ÅÉC0õÚ
+stream
+ð*i_Io­á•¬GxÞÉ ¸Å^·´ÎòÑBð“µ5kK4ÐŽÂ׿ò;É® ʧ0ÞBÅÉð&|ö/%;ªñ7,¢$ p=M–Þ
+stream
+À÷s:ºP45ÂîTò!ꤐ”…T¥Ïšçí˜ýÄé¼ÊóÏNºQ¡m
+4²åYØ÷G€Ï™ú.ÚÄÔ}÷çÂG.šÿš²+?…%Ž«{™‚I…&"&¾Ã’‡±M
+µ¨unˆzꜭð#ċÕ‘}‰ºˆÊ­¼3yD§S÷jƒdî«×ªÏÿÀ0©>엵œÛð–FQ*…</¥êƒÌÿ´€ 4\®Ç}9gV£íùõ'½4|£õà“RiÓè¹ým}ü‘êR¨ÞLÍ&Ì«`Þ&´¿¥~‘zŔ$¦öä¿íMÿÿ+Õ|úVŸ» fœQôfSd‡M³“tûž÷,{ci•x×ï DñŸØµÏÃÑ5¾“ðP7t›µ›„"&dÝ,èñœ«“pD×QÆøg~pûJ8°°-¾Eݽðé’ý
+kÕu¿"1Ņ=ÆÖWC5tïp‘qeÙñlFê/¼rtÌÍ
+C£nÿG҂TÆ»Ø=¹Qõñ<’ª@ð«qÂÏóÌëp+ƒÝâ#´$1ÅéG0²;£‰åY¶¿ wy¤£ËTïn ²´D=󰒝œ^pø|”_¨ÝÃÂ/ò.§>®Cô¢ËEšj—øüçҚhý¢qÓÅ5âÌïk«×D(;ø¾ÜŠ7c¦³íXNqÁTҋe,Œr(琦ñüԎ¨ÖØÁl®˜¡æð^žQ
+š¹CÂÃ|Z¹#
+¨ªü/\ækn
+2pzs,w·$\ÄÅ*h8ÌÏêlu¶Ö-
+ß0[éYè)À’‹˜J,ƒ¹¿ÀKº¨?ËÁè`U»Ê£KEøœÏª²Ð„x+ó~÷‚€ãý™¬”¹y÷ôßC]Î
+Ä)Ë7Bàýñ’ ’ê
+EËõىœMojYp<Gø—ñ»—®Ä.Ì•¶Àmî°NDN¶°j:ñïâÚüÝ*χ‡ t†v‰ÌDÀ3»Ôxn'7®=¬,R²õ`¹é¨|Š”â/"+øˆ¡HUÄD–V±Ø±¦Ü{ÙÃóTø-«.Áÿ+`ÝGÿ"¤÷{5(ìøƒOÓá‰0µŸªÅÑßÓÞ¼vo“´Tè’^7½‹(8WÆ·ëïñ=òI«—Ö¯
+¯·ùÊ¥.4ü
+™t$“çæR¸J\P†û+cÂÔßQ$±ûåƨG•ÈèpÕ÷D
+BêËI¼*?ô~zÀ&rÐNÊeÑBëp@Â<±CZœF@{ý+|žµ·,ÍZ…”4j+Á×lAñ©˜qÆM!y­¦ÃNß®</^’m™—à¨1i|Q¼óy,â›>ÒÎVd{ŒýŒlâlÅa?k
+j
+oKR"³w&EÂjt';nPrÑtÈÿ´Ær‡¦Rš)+ºâÁÔëáøÏ)Ëâ¸óŽÊ]œÐAú×vq”²À¶røžÃKeÎJ<º%þâ² 7*‡7–˜´r»¾M_¯xÂ䩾}«vÉËßk
+Ç …¥¥a؅@=„u|Áà›e#“-¹£=̟î8ÓÏÊé@¶Êú“aàËbJ+Ÿ)×!•VÇZ§Í¦$èXaž*ün
+…Ž¦²,ŽҔÏ46x@q„8‡± œï# ô̼0Ï(ÒØ-ů_!x™òðÅË>î'Vt«¤‡³ÈÄ鸿mjÚà¯v«ø÷&ßVfn[ß×z3'k¤îA„Ýð)KLZqKï«ï–ª
+B·à_eɗ¿ÇnDpM„Iú lµÁ+ý#V¤J–Ø‹\ªÙ(t7MÞ”cÄFí³âíUã7»›¡5N÷°öaÆ3äVŠ_EZl"bx·wõ%Ék¶ý*NjÉw€ŒëiMy‰€{šM²Õ3Œ¯ÚU` Dúæ-Ò}¥ðdkS˜à÷\ötaÊ·áz i˜.ôV¡š˜žZN á+´ k·X˜Ú·Š™äv ¬zÅ,DZ¥6øŸ¸5OXL瑪ã î\F>©z$‘[4
+ˆ¦¥OI/л‡uBÓë"@yfŠ#¡®°DÀü)]x‰ñ«²~šcÆ*K
+Ö¦›õš’Áó!eG@5‡fžå¸MÎß|a½
+(»6”:~¸Îhúϼ\ûú«8åE1òm½û¯¤ ËPm`aæYŒŠH@ªö
+]îÒ·žƺ™ˆKÿ¯Cm[Ê]S‰z«+ø+õË­Çŝþ§%œ)—¿Û´BjMšˆeaÆn‡T—%VÃT™îꃇ_>Ô28P8ð4{ ´mà±GV‹m2céßsrà°ñ§‹ؤ)ìä9.U¡@F¡¯CÛE§±MÏΓ„ ÈÆ]ad„|Ñ-3w“ŸrûçSe(sy%!.ɶŽAÁTHŒýGšíÌq&ùùFDïÈ÷º0^ã'Ù­ðL£²¸´‹»j¦Ð ­ÒxÞÇ´ê©Zt' û®dRp ~¢1C^ úA7UxèY­™®"µÌÖ¬9þ"Ç;z:v!=Õ¦”Çâã g“ú}fp.<Š´ÀX[íçÎ )«Çxäx‘lÎÍóÀ„k݅Ö9ÓÀîp{”Ûy¿”ˆåû™zW£ª=‡5PcÖ
+¿AœPw’æ9KxQØÃZv+] ®ƒmhå’U( ½Ð, ÔOá™N‘šތ¨ D==beùíîËâ$2Îß {><âs÷%ãNð3¢#»…XÎqÙÜOTO’³ÂÜjWu¤)'’¾ÙÁ£¼Ì²‰Ð§˜w úó‡g6ÅWp)3
+ÑùñíÉRQ7/qÏw5O9U÷Ô®[¾9r°ô*PÌ.Ÿ}×$÷Ánì
+²²
+“íŠâì+€
+0ĸվ›|‚)e$ ®3aå¬ íꮿíPK п®æÃ@'>«YÆo/$€ùƒ"Ü~zÝþÆ#ym
+õÅ µíôÍH^‹'-”ñãõ—~ÁÙkÑ®$ÓÉ¥¤Ê%*ó%oPÏÅóßÙÄØ]$üÅ3pþzw Á@>‘¤®QËðïXé¦wquïGHõ¯UOå]¡8Ñã®à,Âɼ(_ÐÐݦˆ¹ÂæÉ0»8³I\̓÷?ÿ€"6¢Pr5¿º<Š) ³=º'kÀH°°óDbã O’õ—þÕÊïðñ1¬ãŒ@ ´šWìM½¶¤<u@¨Ý¾˜è¬‡À0›kõÿ-Ñí}6]œb_½3šÁ>¡ ΌßBÌúzO”—H8)GYT Kì^Û¡ºZrŽÁ44©Žx#ïâÝ¥úŒv°êÁáóþDx¶“ð*ÐӢ¨Ø Kuۈ#“Ý#aØÛ§D@-ÞÌôuž+Ñ%/ªjÂ_Á-F{_Œ­± Cú¥Òè©m('×ÔãöDîRÐx¨ÏVÜRçå¬4-“|p`˜â.¿Ñ½îÀEvÉJ浿ÉF'o™ªÇ‚h[ö‘‰Ÿ/¨‘r9èo9wTï›E-
+úU¿¾\‡W&É^úÂÚ ñ£ÊE¢Úc˜<V·õÑ´”¯}þgíϸ…/= ÁœIòðàÉèùÐóÖ½å(j¹BZ¯žz—ZïœIܪ™6¦sOՂ2ßËyª~ɳ¿§Kï;›ÿík¤säkˆtV€@‰ÜÚ\}¶‘ˆ• ÷ïUoR‡^­Fƒbt°Œ¦ÞmÕüµ¨ùž‹ìïaÅÚèôÅ¿<Wµ¢7¾¤_Ÿø‚zscôÔâ×}ᓑ="Î,`Ú)Øɀ¢øZ$*^a$cç;Ý~êf—Y輡_À45JÚOצ øO&9TÝòé\,ýˆG ŠDŠßDÐöšsëwiÏoÖðí…øó_:€/Ôίµ«•/~ªé„GÕIï