Elektronika.lt
 2024 m. kovo 28 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
Kovo 28 d. 20:32
„Elektrum Lietuva“ į elektromobilių įkrovimo tinklo plėtrą šiemet investuos 9 mln. eurų
Kovo 28 d. 17:25
NASA „BurstCube“ palydovas paleistas tirti galingiausius sprogimus kosmose
Kovo 28 d. 14:50
„Logitech“ pristato „Signature Slim“ klaviatūrą ir darbo bei gyvenimo derinį prie rašomojo stalo
Kovo 28 d. 11:17
Kaip atrodys mokslai, studijos ir darbas DI eroje: pagrindiniai parodos „Karjera & studijos Lietuvoje“ akcentai
Kovo 28 d. 08:52
Jungikliai pagaminti iš atliekų – naujovė tvariems namams
Kovo 27 d. 20:30
Saulės elektrinė – daugiabučio balkone: ar tai įmanoma Lietuvoje? (1)
Kovo 27 d. 18:19
4 išmanūs sprendimai, leidžiantys efektyviai taupyti elektrą
Kovo 27 d. 16:36
Ekspertė apie dirbtinį intelektą ir darbuotojų produktyvumą: „Svarbu suprasti, jog nėra vieno stebuklingo įrankio, kuris išspręstų visas problemas“
Kovo 27 d. 14:14
„Philips Monitors“ E1 serija turės tris naujus daugiafunkcinius modelius, skirtus hibridiniam ir nuotoliniam darbui
Kovo 27 d. 12:43
Reikalavimas elektrifikuoti penktadalį stovėjimo vietų glumina verslą: nukentės galutiniai vartotojai
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
Paskola internetu
Vartojimo paskola, paskola automobiliui, paskola būsto remontui
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope
FS22 Mods
FS22 Harvesters, FS22 Tractors Mods, FS22 Maps Mods
FS22 Mods
FS22 Maps,
FS22 Harvesters,
FS22 Tractors
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
Sims 4 Mods
Sims 4 CC Clothes,
Sims 4 Hair CC,
Sims 4 Skill Cheat
Optic sight
Binoculars for hunting elk,
Best compact binoculars,
Riflescope hunting
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

Electronic component supply – „Eurodis Electronics“

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

Full feature custom PCB prototype service

GENERAL FINANCING BANKAS

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

Technologijos.lt

Buitinė technika ir elektronika internetu žemos kainos – Zuza.lt

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

„Deinavos baldai“ — šeimos baldai


Reklama
‡ 1999–2024 © 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
Reklamos paslaugos
SEO sprendimai

www.addad.lt
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama