Elektronika.lt
 2024 m. gruodžio 22 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
Gruodžio 21 d. 11:33
Kokį elektronikos įrenginį dovanoti, kad jis vėliau neišaugintų elektros sąskaitos?
Gruodžio 20 d. 17:12
KTU mokslininkai sukūrė nanolazerį – sidabro nanokubus panaudojo šviesos generavimui
Gruodžio 20 d. 14:28
Lietuvių kalba ir technologijos: VU mokslininkų projektas LIEPA-3 atvers naujas galimybes
Gruodžio 20 d. 11:49
Stacionarūs kompiuteriai: koks jų vaidmuo nešiojamųjų kompiuterių eroje?
Gruodžio 20 d. 08:14
„DS Automobiles“ pristato naujausią savo elektrinį flagmaną – „DS N°8“ kupė
Gruodžio 19 d. 20:18
Naudingi patarimai, kurie padės maksimaliai padidinti jūsų elektrinio automobilio priemonės įveikiamą atstumą
Gruodžio 19 d. 17:27
Žaidybinimas: efektyvus švietimo įrankis ar bėgimas nuo tikrovės?
Gruodžio 19 d. 14:27
Orkaitės darbymetis prasideda: 5 paprasti patarimai, kurie kalėdinius kepinius leis paruošti elektrą naudojant taupiau
Gruodžio 19 d. 11:15
Proveržis magnetų tyrimuose: ištisas savaites tarnaujanti telefono baterija ir 1000 kartų didesnė jo sparta
Gruodžio 19 d. 08:14
Gaisrą sukelti gali ir kalėdiniai papuošimai: ekspertai pataria, kaip to išvengti
FS25 Tractors
Farming Simulator 25 Mods, FS25 Maps, FS25 Trucks
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS25 Mods
VAT calculator
VAT number check, What is VAT, How much is VAT
LEGO
Mänguköök, mudelautod, nukuvanker
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope
FS25 Mods
FS25 Harvesters, FS25 Tractors Mods, FS25 Maps Mods
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
GTA 6 Weapons
GTA 6 Characters, GTA 6 Map, GTA 6 Vehicles
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
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

Sveiki ir ekologiški maisto produktai

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

Draugiškas internetas


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
FS25 Mods, FS25 Tractors, FS25 Maps
fs25mods.lt
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