Ford mustang 05-14m. „europinimo“ dalykėliai

Iš kart pradėsiu nuo džiūgesio, kurį man sukėlė vaizdas gavus „plikas“  PCB iš kinų, taip, pačiam jas gaminti pasidarė per sunku, tiek vargo, tiek laiko atžvilgiu.

20180908_113200
Naujosios PCB

 

 

Grįžtant prie pagrindinės minties, gal geriau pradėsiu nuo to kas yra „europinimas“, čia tiems kas nežino.

Europinimas-tai amerikietiškų ar angliškų automobilių perdarymas ar modifikavimas siekiant pritikyti automobilį mūsų ar kitos, dažniausiai ES šalių rinkoms.

Šiuo atveju kalba eina apie amerikietiškus automobilius, kadangi jų perdarymas kur kas paprastesnis negu angliškų automobilių.

Na, jau kad tuščiažodžiauju- tai niekas ko gero nepaprieštaraus.

Taigi, amerikietiški automobiliai dažniausiai gale neturi mums įprastų oranžinių posūkių, kadangi pas juos šie būna kartu stabdžių ir arba su gabaritų šviesomis, savaime aišku, raudonos spalvos. Taip pat jei automobilis turi „Xenoninius“ žibintus šie neturi apiplovimo. Na ir t.t. ir pan.

Rūtuliojant kalbą link to,jog pagaminti valdikliai, kuriems buvo gamintos PCB yra skirti konkrečiai priešrūkinėms, stabdžių-posūkių šviesoms.

Viso kaip supratote yra 2 valdikliai:

20180908_113732
Priešrūkinių, bei galinių šviesų valdikliai (PCB)

 

 

1.  Priešrūkinių šviesų: Jo funkcija įjungti ir išjungti galines priešrūkines šviesas. Jis valdomas su nefiksuojamu jungikliu. Vos kartą paspaudus jungiklį valdiklio išėjime signalas fiksuojamas (fiksuoto jungiklio veikimas)- užsidega priešrūkinės šviesos. Paspaudus antrą kartą šviesos išjungiamos. Valdiklis sudarytas iš mikrovaldiklio, kuris veikia kaip skaitmeninis filtras ir išmanaus P kanalo lauko tranzistoriaus, kuris nebūtų išmanus, jei neturėtų galybės apsaugų: nuo trumpo jungimo, perkrovos, temperatūros ir t.t.

20180914_140739
Priešrūkinių šviesų valdikliai (sulituoti)

 

2. Stabdžių- Posūkių valdiklis. Jis konstrukciniu atžvilgiu paprastesnis- ji taip pat sudaro išmanieji lauko tranzistoriai, kuriuos valdo jau automobilio posūkių, stabžių signalai ir kadangi šis valdiklis skirtas specialiai Ford mustang automobiliui, valdiklis taip pat turi specializuotus diagnostinius išvadus.

20180914_145456
Stabdžių- posūkių valdikliai (sulituoti)

 

Na, o iki galutinio varianto buvo nueitas nemažas kelias, išbandytas ne vienas variantas, daugiausiai vargo būta su priešrūkinių šviesų valdikliu. Konstrukciniu atžvilgiu viso jų teko pagaminti su lm555, d tipo flip flop ir t.t. Teoriškai visi ankstesni variantai veikdavo įdealiomis sąlygomis (pvz. maitinimas nuo lab. maitinimo šaltinio), tačiau problemos atsirasdavo, kai valdikiiai būdavo sumontuojami į automobilius, o ten  „išlysdavo“ ylos iš maišų. Kiek pamenu valdiklis su 555 įsijungdavo ar išsijungdavo kone nuo bet kokio trikdžio.  O su flip flop atsirasdavo problemos nuo greito junginėjimo, kiti valdikliai net „nenukialavo“ iki automobilių.


Senosios valdiklių versijos:

Išskleisti:
20180423_001626
555 valdiklis

 

20180423_001613
555 valdiklio prototipas

 

20180423_115131
Pgamintas 555 veikiantis valdiklis

 

20180603_212831
Pirmasis veikiantis galinių šviesų valdiklis

 

20180606_212449
Ganėtiniai sėkmingas D tipo flipflop valdiklis

 

20180606_214506
flipflop valdiklis

 

20180606_214456
Flip flop valdiklio schema

 

20180710_194808
Nepagamintas kitokio tipo flipflop valdiklis

 

20180710_210503
Pirmoji veikiančių valdiklių PCB pora

 

20180721_142650
Berots flipflop valdiklis su įėjimo signalo stabilizavimu (nepamenu ar veikė ira ar buvo pagaminta)

 

20180721_142708
flip flop su įėjimo signalo stabilizavimu schema v1

 

20180808_011807
flip flop valdiklis su įėjimo signalo stabilizavimu v2

 

20180808_011843
Net nebepanu su kuom šis valdiklis 😀

 

 

Trūksta tik papraščiausio dalyko!

Tai štai, po kurio laiko, kuomet atsirado laisvesnio laiko, nusprendžiau grįžti atgal prie WS212 Led šviesos diodų. Optimizavau programą, bei patobūlinau įgūdžius lituojant 0402 standarto varžytes ir kondensatorius.

20180708_194045
Sulituota bandomoji plokštė
ws212_schema
Scema

Viskas gavosi gana neblogai,   kas susiję su mikrovaldikliu veikia nepriekaištingai, tačiau šiesos diodams buvo pasirinktas per „slabnas“ maitinimo stabilizatorius.  Nors pagal jo  aprašymą, šį keitiklį galima apkrauti iki 3A srove, tačiau, jo generuojamoje įtampoje trikdžiai atsiranda jau ir prie 250mA apkrovos. Tuo metu apytiksli trikdžių amplitudė siekia iki maždaug 900mV , ko pasekoje į tai reaguoja tiek mirovaldiklis tiek ir patys šviesos diodai.

Na, o kas svarbiausia, tai, jog schema buvo išbandyta ir ji veikia. Ateitčiai šį mp1584 led draiverį mėginsiu pakeisti į  tps40200.

Kelių sekundžių video (programos kodo nėra)

Ir pabaigai šiek tiek optimizuota programa, tačiau ji tai pat tstinė. Kitaip, tariant čia sau pačiam špargalkė.

Išskleisti

/*
* begantys posukiai.c
*
* Created: 2018.07.07 18:30:48
* Author : Saulius Stasys
*/

#define F_CPU 16000000
#define slide 15 // laiko intervalas šliaužimui

#include <util/delay.h>
#include <avr/io.h>

void on (void)
{
//ON
PORTB=0<<PB1; //
asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);//apie 0,7uS
PORTB=1<<PB1;
asm(„nop“);asm(„nop“); //apie 0,6uS
}

void off (void)
{
//OFF
PORTB=0<<PB1; //
asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“);//apie 0,35uS
PORTB=1<<PB1;
asm(„nop“);asm(„nop“);asm(„nop“);asm(„nop“); //apie 0,8uS
}

void rgb (uint8_t r, uint8_t z, uint8_t m)
{
// 8 bitų spalvų kodų generavimui, kiekvienai spalvai
for (uint8_t j=0;j<3;j++) //3 k. kartojimas zaliai raudonai ir melynai
{
uint8_t a=0, d=128,t=1;
if (j==0) a=z;
if (j==1) a=r;
if (j==2) a=m;

for(uint8_t i=0;i<8;i++) // 8 bitų skaidymas
{
if (a-(d/t)>=0) // konkrečios reikšmės vertimas į dvejetainį kodą
{
a-=(d/t); // jei 1 tai platus signalas
on();
}
else off(); // jei ne siauras
t=t*2; // kintamasis matiekai
}
}

}

void simple (uint8_t r, uint8_t z, uint8_t m, uint8_t sk)
{
//paprastas ledu uzdegimas
for (uint8_t i=0; i<sk; i++)rgb(r,z,m);
_delay_us(50);
}

void snake(uint8_t r,uint8_t z, uint8_t m, uint8_t sk)
{
for (uint8_t i=0;i<sk+1;i++)
{
//gyvate
for (uint8_t o=0;o<i;o++)rgb(r,z,m); _delay_ms(slide);

}
}

int main(void)
{

DDRB=1<<DDB1|0<<DDB2;

while(1)

{
//testas
if(PINB&(1<<DDB2))snake(25,9,0,24); // spalva ir kiek ledų
else simple(5,5,5,24);
}

}


LED posūkių tarpinis progamos variantas

Tobulinant  LED posūkių programą pamaniau būtų neblogai išsisaugoti tarpinį variantą. Tarpiniu variantu vadinu todėl, jog dabar programoje prikūriau įvairių funkcijų LED šviesos diodų uždegimui (dar mąstau apie kelias papildomas), o pačių posūkių valdymo funkcijos kaip dar ir neparašiau, na bet jau su turimomis funkcijomis tai nebus padaryti sunku. O kol kas pati programa:


Programos kodas:
/*
* WS2812B.c
*
* Created: 2017.09.30 17:25:58
* Author : Saulius Stasys
*/

// laiko intervalų nustatymai
#define F_CPU 8000000

#define LED 10 //LED skaičius

#define T0 0.35// laiko intervalas 1
#define T1 0.9//laiko0 intervalas 2

#define slide 30 // laiko intervalas šliaužimui

//išeinantys signalai
#define OUTPORT PORTB //LED valdymo portas
#define OUTDR DDRB

#define OUTDDR PB3 //Kairės pusės LED valdymo kontaktas
#define OUTDDR1 PB4 //Dešinės pusės LED valdymo kontaktas

//Įeinantys signalai
#define INDDR DDRB //Valdymo registras
#define INPIN PINB

#define INLIDDR DDB0 //Ilgų kontaktas
#define INLDDR DDB1 //Kairio posūkio kontaktas
#define INRDDR DDB2 //Dešinio posūkio

#include <util/delay.h>
#include <avr/io.h>
#include <avr/eeprom.h>

//signalų generavimo funkcija
void rgb(uint8_t r,uint8_t z, uint8_t m, uint8_t as )
{
//zalia spalva
//8bit
uint8_t ch;
for (uint8_t h=0;h<3;h++) { if(h==0) ch=z; if(h==1) ch=r; if(h==2) ch=m; //8bit if (ch-128>0)
{
ch-=128;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//7bit
if((ch-64<128)&&(ch>63))
{
ch-=64;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//6bit
if((ch-32<64)&&(ch>31))
{
ch-=32;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//5bit
if((ch-16<32)&&(ch>15))
{
ch-=16;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//4bit
if((ch-8<16)&&(ch>7))
{
ch-=8;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//3bit
if((ch-4<8)&&(ch>3))
{
ch-=4;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//2bit
if((ch-2<4)&&(ch>1))
{
ch-=2;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//1bit
if(ch==1)
{
ch-=1;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}
}

}

void fixrgb(uint8_t r,uint8_t z, uint8_t m, uint8_t sk, uint8_t as)
{
for (uint8_t i=0;i<sk;i++)rgb(r,z,m,as);
_delay_us(200);
}

void fromto(uint8_t r,uint8_t z, uint8_t m, uint8_t sk, uint8_t sk2, uint8_t as)
{
for (uint8_t i=0;i<sk;i++)rgb(0,0,0,as);
for (uint8_t i=sk;i<sk2;i++)rgb(r,z,m,as);
_delay_us(50);
}

void snake(uint8_t r,uint8_t z, uint8_t m, uint8_t sk, uint8_t as)
{
for (uint8_t i=0;i<sk;i++)
{
for (uint8_t o=0;o<i;o++)rgb(r,z,m,as); _delay_ms(slide); } } void revsnake(uint8_t r,uint8_t z, uint8_t m, uint8_t r1,uint8_t z1, uint8_t m1, uint8_t sk, uint8_t as) { for (uint8_t i=sk;i>0;i–)
{
for (uint8_t o=0;o<i;o++)rgb(r,z,m,as);
for (uint8_t o=0;o<sk-i;o++)rgb(r1,z1,m1,as);
_delay_ms(slide);
}
}

 

void slidebar(uint8_t r,uint8_t z, uint8_t m, uint8_t r1,uint8_t z1, uint8_t m1, uint8_t sk2, uint8_t sk, uint8_t as)
{
for (uint8_t i=0;i<sk;i++)
{
if (i<sk2)for (uint8_t o=0;o<i;o++)rgb(r,z,m,as);
else
{
for (uint8_t o=0;o<i-sk2;o++)rgb(r1,z1,m1,as);
for (uint8_t o=i-sk2;o<i;o++)rgb(r,z,m,as);
}
_delay_ms(slide);
}
for (uint8_t i=sk-sk2;i<sk;i++)
{
for (uint8_t o=0;o<i;o++)rgb(r1,z1,m1,as);
_delay_ms(slide);
}

}

int main(void)
{
_delay_ms(200);
if(INDDR==OUTDR)INDDR=0<<INLIDDR|0<<INLDDR|0<<INRDDR|1<<OUTDDR|1<<OUTDDR1;
else
{
INDDR=0<<INLIDDR|0<<INLDDR|0<<INRDDR;
OUTDR=1<<OUTDDR|1<<OUTDDR1;
}

uint8_t a=0,b=0,c=0,k=0,p=0,kr=0;

p=eeprom_read_byte(0);

while (1)
{

/*
fromto(1,0,0,40,50,OUTDDR);
//_delay_ms(100);
fromto(0,1,0,0,40,OUTDDR);
//_delay_ms(100);*/
/*
fromto(1,0,0,0,3,OUTDDR);
_delay_ms(100);*/

//fromto(0,1,0,0,60,OUTDDR);
//slidebar(0,0,1,1,0,0,50,60,OUTDDR);

snake(25,9,0,10,OUTDDR);
revsnake(25,9,0,25,14,6,10,OUTDDR);

}

}


Automobilio posūkiai

Kažkada kilo įdėja pagaminti LED posūkius, kurie ne mirksėtų, o bėgtų eilute. Tuomet parašiau šiokią tokią programą ir viską pamiršau. Na ir visai neseniai prisiminiau visą šį reikalą ir pamaniau, jog būtų neblogai jį pabaigti. Pačioje pradžioje mąsčiau jog LED valdiklio širdis bus ATTINY2313 mikrovaldiklis, tačiau kiek patobulinęs programą pastebėjau, jog viskam pakaks Attiny25, žinoma, jei ateityje dar tobulinsiu šio mikrovaldiklio nepakaks dėl išvadų trūkumo.Siekis yra pagaminti LED posūkius valdomus per bluetooth sąsają. Na o kol kas senas pirmosios programos rezultatas (deje programos kodo nebėra, jis jau perdarytas 100 kartų :D)

Na, o kadangi šiame video pats rašiau subtitrus, tai klaidų gali pasitaikyti (Man su kalbomis niekad nesisekė).
Kur baigiau, tiesa po šiokio tokio patobulinimo net jau pagaminau pcb ir jai dėžutę. Taip pat naujieji posūkiai buvo ištobulinti ant automobilio- pastebėtos klaidos, bugai ir visokie kitokie error. Kitaip tariant po Alfa testavimo nusiųstas tolimiasniam tobulinimui ir galbūt sulaukęs Beta testavimo veiks nepriekaištingai.
Kol kas čia „Alfa“ programa (tobulintina, be bluetooth sąsajos) Led posūkiai turi 2 rėžimus perjungiamus ilgosiomis šviesomis- smulkiau programos komentaruose.


Programa
/*
* WS2812B.c
*
* Created: 2017.09.30 17:25:58
* Author : Saulius Stasys
*/

// laiko intervalų nustatymai
#define F_CPU 8000000

#define LED 60 //LED skaičius

#define T0 0.35// laiko intervalas 1
#define T1 0.9//laiko0 intervalas 2
#define slide 5 // laiko intervalas šliaužimui

//išeinantys signalai
#define OUTPORT PORTB //LED valdymo portas
#define OUTDR DDRB

#define OUTDDR PB3 //Kairės pusės LED valdymo kontaktas
#define OUTDDR1 PB4 //Dešinės pusės LED valdymo kontaktas

//Įeinantys signalai
#define INDDR DDRB //Valdymo registras
#define INPIN PINB

#define INLIDDR DDB0 //Ilgų kontaktas
#define INLDDR DDB1 //Kairio posūkio kontaktas
#define INRDDR DDB2 //Dešinio posūkio

#include <util/delay.h>
#include <avr/io.h>
#include <avr/eeprom.h>

//signalų generavimo funkcija
void grb(uint8_t z,uint8_t r, uint8_t m,uint8_t as )
{
//zalia spalva
//8bit
uint8_t ch;

for (uint8_t h=0;h<3;h++) { if(h==0) ch=z; if(h==1) ch=r; if(h==2) ch=m; //8bit if (ch-128>=0)
{
ch-=128;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//7bit
if((ch-64<128)&&(ch>63))
{
ch-=64;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//6bit
if((ch-32<64)&&(ch>31))
{
ch-=32;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//5bit
if((ch-16<32)&&(ch>15))
{
ch-=16;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//4bit
if((ch-8<16)&&(ch>7))
{
ch-=8;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//3bit
if((ch-4<8)&&(ch>3))
{
ch-=4;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//2bit
if((ch-2<4)&&(ch>1))
{
ch-=2;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}

//1bit
if(ch==1)
{
ch-=1;
OUTPORT=1<<as;
_delay_us(T1);
OUTPORT=0<<as;
_delay_us(T0);
}
else
{
OUTPORT=1<<as;
_delay_us(T0);
OUTPORT=0<<as;
_delay_us(T1);
}
}

}

int main(void)
{
if(INDDR==OUTDR)INDDR=0<<INLIDDR|0<<INLDDR|0<<INRDDR|1<<OUTDDR|1<<OUTDDR1;
else
{
INDDR=0<<INLIDDR|0<<INLDDR|0<<INRDDR;
OUTDR=1<<OUTDDR|1<<OUTDDR1;
}

uint8_t a=0,b=0,c=0,k=0,p=0,kr=0;

p=eeprom_read_byte(0);

while (1)
{

////////////////////////////////////////////////////LED posūkių įjungimas ir išjungimas//////////////////////////////////
_delay_ms(30);
if(INPIN&(1<<INLIDDR))// ilgų šviesų tikrinimas
{
k++;
if(k<255) //sumirksėtri per 7.65s (30ms*255)
{
if(c==0)a++; //tikriname ar buvo jungiklis išjungtas
}
else k=254;
c=1;
}
else c=0; // ilgų šviesų jungiklio išjungimas

if (a==3) // reikšmės tikrinimas eeprom atmintyje
{
if(p==0)eeprom_write_byte(0,1); // keičiam reikšmes
else eeprom_write_byte(0,0);
}

/////////////////////////////////////////////////////////REGITRINIS variantas- kuomet LED posūkiai išjungti (paprastas gabaritas)///////////////////////
if(p==0) // išjungta (regitrinis variantas)
{
/////////////////////////////////////////////////////////////PABAIGTI SU LED define!/////////////////////////////////////////

for(uint8_t o=0;o<45;o++)grb(0,0,0,OUTDDR);
for(uint8_t o=45;o<60;o++)grb(147,255,63,OUTDDR);
for(uint8_t o=0;o<45;o++)grb(0,0,0,OUTDDR1);
for(uint8_t o=45;o<60;o++)grb(147,255,63,OUTDDR1);

}

/////////////////////////////////////////////////////////LED posūkiai su gabaritu
else // įjungta (viskas veika)
{

/////////////////////////////////mirksejimas//////////////////////////////////neveikia prigesimas mirksint vienai lempai
if(INPIN&(1<<INLDDR))
{
if(INPIN&(1<<INRDDR))kr=3;
else kr=1;
}

else
{
if(INPIN&(1<<INRDDR))kr=2;
else kr=0;
}

if(INPIN&(1<<INLDDR)||INPIN&(1<<INRDDR))
{
b=0;
for (uint8_t i=0;i<LED;i++)
{
if(kr==1)for(uint8_t o=0;o<i;o++) grb(90,255,0,OUTDDR);
if(kr==2)for(uint8_t o=0;o<i;o++) grb(90,255,0,OUTDDR1);
if(kr==3||kr==0)
{
for(uint8_t o=0;o<i;o++) grb(90,255,0,OUTDDR);
for(uint8_t o=0;o<i;o++) grb(90,255,0,OUTDDR1);
}
_delay_ms(slide); //tarpams vinguriavimo greičiui
}
}

// kai posūkis užgęsta
else
{
b++;
if(b==5) //patikrinam kiek laiko užgesęs posūkis
{
// jei 5 ciklus paryškinam gabaritus
b=b-1;

for(uint8_t o=0;o<LED-1;o++)grb(197,255,143,OUTDDR);
for(uint8_t o=0;o<LED-1;o++)grb(197,255,143,OUTDDR1);
_delay_ms(slide);

}
// jei užgęses posūkis laikome prigesintus gabaritus
else
{
for (uint8_t i=0;i<LED;i++)
{
//

if(kr==1)for(uint8_t o=0;o<i;o++) grb(49,63,35,OUTDDR);
if(kr==2)for(uint8_t o=0;o<i;o++) grb(49,63,35,OUTDDR1);
if(kr==3||kr==0)
{
for(uint8_t o=0;o<i;o++) grb(49,63,35,OUTDDR);
for(uint8_t o=0;o<i;o++) grb(49,63,35,OUTDDR1);
}
_delay_ms(slide);
}
}
}

}

}

}