Elektronika.lt
 2022 m. rugsėjo 29 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
Rugsėjo 28 d. 20:13
Šilumos siurblių fenomenas: daug pliusų, bet reikia ir sąlygų
Rugsėjo 28 d. 18:37
Prognozės 2050-iesiems: universitetuose – modernios technologijos, mažės teorinių paskaitų
Rugsėjo 28 d. 16:34
„Volkswagen“ pristatė įspūdingą automobilio projektą
Rugsėjo 28 d. 14:22
Daugiau kilometrų viena elektromobilio įkrova – misija įmanoma: mieste įveikia ir 700 km
Rugsėjo 28 d. 12:11
Geriausi skaitmeninio fotoaparato nustatymai produktų fotografavimui
Rugsėjo 28 d. 10:20
Konkurencinių pranašumų paieškos: kaip didieji duomenys padeda išsiskirti iš verslų minios?
Rugsėjo 28 d. 08:31
Interjerus kitiems kurianti architektė savuosiuose namuose laikėsi kelių taisyklių: turi patarimų visiems
Rugsėjo 27 d. 20:17
„Microsoft“ pristato naujausią „Darbo tendencijų tyrimą“ ir technologiją, padedančią atkurti vadovų ir darbuotojų ryšį
Rugsėjo 27 d. 17:13
Į kosmoso erdvę iškeltas pirmasis banko skyrius pasaulyje – iš Lietuvos
Rugsėjo 27 d. 14:15
Kinas: kaip kuriami filmuose matomi pasauliai?
FS19 Mods
FS19 Courseplay, FS19 Maps, FS19 Seasons
FS 22 Tractors
Farming Simulator 19 Mods, FS 22 Maps, FS22 Mods
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS22 Trucks
VAT calculator
VAT number check, What is VAT, How much is VAT
FS22 Mapy
Farming Simulator 19 mody, FS22 Tractor, FS22 Mods
Sims 4 Mods
Sims 4 cheats, Sims 4 money cheat, Sims 4 careers
Lastenvaunut
Turvaistuin, Matkarattaat, Lasten vaatteet
Paskola internetu
Vartojimo paskola, paskola automobiliui, paskola būsto remontui
FS22 Map mods
Farming simulator 22 mods, FS22 Harvesters, FS22 Seasons
FS22 Mods
FS22 Harvesters, FS22 Tractors Mods, FS22 Maps Mods
Rinkiniai tėvams
8 mėnesių kūdikis, 6 mėnesių kūdikis, 2 mėnesių kūdikis
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

Telefonai, kompiuteriai, laikrodžiai, auto – Telefonai.eu

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

www.matuok.lt - Interneto spartos matavimo sistema

Mokslo festivalis „Erdvėlaivis Žemė

„Deinavos baldai“ — šeimos baldai

„Konstanta 42“

Technologijos.lt

LTV.LT - lietuviškų tinklalapių vitrina

Lietuvos mokinių neformaliojo švietimo centras

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

www.esaugumas.lt – apsaugok savo kompiuterį!


Reklama
‡ 1999–2022 © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Reklama | Turinys | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina Valid XHTML 1.0!
Script hook v, Openiv, Menyoo
gta5mod.net
Farming Simulator 2019 Mods, FS22 Mods, FS22 Maps
farmingsimulator19mods.fr
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
Ilgalaikiai kreditai, paskola už automobilį, kreditų skaičiuoklė
www.mokilizingas.lt
FS19 Mods, FS17 Mods, FS15 Mods
www.farming2015mods.com
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama