Izobraževanje‎ > ‎Arduino‎ > ‎Robotika v tehniki‎ > ‎

FreeWhellyArduino

eavtor: David Rihtaršič


Priključitev vmesnika

Sestavite krmilnik tako, da močnostni dodatek priključite na Arduino UNO in ga priključite na računalnik kot je to prikazano na spodnji shemi.
 
https://sites.google.com/site/drtirobotika/izobrazevanje/arduino/robotika-v-tehniki/free-wheely/DSC08948.JPG
 
Priključite vmesnik RobDuino na krmilnik Arduino.
   
   
Nato ga z USB kablom priključite na računalni. 
  Preveri, če na krmilniku sveti lučka pri napisu [+5V]
  


 
 


 


Preverite naslednje nastavitve na krmilniku RobDuino:
    1. Ali sveti LED (lučka) z oznako +5V ? Ta lučka indicira ali ima mikrokrmilnik na Arduino vmesniku primerno napajanje.
    2. Ali sveti LED lučka z oznako Vin? Ta indicira ali ima krmilnik primerno napajanje za močnostne izhode (naprimer za poganjanje motorjev)
    3. Ali je kratkostičnik (jumper) glavnega napajanja na mestu tako, da povezuje pin z oznako +5V in srednji pin?
    4. Ali so vsi ostali kratkostičniki v položaju "EN" (Enable)? V tem položaju omogočajo delovanje močnostnih izhodov.

Dodajanje knjižnice s primeri in funkcijami:

Sledite naslednjim korakom:
  1. Pripravite si programsko okolje Arduino IDE.
  2. Presnemite si naslednjo knjižnico z dodatnimi funkcijami, testnimi programi in programi, ki so uporabljeni v tej vaji:
    1. RobDuino-master.zip [ download link ]
    2. Datoteko RobDuino-master.zip preimenujte v RobDuino.zip.
  3. Dodajte knjižnico v Arduino IDE:
    1. Izberite [ Sketch ],
    2. nato [ Include Library    >],
    3. ter [ Add .ZIP Library... ].
    4. Nato izberete knjižnico, ki ste jo presneli
      1. RobDuino.ZIP
        (najverjetneje ste jo shranili v mapo .../Download/)
      2. terk kliknete [ Open ].
    5. Opazujte statusno vrstico v Arduino IDE okolju...
      1. pojaviti se mora napis:
        Library added to your library. Check "Include libraries".











Nastavitev krmilnika v ArduinoIDE



Izbira testnega programa in programiranje





Moj prvi program

Vključili boste prvo svetlečo diodo na digitalnem izhodu.
V programskem okolju Arduino IDE odprite naslednji program :
Primeri > RobDuino > FreeWheely > r010_moj_prvi_program 
           
#include "RobDuino.h"              
void setup()
{// nastavitve
  
}

void loop()
{// glavni program
  PORTD = 1;
}
Preizkusite program:
  1. Program, ki ste ga napisali, prekopirali ali odprli morate najprej "poslati" mokrokrmilniku. Rečemo, da mikrokrmilnik sprogramiramo.
  2. Med programiranjem bosta najverjetneje utripali LED (lučki) PD0 in PD1, saj komunikacija med računalnikom in mikrokrmilnikom poteka prav po teh dveh povezavah.
  3. Ko je programiranje končano, se program začne izvajati. Preverite kaj se na krmilniku dogaja ali če opazite kaj novega ...
Spremenite program tako, da bo zasvetila 2. LED lučka.


Kaj se zgodi, če v program napišete ukaz:
PORTD = 3

V program dodajte programske komentarje tako, da boste programsko kodo ustrezno komentirali in opisali čemu služi posamezna vrstica v programski kodi. Komentarje lahko pišete tako, da začnete besedilo z dvema poševnicama // v vsaki vrstici ali pa da komentirate cel blok besedila tako, da blok besedila začnete z /* in ga končate z */. Naprimer kot je prikazano v naslednjem programu:
/*  Knjiznica RobDuino se nahaja na:
    https://github.com/davidrihtarsic/RobDuino
    V njej so shranjene nekatere funkcije za:
    - smiselno poimenovenje priključkov [primer: pD3]
    - uporabo funkcije tipk [primer: If Tipka.down = True...]
    - krmiljenje izhodnih prikljuckov [priemr: Motor.run(GOR)]
    - možnost krmiljenja moci motorja [primer: Motor.run(GOR, 125)]
    - enostavna uporaba ultrazv. sen. [primer: UZ.dstanceRead()]
*/   
#include "RobDuino.h"   // vkljucitev te knjiznice           
void setup()
{                       // nastavitve
 
}
void loop()
{                       // glavni program
 PORTD = 1;
}


Desetiške vrednosti v dvojiški obliki

Vsi podatki v mikrokrmilniku so zapisani v digitalni obliki (v dvojiškem sistemu). Zato na izhodu Porta D vidimo številko (prikazana z "lučkami" v digitalni obliki), ki smo jo pripisali tem vratom v desetiški obliki. Te vrednosti lahko preverite tudi z računalom.

 Bit 7  Bit 6  Bit 5  Bit 4   Bit 3   Bit 2   Bit 1   Bit 0 
 27 26  25  24  23  22  21  20 
 128 64  32  16 

Zgornja tabela prikazuje vrednosti posameznih bitov, ki prispevajo vsoti desetiške številke, ki smo jo pripisali Portu D. Poglejmo si še en primer, če želimo, da bi na Portu D svetile le vsake druge diode [1 0 1 0 1 0 1 0] moramo na PortD postaviti številko 128+0+32+0+16+0+4+0+2+0 = 170.

Kako izključiti digitalne izhode?

Sedaj poskusite programu dodati še tri programske vrstice, tako da bo glavni program vseboval naslednje ukaze:

void loop()
{ // glavni program
  PORTD = 1;
  delay(3000);
  PORTD = 0;
  delay(3000);
}

Kaj ugotovite?  
Odgovor 1: PORTD = 0 izključi vse izhode.
Odgovor 2: "Glavni program" se stalno ponavlja, kar NI (!) klasična C++ ureditev programa, saj v ta namen uporabljamo razne programske zanke...
Odgovor 3: ukaz delay(3000) zaustvi izvajanje programa za 3000 ms = 3 s.

Programske ukaze, ki se nahajajo v "glavnem programu" premaknite v podprogram "nastavitve". Preskusite program in ugotovite v čem je razlika glede na prejšnjo ureditev programa.

void setup()
{ // nastavitve
  PORTD = 1;
  delay(3000);
  PORTD = 0;
  delay(3000);
}

void loop()
{ // glavni program

}

Programske zanke

Preskusite naslednje dva programa, ki se razlikujeta v programski zanki.
Obe zanki ponavljata enako zaporedje ukazov, vendar se nekoliko razlikujeta. Ugotovite kako!

Program: Primeri > RobDuino > FreeWheely > r020_Prog_zanka_While.ino 
    #include "RobDuino.h"
    void setup()
    { // nastavitve
      while (1 == 1) {
        PORTD = 1;
        delay(3000);
        PORTD = 0;
        delay(3000);
      }
    }

    void loop()
    { // glavni program

    }
Program: Primeri > RobDuino > FreeWheely > r021_Prog_zanka_For.ino  
    #include "RobDuino.h"
    void setup()
    { // nastavitve
      for (int i = 1; i<255; i++) {
        PORTD = i;
        delay(10);
      }
    }

    void loop()
    { // glavni program

    }


Določitev stanja na digitalnih izhodih

Digitalni izhod lahko nastavite na več različnih načinov, preskusite naslednje različice programa:
Primeri > RobDuino > FreeWheely > r0100_moj_prvi_program.ino 

 v DESETIŠKI obliki:

    void setup()
    {// nastavitve
      PORTD = 80;
      delay(3000);
      PORTD = 0;
    }

 v DVOJIŠKI obliki:

    void setup()
    {// nastavitve
      PORTD = 0b11001100;
      delay(3000);
      PORTD = 0;
    }
 z Arduino IDE funkcijami:

    void setup()
    {// nastavitve
      digitalWrite(pD7,HIGH);
      delay(3000);
      PORTD = 0;
    }





Kako deluje motor?

Priključite motor na baterijo tako kot prikazuje sosednja slika.
En priključek motorja povežite z žico na baterijski priključek, ki je označen z znakom +. Drugega pa povežite z žico na priključek - na bateriji.




Ugotovi kako se motor vrti, če žici zamenjate tako, kot prikazuje 2. slika (Slide 2) na desni strani.



Nariši smer toka za obe električni shemi.








Uporaba reduktorja

Če na tako gred motorja pritrdite kolo robota, se kolo prehitro vrti in zagotavlja premalo sile vrtenja (premalo navora). Zato morate uporabiti polžasti reduktor. Ta zmanjša hitrost vrtenja gredi in poveča silo vrtenja. 

Sestavite motor in polžasto gonilo (reduktor) kot prikazujejo naslednja zaporedja slikovnih navodil.

Priključite motor na baterijo in preizkusite hitrost in silo vrtenja.


Preizkusite lahko tudi, da je polžasto gonilo samozaporno. Če motor miruje, kolesa ne moremo zavrteti ročno, saj polžasto gonilo preprečuje vrtenje.



Prestavno razmerje

Prestavno razmerje reduktorjev nam pove, za kolikokrat bi v idealnem primeru povečali silo vrtenja (navor), pri čemer se je za isti faktor zmanjšala hitrost vrtenja gredi. 

Poglejmo, kako je z našim reduktorjem. Reduktor je sestavljen iz štirih zobnikov, od katerega prvi zobnik tvori polžasto gonilo z gredjo motorja (slika 1) ...





Izračunaj prestavno razmerje desnega prenosa na zgornji sliki.





Sestavljanje mobilnega robota

Sestavite mobilnega robota kot prikazuje sosednji video. 

Bodite pozorni, da uporabite prave kocke in jih obrnete kot je prikazano.








Krmiljenje digitalnih izhodov


V tej vaji bomo ročno krmilili po dva digitalna izhoda. Ko boste pritisnili:
  • tipko C4, bomo v logično "1" postavili izhod D7.
  • tipko C5, pa bomo v logično "1" postavili izhod D6
V ta namen preskusite program:
Primeri > RobDuino > FreeWheely > r040_Krmiljenje_izhodov.ino 

Nato povežite MOTOR LEVEGA KOLESA z dvema žičkama na digitalna izhoda D7 in D6, kot je to prikazano na levi sliki.

https://sites.google.com/site/drtirobotika/izobrazevanje/arduino/robotika-v-tehniki/free-wheely/r0900%20TestOdbijacTipka.hex?attredirects=0&d=1
Preverite, če se motor giblje tako, kot je opisano v 
spodnji tabeli prezentacije. Če temu ni tako, popravite vezavo tako, kot je to predlagano v prezentaciji...


Nato naložite naslednji program:
Primeri > RobDuino > FreeWheely > r041_Krmili_desni_motor.ino 

Nato priključimo še DESNI MOTOR  na D5 in D4
kot prikazujejo slike na desni zgornji prezentaciji. 

https://sites.google.com/site/drtirobotika/izobrazevanje/arduino/robotika-v-tehniki/free-wheely/r0900%20TestOdbijacTipka.hex?attredirects=0&d=1
Preverite, če se motor giblje tako, kot je opisano v desni prezentaciji na listu 3. Če temu ni tako, popravite vezavo motorja.














Motor potrebuje dva priključka, saj le tako lahko tok vanj priteče in po drugem priključki odteka. Smer vrtenja pogonske gredi motorja pa je odvisna od smeri toka skozi motor: 
  • če tok teče od enega priključka proti drugemu, se bo gred motorja vrtela v eno smer,
  • če pa tok teče v drugo smer, pa se bo gred vrtela v nasprotni smeri od prejšnje.
Smer vrtenja pogonske gredi pa lahko spreminjamo na več načinov:
  • Motorju lahko zamenjamo priključni žici, s tem bomo spremenili smer toka skozi motor in posledično tudi vrtenje gredi.
  • Programsko lahko zamenjamo stanje digitalnih izhodov in tako spremenimo smer toka skozi motor
  • Pogonski gredi bi lahko dodali zobnik, ki bi poganjal naslednji zobnik na drugi pogonski gredi in ta bi se vrtela v nasprotni smeri od prve gredi.



Vožnja naprej, nazaj, levo, desno

V nadaljevanju ne bomo več krmilili posameznih izhodnjih priključkov, ampak bomo v ta namen uporabljali za ta namen pripravljene funkcije...

Pripravite si program:
Primeri > RobDuino > FreeWheely > r050_Krmiljenje_motorjev.ino 

 Z nadgradnjo naslednjega programa sestavite tako zaporedje ukazov, da bo vaš robot zaplesal.

Naj gre nekaj sekund naprej, ... pomiga levo, desno, se premakne nazaj ...

Določene "plesne korake" lahko izvedete v zankah, ki smo se jih naučili v poglavju "Porgranke zanke", tako vam nekaterih ukazov ne bo potrebno ponavljati...

Ne pozabite, vaš program je sedaj napisan v podprogramu void setup() in se izvrši le enkrat.
Če želite, da bi "plesne korake" ponavljal, prestavite program v podprogram void loop().

Ne pozabite programsko kodo tudi komentirati tako, da bo branje programske kode bolj razumljivo.
     #include "RobDuino.h"
    DOutDir LevoKolo(pD6, pD7);
    DOutDir DesnoKolo(pD4, pD5);

    void setup()
    { // nastavitve
      LevoKolo.run(NAPREJ);
      DesnoKolo.run(NAPREJ);
      delay(2000);
      LevoKolo.stop();
      DesnoKolo.stop();
    }

    void loop()
    { // glavni program
    
    }


Dogodek ali pogojno izvajanje ukazov - "IF" stavek

Dogodki so programski ukazi, ki se izvršijo LE ob izpolnjenem pogoju. Naprimer, da naj naš robotek zapleše LE, če bo uporabnik pritisnil tipko. Pripravite si naslednji program:
Primeri > RobDuino > FreeWheely > r060_Dogodek_IF_stavek.ino 

Ugotovite katero tipko morate pritisniti, da se bo dogodek "vožnje naprej" izvršil. 


Morda še nekaj idej za dopolnitev programa:

Dodajte podobne programske ukaze še za drugo tipko C5. Ne pozabite, da morate dodati porgramski objekt:

                        
Button TipkaC5(pC5);

Preskusite kdaj se začne program izvajati, če namesto pogoja (TipkaC4.down()) vpišemo:
             if (TipkaC4.wasPressed()) {
                ...
                ...   
             }

    #include "RobDuino.h"
    Button TipkaC4(pC4);
    DOutDir LevoKolo(pD6, pD7);
    DOutDir DesnoKolo(pD4, pD5);

    void setup()
    { // nastavitve
    
    }

    void loop()
    { // glavni program
      if (TipkaC4.down()) {
        LevoKolo.run(NAPREJ);
        DesnoKolo.run(NAPREJ);
        delay(2000);
        LevoKolo.stop();
        DesnoKolo.stop();
      }
    }


Priključitev tipke

V nadaljevanju opremite robota, da zaznava ovire.


Namestite odbijač, ki ob stiku s predmetom sklene tipko. Tako robot zazna, da ima pred seboj nek predmet in se lahko ustavi.



Priključitev tipke (glej desno prezentacijo).

Tipka ima tri priključke (označeni so z 1 , 2 in 3),
ki jih na vmesnik priključimo takole:
  1. priključek  moramo priključiti na C0,
  2. priključek pričvrstimo na GND in
  3. priključek povežemo na +5V
https://sites.google.com/site/drtirobotika/izobrazevanje/arduino/robotika-v-tehniki/free-wheely/r0900%20TestOdbijacTipka.hex?attredirects=0&d=1Pripravite si program:
Primeri > RobDuino > FreeWheely > r070_Test_tipke.ino 
Preverite ali ste pravilno povezali tipko z vmesnikom. Odziv lahko opazujete prejo Serijskega Okna v Arduino IDE programu.
Bodite pozorni, da je lučka, ki ponazarja napajanje +5 V ves čas vključena. Če ta lučka ne sveti ko je stikalo SKLENJENO ali RAZKLENJENO, nemudoma izključite USB kabel!













    Zaznavanje ovire (dogodek)

    Kadarkoli morate sprejemati neke odločitve na podlagi nekih podatkov, se največkrat poslužujete t.i. IF-stavkov. 
    Vendar je z njimi potrebno premišljeno ravnati.



    Preskusite sosednji program in preverite, če deluje pravilno!
    Robotek naj bi se ob dotiku z oviro ustavil...



    Če bo šlo kaj narobe, ne pozabite, da lahko krmilnik tudi resetirate s tipko RST na krmilniku.



    Raziščite, zakaj predlagan program ne deluje. Namig - uporabiti je potrebno programsko zanko s povratnim delovanjem. Ali povedano drugače, odziv senzorjev moramo stano opazovati, saj le tako lahko ustrezno odreagiramo...



    Dopolnite program, da bo robotek oviro obšel.
           #include "RobDuino.h"
        Button TipkaC4(pC4);
        DOutDir LevoKolo(pD6, pD7);
        DOutDir DesnoKolo(pD4, pD5);
    
        void setup()
        { // nastavitve
          while (TipkaC4.up()) {
            // Čakamo, da uporabnik pritisne tipko
            // in izvajanje programa se ne nadaljuje.
          }
          // nato se začne robot premikati NAPREJ...
          LevoKolo.run(NAPREJ);
          DesnoKolo.run(NAPREJ);
          // Če se dotakne ovire, se bo stikalo sklenilo in
          // na dig. vhodu C0 bomo zaznali log. "1".
          // Tedaj ustavimo robota.
          if (digitalRead(pC0)) {
            LevoKolo.stop();
            DesnoKolo.stop();
          }
        }
        
        void loop()
        { // glavni program
        
        }






    IF - STAVEK bomo velikokrat uporabljali. Napišemo ga lahko v dveh oblikah: enostavni in sestavljeni.
    Enostavni if-stavek vsebuje pogoj in en sam programski ukaz, ki se izvrši, če je pogoj izpolnjen.
                Primer:
                if (digitalRead(pC0) == 1) digitalWrite(pD7,HIGH);
    Sestavljeni if-stavek vsebuje več programskih ukazev, ki se izvršijo, če je pogoj izpolnjen. Vsi ti ukazi morajo biti vpeti v zavite oklepaje { in }. Poleg teh mu lahko dodamo tudi ukaze, ki se bodo izvršili,  če ta pogoj ni izpolnjen.
                Primer:
                  if (digitalRead(pC0) == 1) {
                    LevoKolo.stop();
                    DesnoKolo.stop();
                  }else{
                    LevoKolo.run(NAPREJ);
                    DesnoKolo.run(NAPREJ);
                  }


    Povratno delovanje - IR senzor

    Precej nerodno bi bilo, če bi morali avtomobili zaznavati 
    predmete le z dotikom... Zato je bolje, če lahko predmete 
    v okolici zaznavamo brez-kontaktno, na primer z 
    infra-rdečim senzorjem razdalje.


    Namestite IR senzor razdalje na sprednji del robota kot prikazuje shema na desni in ga priključite na 3-pinski priključek C0.


    https://sites.google.com/site/drtirobotika/izobrazevanje/arduino/robotika-v-tehniki/free-wheely/r0900%20TestOdbijacTipka.hex?attredirects=0&d=1
    Nato pripravite program:
    Primeri > RobDuino > FreeWheely > r090_Test_IR_razdalja_C0.ino 
    Ter preverite:
    1. Kakšen/Kolikšen je odziv senzorja? > Odziv senzorja je v obliki anlogne napetosti med 0 in +5 V. 
    2. Na kakšen način lehko krmilnik zazna ta signal? > Krmilnik lahko s pomočjo analogno-digitalnega pretvornika (ADC) pretvori analogno napetost od 0.0V do +5.0V v številke od 0 do 1023.
    3. In kolikšne so te številke? > V našem primeru se številke ADC pretvornika gibljejo od 0 do 1023, saj je ADC pretvorba 10-bitna. To pomeni, da največjo napetost, ki jo še lahko izmerimo z našim krmilnikom zapišemo z 10-imi biti (1111111111B = 1023D). 



    Izogib oviram - IR senzor razdalje

    Preskusite sosednji program:
    Primeri>RobDuino>FreeWheely> r100_Izogib_oviram_IR_senzor.ino 

    Dopolnite program tako, da bo robotek oviro obšel ali si ji izognil.
        #include "RobDuino.h"
        Button TipkaC4(pC4);
        DOutDir LevoKolo(pD6, pD7);
        DOutDir DesnoKolo(pD4, pD5);
        
        void setup()
        { // nastavitve
          while (TipkaC4.up()) {
            // Čakamo, da uporabnik pritisne tipko
          }
        }
        
        void loop()
        { // glavni program
          if (analogRead(0) > 400) {
            LevoKolo.stop();
            DesnoKolo.stop();
          }else{
            LevoKolo.run(NAPREJ);
            DesnoKolo.run(NAPREJ);
          }
        }



    Senzorji

    S senzorji lahko pretvarjamo neko fizikalno količino (osvetljenost, temperaturo, vlago ...) v neko električno količino (največkrat napetost). Dva senzorja smo že spoznali (senzor dotika in senzor razdalje), poglejmo si še nekaj senzorjev...












    Vožnja po črti

    Za vožnjo po črti bomo potrebovali:
    1. LUČKO, ki bo osvetljevala talno površino in
    2. SVETLOBNI SENZOR, s katerim bomo lahko zaznavali osvetljenost površine.

    Priključimo lučko


    Lučko potrebujete zato, da je robotek manj odvisen od okoliške svetlobe. Tako lahko sam osvetljuje tla pod sabo in zato bolje loči temno in svetlo podlago.
    LUČKO priključite na D3 in GND tako, kot prikazuje sosednja prezentacija.

    https://sites.google.com/site/drtirobotika/izobrazevanje/arduino/robotika-v-tehniki/free-wheely/r0900%20TestOdbijacTipka.hex?attredirects=0&d=1
    Pripravite si program: Primeri > RobDuino > FreeWheely > r110_Test_lucke_in_senzorja.ino 
    Nato stestirajte delovanje lučke tako, da pritisnete tipko C4. Lučko lahko izključite s ponovnim pritiskom na tipko C4.


    Svetlobni senzor

    Sestavite svetlobni senzor, kjer uporabite foto-tranzistor in upor, ki ju vežete zaporedno v delilnik napetosti.

    Kako lahko sestavite svetlobni senzor, si oglejte s pomočjo slik na desni.
    Fototranzistor (rumena kocka) ima dva priključka:
      1. eden je označen z rdečo barvo. Tega povežite na +5 V in
      2. drugi priključek fototranzistorja povežite na analogni vhod C1.
    Nato dodate še upor z upornostjo med 100 kOhmi in 1 MOhmov. Upor vežete med analogni vhod C1 in GND. Temu uporu rečemo tudi -referenčni upor.

    https://sites.google.com/site/drtirobotika/izobrazevanje/arduino/robotika-v-tehniki/free-wheely/r0900%20TestOdbijacTipka.hex?attredirects=0&d=1
    Nato preverite delovanje senzorja tako, da z istim programom:
    Primeri > RobDuino > FreeWheely >  r110_Test_lucke_in_senzorja.ino 
    Preverite odziv senzorja v "Serijskem Oknu" v Arduino IDE okolju.

    Tak senzor bo najbolj odziven, če se bo njegova izhodna napetost spreminjala okoli polovice njegove napajalne napetosti. Torej, ker v našem primeru napajamo senzor z napetostjo +5,0 V, bi se morala njegova izhodna napetost morala spreminjati nekoliko nad in pod 2,5 V. Take pogoje delovanja lahko dosežemo s pravilno izbranim referenčnim uporom.




     

    Vožnja po črti - program

    Pripravite si program:
    Primeri > RobDuino > FreeWheely >  r120_Voznja_po_crti.ino 

    Pravzaprav bo robot vozil po robu črte.Program napišete tako, da v glavnem podprogramu void loop(stalno preverjal odziv svetlobnega senzorja in ustrezno odreagiral:
    1. Če je robot na črni površini, naj zavije LEVO, a le z enim kolesom.
    2. Če je robot na beli površini, naj zavije DESNO, a le z enim kolesom.
    Poleg tega ne pozabite, da mora biti ves čas vožnje vključena tudi lučka na digitalnem izhodu D3.
      Tako bo robot "racal" po robu črte...


      Obrat na koncu črte
      Bi znali program dopolniti tako, da se robot na koncu črte obrne in se pelje po njej nazaj...
      Morda nekaj napotkov:
        1. Meriti/šteti morate čas, ko se robot zadržuje na beli in/ali črni površini.
        2. Če dlje časa ne najde črne površine, se je najverjetneje le-ta končala.
        3. Robot naj naredi primeren obrat.
        4. In nadaljuje naravnost, dokler zopet ne naleti na črto.
        5. Nato nadaljuje po začetnem programu.

      Vožnja ob predmetu

      Na robota namestite IR senzor razdalje. Senzor naj bo nameščen podobno kot v vaji Izogib oviram, le da je v tem primeru obrnjen na desno in ne naravnost naprej.


      Vožnja po črti - pwm

      Preučite program, s katerim robot prav tako lahko zavija ali celo vozi po črti. Le da v tem primeru premika obe kolesi sočasno. Kako?
      Program najdete v:
      Primeri > RobDuino > FreeWheely >  r130_Voznja_po_crti_pwm.ino 

      Priključitev LCDja

      Na robota lahko namestimo tudi LCD. Nanj lahko izpisujemo informacije za uporabnika, trenutne podatke ali pa preprosto naredimo robota bolj zanimivega, kot smo to storili z nasledjnim programom. Preskusite ga:
      Primeri > RobDuino > FreeWheely >  r140_LCD.ino 

       
      ċ
      RobDuino.zip
      (30k)
      David Rihtaršič,
      31. maj 2017 15:13
      Comments