Elektronika.lt
 2019 m. spalio 21 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
Spalio 21 d. 08:28
Baterijoms gaminti naudojamas metalas, apie kurį niekas nenori kalbėti
Spalio 21 d. 07:17
Kaip pagreitinti atnaujinamos „iOS“ aplikacijos įkėlimą
Spalio 20 d. 16:43
5 būdai padėti jūsų tėvams ir seneliams išvengti apgavysčių internete
Spalio 20 d. 10:14
Viskas, ką reikėtų žinoti, jeigu susidūrėte su socialinių tinklų paskyros vagyste
Spalio 19 d. 18:36
Ateina tikras hitas – „League of Legends“ nusitaikė į išmaniuosius telefonus
Spalio 19 d. 10:32
SIM kortelų daugiau nei gyventojų, bet išmanumo lietuviams pritrūko: dauguma gėdijasi prašyti pagalbos
Spalio 19 d. 08:16
3 mobiliosios programos, padedančios akliesiems pažinti pasaulį
Spalio 18 d. 21:09
„Volvo“ pristatė pirmą savo elektromobilį
Spalio 18 d. 20:44
5 telefoniniai žaidimai, kurie įėjo į istoriją: nuo linijos ir taško iki papildytos realybės
Spalio 18 d. 15:41
„Telia“ ruošią tiesioginį atsaką „Netflix“: televizija bus visuose ekranuose
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

www.rrt.lt – Lietuvos Respublikos ryšių reguliavimo tarnyba

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
Buhalterijos kursai, apskaitos kursai, vadovų apskaitos kursai
www.apskaitakiekvienam.lt
Svarstyklės – čia, matuokliai, laboratorinė įranga
www.moris.lt
Lyderystės mokymai, mokymai vadovams, vadovų mokymai
www.tripleo.lt
Mokslo ir technologijų pasaulis – naujienos ir straipsniai
www.technologijos.lt
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