Elektronika.lt
 2019 m. rugpjūčio 18 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 NaujienosSąrašas
 StraipsniaiSąrašas
 Vaizdo siužetaiSąrašas
 Nuolaidos, akcijosSąrašas
 Produktų apžvalgosSąrašas
 Naudingi patarimaiSąrašas
 Vykdomi projektaiSąrašas
 Schemų archyvasSąrašas
 - Garso technika
 - Automobilių elektronika
 - Buitinė elektronika
 - Kompiuterių elektronika
 - Maitinimo šaltiniai
 - Mikrovaldikliai
 - Radiotechnika
 - Šviesos efektai
 - Įvairi elektronika
 Teorija, žinynaiSąrašas
 Nuorodų katalogai
 Įvairūs siuntiniai
 Bendravimas
 Skelbimai ir pasiūlymai
 Elektronikos remontas
 Robotų kūrėjų klubas
 RTN žurnalo archyvas






 Verta paskaityti
Rugpjūčio 18 d. 17:16
Po 15 metų mokslininkai galės gaminti neribotą kiekį švarios ir pigios energijos (1)
Rugpjūčio 18 d. 11:25
Kuriamas reaktorius, gaminsiantis elektrą Marso kolonizatoriams
Rugpjūčio 17 d. 20:08
Užsienio investuotojas tiria žmogaus elgsenos prognozavimo galimybes
Rugpjūčio 17 d. 17:09
Ne tik papuošalams – 7 būdai, kaip auksas yra naudojamas praktiškai
Rugpjūčio 17 d. 08:10
Kova su klimato kaita – ledkalnius gaminantys povandeniniai laivai
Rugpjūčio 16 d. 20:51
Minint 25-ąjį išmaniojo telefono gimtadienį: 10 stebinančių faktų
Rugpjūčio 16 d. 17:35
Dirbtinio intelekto algoritmui siūloma suteikti patentą
Rugpjūčio 16 d. 12:19
Kenija kratosi priklausomybės nuo iškastinio kuro – paleido didžiausią Afrikoje vėjo jėgainių parką
Rugpjūčio 16 d. 08:51
Nuo įsilaužėlių neapsaugoti net ir fotoaparatai
Rugpjūčio 15 d. 17:43
Mokslinis tyrimas parodė, kaip geriausia mokyti mažus vaikus – pamirškite technologijas ir ekranus, tai visiškai neveikia
FS 19 Tractor mods
Farming Simulator 19 Mods, FS 19 Maps, How to install
ATS mods
ATS trailer mods, ATS truck mods, ATS map mods
FS 19 Tractors
Farming Simulator 19 Mods, FS 19 Maps, FS 19 Trucks
FS19 Maps, FS19 Trucks
Farming Simulator 2019 Mods, FS19 Tractors
Install MC Mods
Minecraft Dungeons Mods, Minecraft Dungeons Skins, Minecraft Dungeons Maps
FS19 Combines
Farming Simulator 19 Mods, FS19 Trucks, FS 19 Mods
How to Install Mods
Minecraft Dungeons Mod, Minecraft Dungeons Maps, Minecraft Dungeons Skins
Mobilieji telefonai
Mobilieji telefonai internetu, telefonų dėklai, telefonų priedai
Reklama
 Schemų archyvas » Mikrovaldikliai Dalintis | Spausdinti

Įdomi klaviatūra robotų mėgėjams

Publikuota: 2010-12-13 08:33
Tematika: Mikrovaldikliai
Tipas: Vidutiniška
Autorius: el. paštas Arnoldas Černiakovas

Projektuodamas robotą, pritrukau išvadų klaviatūrai, tad sumasčiau, kaip būtų galima išsisukti šioje padėtyje. Ir štai, rezultatas: 16 ar daugiau klavišų – tik per 2 valdiklio išvadus.

 Rodyti komentarus (2)
Įvertinimas:  1 2 3 4 5 

Projektuodamas robotą, pritrukau išvadų klaviatūrai, tad sumasčiau, kaip būtų galima išsisukti šioje padėtyje. Ir štai, rezultatas: 16 ar daugiau klavišų – tik per 2 valdiklio išvadus.

Viskas veikia realybėje.

Teorinė schema

Įdomi klaviatūra robotų mėgėjams

Programos pavyzdys



void meniu1(void)  
{         
zym1:         lcd_cls();
         lcd_puts("MENIU");
         garsas();
         delay_ms(uzlaikymas2/2);
         PlayStr_f((char*)"mmm~e`ee`n`n`n~yj`uuu");
         delay_ms(uzlaikymas2/4);
        garsas1();
        while (PINC.4==0){
        } ; 
       delay_ms(100); 
       klava(); // Klaviatūros apklausa 
switch (kl)
 {      case 106: {   // nuspaudus  1kl. parodo baterijos talpą
            while(1){
                     lcd_cls();
                    Baterija();
                    lcd_puts(_str98);
                    delay_ms(1);
                    lcd_gotoxy(1,1);
                    itoa(bat,txt); //ftoa(bat,5,txt);
                    lcd_puts(txt);
                    delay_ms(1);
                    lcd_puts("V");
                     PlayStr_f((char*)"b`aa`ttt~ee`r,r,r`iy`ja");
                    delay_ms(uzlaikymas2);
                    
                    if (PINC.4==0)break;
                    garsas1();
                    }
                    kl=1;
                    break;} 
       case 101: {
                while(1){irdiodas=0;
                    lcd_cls();
                    lcd_puts("IR1=");
                    PORTD=0b00000001;
                    poll_sensor();
                    PORTD=0;
                    lcd_gotoxy(0,1);
                    itoa(delta,txt);
                    lcd_puts(txt);
                    PlayStr_f((char*)"i`n~f~r,r`aa`r,r`ee`d~aa`ss");
                    delay_ms(uzlaikymas2);
                    if (PINC.4==0)break;
                    garsas1();}
                    break;}
       case 98: {
                while(1){irdiodas=1; 
                    lcd_cls();
                    lcd_puts("IR2=");
                    PORTD=0b00000010;
                    poll_sensor();
                    PORTD=0;
                    lcd_gotoxy(0,1);
                    itoa(delta,txt);
                    lcd_puts(txt);
                    PlayStr_f((char*)"i`n~f~r,r`aa`r,r`ee`d~aa`ss"); 
                    delay_ms(uzlaikymas2);
                    if (PINC.4==0)break;
                    garsas1();}
                    break;}
       case 130: {
                 while(1){ irdiodas=2;
                    lcd_cls();
                    lcd_puts("IR3=");
                    PORTD=0b00000100;
                    poll_sensor();
                    PORTD=0;
                    lcd_gotoxy(0,1);
                    itoa(delta,txt);
                    lcd_puts(txt);
                    PlayStr_f((char*)"i`n~f~r,r`aa`r,r`ee`d~aa`ss");
                    delay_ms(uzlaikymas2);
                    if (PINC.4==0)break;
                    garsas1();}  
                    break;}
        case 86: {
                while(1){irdiodas=3; 
                    lcd_cls();
                    lcd_puts("IR4=");
                    PORTD=0b00001000;
                    poll_sensor();
                    PORTD=0;
                    lcd_gotoxy(0,1);
                    itoa(delta,txt);
                    lcd_puts(txt);
                    PlayStr_f((char*)"i`n~f~r,r`aa`r,r`ee`d~aa`ss");
                    delay_ms(uzlaikymas2);
                    if (PINC.4==0)break;
                    garsas1();}
                    break;} 
       case 155: {
                while(1){ lcd_cls();
                    lcd_puts("Apkrova="); 
                    Apkrova();
                    lcd_gotoxy(0,1);
                    itoa(apkr,txt);
                    lcd_puts(txt);
                    lcd_puts("mA");
                    PlayStr_f((char*)"aa~p~~k~r,r,r~ooo`v~aa");
                    delay_ms(uzlaikymas2);
                    if (PINC.4==0)break;
                    garsas1();}
                     break;}
       case 136:{ 
             while(1){
                    lcd_cls();  //
                    PlayStr_f((char*)(" ") );
                    delay_ms(uzlaikymas2);
                    if (PINC.4==0)break;
                    garsas1();}  
                    break;}
       case 114:{
            while(1){
                    lcd_cls(); 
                    PlayStr_f((char*)("aa~v~aa~r,r,r`iy`ja") );
                    delay_ms(uzlaikymas2);
                    if (PINC.4==0)break;
                    garsas1();}  
                break;}
        case 52: {
           while(1){ 
                lcd_cls();
                PlayStr_f((char*)("pppp~~yi`r`r`r~m`m~yyy`nnnn") );
                delay_ms(uzlaikymas2);
                if (PINC.4==0)break;
                garsas1();} 
            break;} 
       case 61: 
       {    while(1)
            {    lcd_cls();
                PlayStr_f((char*)("sz`ee~n~k~a b`aa`ttt~ee`r,r,r`iy`ja") );
                delay_ms(uzlaikymas2);
                if (PINC.4==0)break;
                garsas1();} 
            break;}
       case 71: 
       {    while(1)
             {    lcd_cls();
                lcd_puts("<");  //
                PlayStr_f((char*)("kk~~aaa`iy`j~r,r,r~eeee`nnn" ) );
                delay_ms(uzlaikymas2);
                if (PINC.4==0)break;
                garsas1();}                   
            break;}
       case 82: 
       {    while(1)
             {  lcd_cls();
                lcd_puts(">");  // 
                PlayStr_f((char*)("dd~~ee`&&&&`yi~nn~eeee`nnn" ) );
               delay_ms(uzlaikymas2);
                if (PINC.4==0)break;
                garsas1();}
             break;}
       case 94: {
            while(1){
                 lcd_cls();
                lcd_puts("^");  //
                PlayStr_f((char*)("aa~t`t`t~g`g~aaaa`lllll") ); 
                delay_ms(uzlaikymas2);
                if (PINC.4==0)break;
                garsas1();}
            break;}         
        case 107: {
            
                main(); // numetimas

            break;} 
        case 121:{
                 lcd_cls(); 
                lcd_puts("PROG.Rez.");  // 
                PlayStr_f((char*)("p~r,r`oo`g`r,r`aa~m`m~aa`v~yi~m~aa`sz") );
                delay_ms(uzlaikymas2);
                garsas1();
                 meniu();  //meniu – parametrų programavimas
                BUSENA=100; // nepamenu kodėl, reiks išsiaiškinti!!!!!!
            break;} 
        default: {
                 lcd_cls();
                lcd_puts("Klaida");              
                PlayStr_f((char*)("k~l~aa`y~d~aaa v`y`ss`ooo g~eeaa`r,r`ooo") );
                delay_ms(uzlaikymas2/2);
               goto zym1;  
            break;
        }
         }         
garsas();
while (PINC.4==0){
delay_ms(200);
}
while (PINC.4==1);
delay_ms(200);
 while (PINC.4==0);
PlayStr_f((char*) "a`&&& e~sz`u r,r,r`ooo`b~ooo`t~a`sz");
//PlayStr_f((char*) *_txt4);
garsas();  
delay_ms(1000);
}
//******  PROGRAMAVIMO REŽIMAS  ******
void meniu(void)  // 
{PROGRAMAVIMAS=1;
LCDNUST=100;
     lcd_cls();
     lcd_puts("PROG.Nr."); 
while(PROGRAMAVIMAS==1)
{      klava();                 
switch (kl){
       case 106: { 
            lcd_cls();
            lcd_puts("NEURO");
            delay_ms(uzlaikymas2);
            PORTC.6=1;  //variklio 1 leidimas
            PORTC.7=1;   //variklio 2 leidimas 
            //main1();     //neuroninių tinklų programa
            PORTC.6=0;  //variklio 1 draudimas
            PORTC.7=0;   //variklio 2 draudimas
            garsas2();
            //reset();  //reiks padaryti programinį numetimą
            //main();     // grįžti į pagrindinę programą
        break;} 
       case 101: {
                          
        while(1){
            lcd_cls();
            lcd_puts("IR=");  // ir jautrumas
            lcd_gotoxy(4,0);
            itoa(irjautrumas,txt);
            lcd_puts(txt);
            delay_ms(uzlaikymas2/8);
            garsas2();        
            klava();            
            if (kl==71)irjautrumas=irjautrumas-1;
            if (kl==82)irjautrumas=irjautrumas+1;
            if (kl==94)irjautrumas=irjautrumas-10;
            if (kl==107)irjautrumas=irjautrumas+10;
            if (irjautrumas<=0) irjautrumas=1;
            if (irjautrumas>=254) irjautrumas=254;
            if (kl==121) break; 
            }
            delay_ms(uzlaikymas2/8);
       break;}
       case 98: {
        
        while(1){
            lcd_cls();
            lcd_puts("Gr="); 
            lcd_gotoxy(4,0);
            itoa(uzlaikymasf,txt);
            lcd_puts(txt);
            delay_ms(uzlaikymas2/8);
            garsas2();        
            klava();            
            if (kl==71)uzlaikymasf=uzlaikymasf-1;
            if (kl==82)uzlaikymasf=uzlaikymasf+1;
            if (kl==94)uzlaikymasf=uzlaikymasf-10;
            if (kl==107)uzlaikymasf=uzlaikymasf+10;
            if (uzlaikymasf<=0) uzlaikymasf=1;
            if (uzlaikymasf>=254) uzlaikymasf=254;
            if (kl==121) break;
         } // 
            delay_ms(uzlaikymas2/8);
            break;}
       case 130: {
            lcd_cls();
            lcd_puts("Pabegimas");
            delay_ms(uzlaikymas2);
        break;}
        case 86: {        
            lcd_cls();
            lcd_puts("UG daviklis");
            delay_ms(uzlaikymas2); 
            break;} 
       case 155: {
        lcd_cls();        
       delay_ms(1);
       lcd_puts("nesugalvojau");   // 
       delay_ms(uzlaikymas2);
       
          break;}
       case 136: {
        lcd_cls();
       lcd_puts("nesugalvojau");   //  
       delay_ms(uzlaikymas2);
       
        break;}
       case 114: {
        lcd_cls();
       lcd_puts("nesugalvojau");   
       delay_ms(uzlaikymas2);
       
        break;}
        case 52: {
         lcd_cls();
        lcd_puts("nesugalvojau");  // 
       delay_ms(uzlaikymas2);
       
        break;} 
       case 61: {
        lcd_cls();
       lcd_puts("nesugalvojau");   // 
       delay_ms(uzlaikymas2);
       
       break;}
       case 71: {
        lcd_cls();
       lcd_puts("nesugalvojau");  // 
       delay_ms(uzlaikymas2);
                    
       break;}
       case 82: {
        lcd_cls();
       lcd_puts("nesugalvojau");  // 
       delay_ms(uzlaikymas2);
       
        break;}
       case 81: {
         lcd_cls();      
       lcd_puts("nesugalvojau");  // 
       delay_ms(uzlaikymas2);
       PROGRAMAVIMAS=0;
        break;} 
        
        case 107: {
        lcd_cls();        
        lcd_puts("nesugalvojau");  // 
        delay_ms(uzlaikymas2);
        
        break;} 
        case 121: {
         lcd_cls();
        lcd_puts("PROG. Pabaiga");
        delay_ms(uzlaikymas2);  // 
        PROGRAMAVIMAS=0;
        
        break;} 
        default: { 
        lcd_cls();
        lcd_puts("PROG.Nr.");
        }
       }
  garsas();
}


while (PINC.4==0){
delay_ms(200);
}
while (PINC.4==1);
delay_ms(200);
 while (PINC.4==0);
garsas();  

}
//*******  Klaviatūros apklausa ******
void klava(void)
{   klini(); 
kl=16;  // pradinis svorio koeficientas 

    LCDNUST=100;
//    lcd_gotoxy(0, 0);
while (PINC.4==1){};
  delay_ms(10);
  for (tmp=1; tmp <=19; tmp=tmp+1)  
    { PORTC.5=0;
    delay_us(10);
    PORTC.5=1;
    delay_us(10);
    PORTC.5=0;    
    if (PINC.4==0)  kl=kl+tmp;}
      // lcd_gotoxy(0,0);
      //lcd_puts(_str0); 
//_str0 tai tuščias laukas dėl „codevision“ klaidos
      //lcd_clear();
      //itoa(kl,txt); // 
      //lcd_puts(txt); // 
       //lcd_gotoxy(0,0);
       garsas1();               
  }
    
//********  Klaviatūros inicializacija (gali jos ir nebūti)******
void klini(void)  // 
    {
        for (tmp=1; tmp <= 16; tmp=tmp+1)  
// Pradinė klaviatūros inicializacija
         { PORTC.5=1;
        delay_us(10);
         PORTC.5=0;
            delay_us(10);
       }
    } 

//******  Klaviatūros garsai ******
  void garsas(void)  // 
     {
        for (tmp=1; tmp <= 100; tmp=tmp+1)  
         { PORTC.5=1;
         delay_us(100);
         PORTC.5=0;
            delay_us(100);
        }
    }  
    
void garsas1(void)  // 
     {
        for (tmp=1; tmp <= 200; tmp=tmp+1)  
         { PORTC.5=1;
         delay_us(200);
         PORTC.5=0;
            delay_us(200);
        }
    }  
    
void garsas2(void)  // 
     {
        for (tmp=1; tmp <= 254; tmp=tmp+1)  
         { PORTC.5=1;
         delay_us(150);
         PORTC.5=0;
            delay_us(150);
        }
    }

Reali schema

Ir dar, prie to pačio klaviatūros taktavimo išvado prijungiu garsiakalbį. Kartu yra roboto garso išvadas. Taktavimo impulsų skaičius nesvarbus, jis kartu nustato registrus į pradinę būsena. Registrai KMOP, tad tai labai ekonomiškas variantas. Tranzistorius gali būti bet koks npn. Aš naudojau KT315.

Įdomi klaviatūra robotų mėgėjams

Reikalingas papildomas klavišas į tranzistoriaus bazę – tai numetimas. Kartais (retai) dėl mechaninių kontaktų „triukšmo“ registrai pasimeta.

Dar, aš padariau klaidą, nes pagal esamą „svorio“ koeficientą gaunasi, kad 7 ir 16 kl. reikšmės sutampa, bet man klavišų užteko, o viskas buvo jau parašyta (paskutinis klavišas buvo paskutinis ir meniu aprašas). Paprogramę pagal nuspaustą klavišą kviesti tikrinant kl. išėjimą, o geriau parašyti pertraukimą.

Siuntiniai

Arnoldas Černiakovas. Kaunas




Draudžiama platinti, skelbti, kopijuoti
informaciją su nurodyta autoriaus teisių žyma be redakcijos sutikimo.

Global electronic components distributor – Allicdata Electronics

TMS ELECTRONICS
TMS ELECTRONICS

www.rslietuva.com – nemokamas elektronikos komponentų pristatymas

www.matuok.lt - Interneto spartos matavimo sistema

Lietuvos mokinių neformaliojo švietimo centras

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Technologijos.lt

Mokslo festivalis „Erdvėlaivis Žemė

www.esaugumas.lt – apsaugok savo kompiuterį!

LTV.LT - lietuviškų tinklalapių vitrina

CRM sistema – „Hanna CRM“

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

MRO Supply


Reklama
‡ 1999–2019 © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Reklama | Turinys | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina Valid XHTML 1.0!
Farming Simulator 2017 Mods, FS 17 Mods
ls2017.com
„TV programa“ – tiksli
televizijos programa

www.tvprograma.lt
Lietuvos mokinių neformaliojo švietimo centras
www.lmnsc.lt
Lietuvių kalba informacinėse technologijose
www.likit.lt
Svarstyklės – čia, matuokliai, laboratorinė įranga
www.moris.lt
Farming Simulator 2019 Mods, LS19 Mods, FS19 Mods
fs19.net
Ets2 mods, ats mods, fs19 mods
allmods.net
Farming Simulator 2019 Mods, FS19 Tractors, FS19 Maps
farmingsimulator19mods.fr
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – geriausių lietuviškų tinklalapių katalogas
www.ltv.lt/technologijos/
FS 2019 Mods, FS 2017 Mods, FS 2015 Mods
www.farming2015mods.com
Mokslo populiarinimo projektas „Mokslas verslui ir visuomenei“
www.mokslasplius.lt
Reklama


Reklama