Nr. nreg. ......../..........
Ministerul Educaiei, Cercetrii Tineretului i Sportului
Liceul Teoretic Diaconovici-Tietz
Cara -Severin, Re i a
LUCRRE DE TESTT
!"#$RMT!C
Te%a& R$'$T UT$"$M !" C
Coordonator
Candidat
pro() $*asan Cristian Condrat
+atric, Sc-%iedt
Re i a
./01
1 | R o b o t a u t o n o m n C
CU+R!"S
Introducere.......................................................................................................................3
Notiuni generale despre Arduino.....................................................................................5
Arduino IDE.........................................................................................................6
Microcontrollere...................................................................................................7
Senzori..................................................................................................................8
o!ot Mini"Su#o...........................................................................................................$%
Descriere............................................................................................................$%
Asa#!lare............................................................................................................$3
E&plicarea codului..........................................................................................................%$
'rodus (inal....................................................................................................................%3
2 | R o b o t a u t o n o m n C
!"TR$DUCERE
)u*+ntul ro!ot pro*ine din li#!a ce,- .ro!ota/ 0i nsea#n- #uncitor1 sau
ro!.'ro*enien2a acestui cu*+nt este str+ns legat- de scenaristul 3arel )ape41 care a introdus
acest cu*+nt n anul $5%$ ntr"una din scenetele acestuia6 .7.. .ossu#8s 7ni*ersal
o!ots/.9e#a acestei scenete era despre dezu#anizarea persoanei ntr"o ci*iliza2ie !azat- din
ce n ce#ai #ult pe te,nologie. Se pare c- sceneta a a*ut un enor# succes la acea
*re#e.9er#enul de :ro!otics; .n traducere li!er- ro!otic-/ se re<er- la 0tiin2a care se ocup-
de studiul 0i utilizarea ro!o2ilor. Acest ter#en a <ost pri#a dat- <olosit de scriitorul 0i o#ul de
0tiin2- a#erican de origine rus-1 Isaac Asi#o*1 ntr"o scurt- po*estioar- nu#it- =unaround;
n anul $5>%. )on<or# enciclopediei ?e!ster1 un ro!ot este =un dispoziti* auto#at1 care
e&ecut- <unc2ii nor#al atri!uite oa#enilor1 sau o #a0in- cu ase#-nare de o#;. @n ti#p ce
aceast- de<ini2ie ar putea <i satis<-c-toare pentru unii dintre noi1 nu este ns- neap-rat 0i
co#plet-. A alt- de<ini2ie a <ost dat- de Institutul de o!otic- din A#erica1 n anul $575.
)on<or# acestei de<ini2ii1 un ro!ot este =o #a0in- reprogra#a!il-1 #ulti<unc2ional- creat-
pentru a #uta di*erse #ateriale1 !uc-2i1 unelte sau alte dispoziti*e specializate prin di*erse
#i0c-ri progra#ate1 pentru realizarea unei *ariet-2i #ari de sarcini;.
Inteligenta arti<iciala si <ilozo<ia au #ai #ulte in co#un dec+t are de o!icei o stiinta cu
<ilozo<ia acelei stiinte. Aceasta deoarece inteligenta arti<iciala necesita ec,iparea unui
progra# de calculator cu anu#ite aptitudini <ilozo<ice1 in special episte#ologice.
'rogra#ul tre!uie sa ai!a nglo!at conceptul de cunoastere si cu# poate <i o!tinuta ea. )ea
#ai !un- #etod- de a n elege i interpreta datele din #ediul nconBur-tor este <olosirea unor
ansa#!le electote,nice 1 n special #icrocontrollere ce au proprietatea de a n elege codul
#a in-. MaBoritatea cercetarii in o!otic- din acest #o#ent nu necesita <ilozo<ie1 deoarece
siste#ul care este dez*oltat nu tre!uie sa opereze independent in lu#e si ast<el nu tre!uie sa
ai!a o i#agine a lu#ii. Designerul progra#ului analizeaza <ilozo<ia pre#ergator dez*oltarii
progra#ului1 in acesta din ur#a regasindu"se o reprezentare restr+nsa a acestei <ilozo<ii.
Mo#entan1 ro!o2ii sunt utiliza2i n #aBoritatea industriilor. E&ist- at+t de #ulte tipuri
de ro!o2i <olosi2i pentru di*erse ser*icii1 nc+t o enu#erare a tuturor tipurilor acestora ar <i
aproape i#posi!il-. A clasi<icare oarecu# rudi#entar- a celor #ai nt+lnite tipuri de ro!o2i ar
putea <i6
C androizi1 ro!o2i construi2i ca s- #i#eze co#porta#entul 0i n<-2i0area u#an-D
C ro!o2i statici1 ro!o2i <olosi2i n di*erse <a!rici 0i la!oratoare ca de e&e#plu !ra2e ro!otD
C ro!o2i #o!ili1 ro!o2i care se deplaseaz- ntr"un anu#it #ediu <-r- inter*en2ie u#an- 0i
realizeaz- anu#ite o!iecti*eD
C ro!o2i autono#i1 ro!o2i care 0i ndeplinesc sarcinile <-r- inter*en2ie din partea unui
operator u#an 0i 0i o!2in energia necesar- <unc2ion-rii din #ediul nconBur-torD
C tele"ro!o2i1 ro!o2i care sunt g,ida2i prin dispoziti*e gen teleco#and- de un operator u#anD
C linii auto#ate de produc2ie in <a!rici1 sunt tot un <el de ro!o2i1 c,iar dac- nu sunt #o!ili1
deoarece au toate <acilit-2ile de<ini2iei noastreD
o!otul care a <ost creat pentru acest atestat este o de#onstra ie a <aptului c- algorit#i de
progra#are n*- a i la clas- pe parcursul liceului pot aButa n procesul de analiz- a!stract- a
#ediului. Acest ansa#!lu electrote,nic de*ine dup- nc-rcarea so<tEare"ului pe
#icrocontroller un ro!ot autono#.
3 | R o b o t a u t o n o m n C
Le*ile ro2oticii &
C Fegea $6 7n ro!ot nu are *oie sa pricinuiasca *reun rau unei <iinte u#ane1 sau prin
neinter*etie1 sa per#ita ca unei <iinte o#enesti sa i se <aca rau.
C Fegea %6 7n ro!ot tre!uie sa se supuna ordinelor date de catre o <iinta u#ana atat ti#p cat
ele nu intra in contradictie cu Fegea $.
C Fegea 36 7n ro!ot tre!uie sa"si proteBeze propria e&istenta1 atat ti#p cat acest lucru nu intra
in contradictie cu Fegea $ sau Fegea %.
C Fegea G6 7n ro!ot nu are *oie sa pricinuiasca *reun rau u#anitatii1 sau prin neinter*entie sa
per#ita ca u#anitatea sa <ie pusa in pericol.
)a ur#are a Fegii G1 toate celelalte legi se #odi<ica corespunzator1 Fegea G <iind legea
supre#a.
4 | R o b o t a u t o n o m n C
"$ !U"! 3E"ERLE DES+RE RDU!"$
Arduino este una dintre cele #ai si#plu de utilizat plat<or#e cu #icrocontroller. Ne pute#
gandi la el ca la un #inicalculator .are puterea de calcul a unui co#puter o!isnuit de acu# $5
ani/1 <iind capa!il sa culeaga in<or#atii din #ediu si sa reactioneze la acestea. In Burul lui
Arduino e&ista un ecosiste# de dispoziti*e e&tre# de !ine dez*oltat. Arice <el de in<or#atie
ne"a# dori s- culege# din #ediu1 orice <el de cone&iuni cu alte siste#e ai a*ea ne*oie1 e&ista
o sansa <oarte #are sa g-si# un dispoziti* pentru Arduino capa!il sa ne o<ere ceea ce a*e#
ne*oie. Ast<el1 daca discuta# despre preluarea de in<or#atii din #ediu1 #ai Bos sunt doar
cate*a e&e#ple de senzori 6 senzori ce deter#ina ni*elul de alcool in aerul respirat1 senzor de
incediu1 gaz H'F1 #ono&id de car!on1 acceleratii ale dispoziti*elor in #iscare1 curent
consu#at de di*erse dispoziti*e casnice1 <orta de apasare1 gradul de rotire1 cartele (ID1
distante1 ni*el de ilu#inare1 directia nordului1 prezenta u#ana1 sunet1 te#peratura1 u#iditate1
presiune at#os<erica sau *ideo. Daca ne re<eri# la posi!ilitatea de a ne conecta cu alte
siste#e1 e&ista placi de retea Et,ernet pentru Arduino capa!ile sa co#unice in<or#atii prin
Internet1 dispoziti*e capa!ile sa trans#ita date prin cone&iune radio1 placi de retea ?I(I1
dispoziti*e HSM pentru Arduino .capa!ile sa tri#ita / receptioneze SMS"uri1 sa initieze
apeluri de *oce sau sa tri#ita date prin reteaua 3H/ sau conectori Iluetoot, pentru conectarea
Arduino cu tele<onul #o!il sau laptop. In zona #ecanica1 e&ista #otoare de curent continuu
.utilizate pentru ro!otica/1 #otoare pas cu pas .utilizate de o!icei in zona industriala/ sau
ser*o#otoare1 controlate <oarte e&act. 'entru a<isarea in<or#atiilor preluate1 e&ista ecrane
F)D pentru Arduino1 incepand cu cele #ai si#ple .F)D te&t cu $6 caractere/ pana la ecran
F)D gra<ice. 'entru a ne <ace o idee despre ceea ce se poate <ace cu Arduino1 in continuare
cate*a e&e#ple de proiecte care se pot realiza cu Arduino6
Jro!ot autono# care ocoleste o!stacole.
Jro!ot controlat prin Iluetoot, <olosind tele<onul #o!il sau
laptop"ul
JArduino K senzor te#peratura K senzor u#iditate K senzor
presiune at#os<erica K placa de retea Et,ernet care trans#ite
datele de #ediu pe Hoogle Docs1 la <iecare $G secunde.
5 | R o b o t a u t o n o m n C
rduino !DE
Dupa ce a# instalat dri*ere"ele1 ur#atorul pas este sa ne progra#a# placa Arduino.
Arduino se conecteaza la ') prin inter#ediul unui port serial. 'ri#ul pas pe care il a*e# de
<acut este sa deter#in-# acest port. )ea #ai si#pla cale este de a conecta placa1 astepti circa
3G de secunde J $ #inut1 ca sa <i# siguri ca a <ost detectata de ')1 iar apoi desc,ide#
#eniulL9ools "MSerial 'ortL. Ar tre!ui sa *ede# una sau #ai #ulte intrari. Me#oreaza"le
.sau scrie"le pe o <oaie de ,artie / <a un screens,ot/. Deconecteaza placa Arduino din portul
7SI .scoate ca!lul din ')/. Desc,ide din nou #eniul L9ools "M Serial 'ortL. Acel port
care a disparut este portul asociat placii Arduino. )onecteaza din nou placa Arduino la ')1
asteapta sa <ie recunoscuta de ')1 si apoi selecteaza portul respecti* din #eniul L9ools "M
Serial 'ortL. 7r#atorul pas este selectarea tipului de placa cu care lucrezi. Din #eniul L9ools
"M IoardL1 selecteaza tipul de placa cu care lucrezi .Arduino 7no1 Feonardo1 Mega1 etc/.
nato%ia unui pro*ra% rduino
Arice progra# Arduino are doua sectiuni. Sectiunea LsetupL1 care este rulata doar o
singura data1 atunci cand placa este ali#entata .sau este apasat !utonul LesetL/1 si sectiunea
LloopL1 care este rulata in ciclu1 atat ti#p cat este ali#entata placa. Sa lua# un e&e#plu.
void setup() {
//codul scris aici ruleaza o singura data
}
void loop() {
//codul scris aici ruleaza tot timpul
}
Ast<el1 in rutina LsetupL *o# pune de o!icei cod de initializare1 iar in rutina LloopL *o# scrie
partea principala a progra#ului nostru. Este interesant sa dai acu# cate*a pagini #ai departe
si sa ur#aresti acest lucru pe e&e#plele din capitolele ur#atoare.
6 | R o b o t a u t o n o m n C
M!CR$C$"TR$LLERE
Fa #odul general un controler .LcontrollerL " un ter#en de origine anglo"sa&on-1 cu un
do#eniu de cuprindere <oarte larg/ este1 actual#ente1 o structur- electronic- destinat-
controlului unui proces sau1 #ai general1 unei interac iuni caracteristice cu #ediul e&terior1
<-r- s- <ie necesar- inter*en ia operatorului u#an. 'ri#ele controlere au <ost realizate n
te,nologii pur analogice1 <olosind co#ponente electronice discrete i/sau co#ponente
electro#ecanice .de e&e#plu relee/. )ele care <ac apel la te,nica nu#eric- #odern- au <ost
realizate ini ial pe !aza logicii ca!late .cu circuite integrate nu#erice standard SSI i MSI / i
a unei electronici analogice uneori co#ple&e1 #oti* pentru care Lstr-luceauL prin di#ensiuni
#ari1 consu# energetic pe #-sur- i1 nu de pu ine ori1 o <ia!ilitate care l-sa de dorit.
9oate aplica iile n care se utilizeaz- #icrocontrolere <ac parte din categoria a a ziselor
siste#e ncapsulate"integrate .=e#!edded sNste#s;/1 la care e&isten a unui siste# de calcul
incorporat este .aproape/ transparent- pentru utilizator. 'rintre #ultele do#enii unde
utilizarea lor este practic un standard industrial se pot #en iona6 n industria de auto#o!ile
.controlul aprinderii/#otorului1 cli#atizare1 diagnoz-1 siste#e de alar#-1 etc./1 n a a zisa
electronic- de consu# .siste#e audio1 tele*izoare1 ca#ere *ideo i *ideocaseto<oane1
tele<onie #o!il-1 H'S"uri1 Bocuri electronice etc./1 n aparatura electrocasnic- .#a ini de
sp-lat1 <rigidere1 cuptoare cu #icrounde1 aspiratoare/1 n controlul #ediului i cli#atizare
.sere1 locuin e1 ,ale industriale/1 n industria aerospa ial-1 n #iBloacele #oderne de #-surare
" instru#enta ie .aparate de #-sur-1 senzori i traductoare inteligente/1 la realizarea de
peri<erice pentru calculatoare1 n #edicin-. )a un e&e#plu din industria de auto#o!ile
.auto#oti*e industrN/1 unde nu#ai la ni*elul anului $5551 un IM? seria 7 utiliza 65 de
#icrocontrolere1 iar un Mercedes din clasa S utiliza 63 de #icrocontrolere. 'ractic1 de i a#
prezentat ca e&e#ple concrete nu#ai siste#e ro!otice i #ecatronice1 este <oarte greu de g-sit
un do#eniu de aplica ii n care s- nu se utilizeze #icrocontrolerele.
7 | R o b o t a u t o n o m n C
SE"4$R!
Senzor Lu%ina 'ric,
Senzorul de lu#ina este pri#ul e&e#plu de citire a *alorilor analogice din #ediu. 7n senzor
de lu#ina da o *aloare nu#erica intre G si $G%31 *aloare proportionala cu ni*elul de ilu#inare
din #ediul a#!iant.
[Link](960 );
}
void loop() {
int nivelIluminare analog!ead(0);
[Link](nivelIluminare);
dela"(#0);
}
In rutina setup singurul lucru pe care il <ace# este sa initializa# o co#unicare seriala cu
')"ul1 pe care o *o# <olosi ca sa trans#ite# si sa *izualiza# pe ') *alorile citite de senzorul
de lu#ina. utina loop citeste *aloarea data de senzorul de lu#ina .conectat la portul serial G/
si a<iseaza aceasta *aloare in consola seriala. 'oti *edea aceasta in<or#atie desc,izand Serial
Monitor in Arduino IDE. 'entru a testa ca lucrurile <unctioneaza corect1 pune degetul peste
senzorul de lu#ina. Oei o!ser*a ca *aloarea pe care o *ezi in Serial Monitor scade.
8 | R o b o t a u t o n o m n C
Senzor Te%peratura 'ric,
Senzorul de te#peratura !ric4 este un alt e&e#plu de senzor care o<era *alori analogice
care depind de te#peratura din #ediul a#!iant. Din *alorile citite de la senzori se o!tine
*aloarea te#peraturii in #ediul a#!iant in grade )elsius1 aplicand o <or#ula #ate#atica
si#pla1 <or#ula prezentata in codul sursa de #ai Bos.
void setup() {
[Link](9600);
}
void loop() {
[Link](citeste$empIn%elsius());
}
&loat citeste$empIn%elsius() {
&loat temperatura'ediata 0;
&loat suma$emperatura;
&or (int i 0; i(#0; i))) {
int reading analog!ead(0);
&loat voltage reading * +.0;
voltage / #0,-.0;
&loat temperature%elsius (voltage . 0.+)
* #00 ;
suma$emperatura suma$emperatura )
temperature%elsius;
}
return suma$emperatura / (&loat)count;
}
9 | R o b o t a u t o n o m n C
Senzori de linie
)a sa ra#ana in ring tot ti#pul1 ro!otul tau are ne*oie de senzori de linie. 'oti <olosi doi
senzori .doar in <ara/1 sau patru senzori .si in <ata si in spate/. Depinde de strategia pe care ai
ales"o.
Senzori de distanta
)a sa isi *ada ad*ersarul1 ro!otul tau are ne*oie de senzori de distanta. 3it"ul are deBa
pre*azuta o <anta in zona <rontala si gauri pentru #ontare. Senzorii de distanta S,arp sunt cei
#ai potri*iti pentru acest gen de ro!ot pentru ca au raspunsul <oarte rapid. Senzorii cu
ultrasunet nu sunt <oarte e<icienti pentru su#o1 raspunsul lor este relati* lent. Senzorii de
distanta S,arp sunt disponi!ili in trei *ariante1 in <unctie de zona in care sunt e<icienti. E&ista
senzori e<icienti intre 3 c# si >G de c#1 intre $G c# si 8G de c#1 si intre $5 c# si $5G de c#.
In a<ara zonei in care sunt e<icienti1 *alorile senzorilor nu pot <i utilizate. Fa <el1 ce senzori
alegi depinde de strategia ta.
Arduino este un creier <oarte capa!il pentru ro!otul tau1 insa ca orice creier1 poate e<ectua
doar operatiuni de precizie. Arduino nu este gandit sa dea puteri #ari pentru #otoare1 ci doar
se#nale de control precise. Dri*er"ul de #otoare se conecteaza direct la sursa de energie
.!aterie/ si co#anda #otoarele con<or# se#nalelor de control pri#ite de la Arduino)
10 | R o b o t a u t o n o m n C
Mini Di(uzor
Mini di<uzorul este cea #ai si#pla #odalitate de a crea sunete cu Arduino. 7tilizarea
acestuia este e&tre# de si#pla. )onectezi <irul negru la pinul HND al placii Arduino1 iar <irul
rosu la un pin '?M digital al placii Arduino. 'laca Arduino 7NA are 6 ast<el de pini .31 51 61
51 $G si $$/1 iar placa Arduino Mega are $5 ast<el de pini .de la pinul % pana la pinul $3 si de
la pinul >> la pinul >6/. 7n se#nal de tip '?M este un se#nal care se #isca <oarte rapid intre
5O si GO1 ast<el incat #e#!rana di<uzorului este si ea #iscata la <el de rapid1 generand sunete.
(rec*enta cu care se#nalul se #isca intre 5O si GO deter#ina <rec*enta sunetului. Daca *rei
sa intelegi #ai #ulte despre se#nalul '?M1 *ezi si capitolul LAnalogie electricitate J
curgerea <luidelorL.
void setup() {
pin'ode(##/ 01$21$);
}
void loop() {
&or (int i #+00; i ( -000; i))) {
tone(##/ i);
dela"(#0);
}
&or (int i -000; i 3 #+00; i..) {
tone(##/ i);
dela"(#0);}
11 | R o b o t a u t o n o m n C
R$'$T M!"!-SUM$
DESCR!ERE
o!otul se incadreaza in $G c# P $G c# P $G c#.
Di#ensiunile e&acte sunt 6 lungi#e 6 55 ##
lati#e 6 58 ##
inalti#e 6 7G ##
(ara !aterii1 <ara Arduino1 senzori si dri*ere plat<or#a cantareste %$G g.
)u Arduino1 dri*er de #otoare1 senzori si 6 !aterii AA ro!otul cantareste >$G g.
3it"ul este co#pus din ur#atoarele co#ponente6
C 'lat<or#a sasiu alcatuita din > ele#ente .ple&iglass transparent de 3## grosi#e/.
C 7n set suport #otor #icro e&tins alcatuit din doua ele#ente de prindere1 > suru!uri1 >
piulite.
C Doua #otoare #icro #etal Q' .poti selecta rata de trans#isie pe care o doresti din ca#pul
din dreapta sus/
C A cutie pentru 6 !aterii AA1 i#preuna cu ca!lul a<erent.
C A perec,e de roti >%&$5## cu aderenta ridicata.
C 7n set de ele#ente de prindere <or#at din $G piulite M31 > distantiere #etalice cu suru!
M3 la un capat si piulita M3 la celalalt capat de lungi#e >G ##1 %G suru!uri M3 de $G ##
.cu capat drept/1 6 ele#ente de prindere1 % suru!uri cu piulite si % distantiere din plastic.
12 | R o b o t a u t o n o m n C
SM'LRE
$. 'entru pri#ul pas ai ne*oie de6 placuta in<erioara a sasiului1 > suru!uri M3 si >
ele#ente de prindere. Inlatura <olia protectoare de pe a#!ele parti si pozitioneaza
ele#entele de prindere ca in i#agine.
%. (iecare ele#ent il *ei <i&a cu cate un suru! M3 in > gauri ale placutei. )and strangi
suru!ul aplica putina presiune ca sa se <or#eze <iletul in interiorul gaurii.
13 | R o b o t a u t o n o m n C
3. 7r#eaza #ontarea !allcaster"ului.
>. Oei #onta !ila in gaurile din i#agine.
14 | R o b o t a u t o n o m n C
5. Se <i&eaza #ai intai !ila in cele % gauri.
6. Se strang piulitele si !ila este <i&ata <er# de placuta in<erioara.
7. 7r#eaza sa #ontezi placuta inter#ediara1 #otoarele cu reductor i#preuna cu
suporturile de prindere. Inlatura <olia protectoare de pe <etele placutei
inter#ediare.
15 | R o b o t a u t o n o m n C
[Link] <i&eaza #otoarele
5.'entru a doua roata *ei ur#a aceeasi procedura.
$G. 7r#eaza sa #ontezi placa superioara asa#!lata anterior in cele > piulite ale
distantierelor. 'entru acest pas ai ne*oie de > suru!uri M3.
16 | R o b o t a u t o n o m n C
le*erea %otoarelor
Daca strategia ta #izeaza pe un ro!ot puternic si lent1 atunci iti sugerez sa alegi #otoare cu o
rata de trans<er #are. Daca in sc,i#! te !azezi pe un ro!ot rapid si agil1 atunci *a tre!ui sa
alegi #otoare cu o rata de trans<er #ica. ata de trans<er se re<era la angrenaBul care trans<era
#iscarea de la #otor la roti .inclus in corpul #otorului/. A rata de trans<er de 5G6$ insea#na
ca la 5G de rotatii ale #otorului roata <ace o rotatie. o!otul este agil1 dar #ai putin puternic.
A rata de trans<er de %586$ insea#na ca la %58 de rotatii ale #otorului roata <ace o rotatie.
o!otul *a <i lent1 dar <oarte puternic.
Alege"ti o strategie pentru ro!ot si selecteaza tipul de #otoare din zona de selectie din dreapta
sus.
Driver de %otoare
Arduino este un creier <oarte capa!il pentru ro!otul tau1 insa ca orice creier1 poate e<ectua
doar operatiuni de precizie. Arduino nu este gandit sa dea puteri #ari pentru #otoare1 ci doar
se#nale de control precise. Dri*er"ul de #otoare se conecteaza direct la sursa de energie
.!aterie/ si co#anda #otoarele con<or# se#nalelor de control pri#ite de la Arduino.
Daca nu ai deBa un dri*er de #otoare1 iti reco#and un dri*er de #otoare capa!il sa co#ande
#otoare de #a&i# % a#peri. Motoarele incluse in acest 4it necesita un curent #a&i# de $.%
a#peri1 asadar dri*er"ul cu F%58 este o alegere e&celenta.
Daca nu il ai deBa1 iti reco#and sa il adaugi in cos acu#.
Iazat pe circuitul F%58N1 acest dri*er de #otoare poate co#anda % #otoare de curent
continuu1 curent #a&i# % a#peri. Dri*erul este co#plet asa#!lat su! <or#a unui s,ield
Arduino1 <acilitand ast<el utilizarea si#pla.
)onectarea la Arduino se <ace cupland placa s,ield peste placa Arduino si conectand pinii
#arcati OIN si HND la sursa de ali#entare pentru #otoare. 'inii '?M care controleaza
dri*er"ul F%58 sunt 31 51 6 si 5 .*edeti si progra#ul de test de #ai Bos/.
)ele doua #otoare se conecteaza in pinii cu suru! #arcati LMA9A$L si LMA9A%L1 iar
ali#entarea pentru #otoare se conecteaza la pinii cu suru! #arcati LOINL si LHNDL.
17 | R o b o t a u t o n o m n C
'entru situatiile deose!ite cand a*eti ne*oie de o putere ridicata disipata in #od continuu1 *a
reco#anda# radiatorul pentru F%58.
int MOTOR2_PIN1 = 3;
int MOTOR2_PIN2 = 5;
int MOTOR1_PIN1 = 6;
int MOTOR1_PIN2 = 9;
void setup() {
pinMode(MOTOR1_PIN1, OTPT);
pinMode(MOTOR1_PIN2, OTPT);
pinMode(MOTOR2_PIN1, OTPT);
pinMode(MOTOR2_PIN2, OTPT);
!e"i#$%&e'in(96(();
)
void $oop() {
18 | R o b o t a u t o n o m n C
'o(255,*255);
de$#+(1((();
'o(*255,*255);
de$#+(1((();
'o(*255,255);
de$#+(1((();
'o(255,255);
de$#+(1((();
)
void 'o(int speed,e-t, int speedRi'.t) {
i- (speed,e-t / () {
#n#$o'0"ite(MOTOR1_PIN1, speed,e-t);
#n#$o'0"ite(MOTOR1_PIN2, ();
)
e$se {
#n#$o'0"ite(MOTOR1_PIN1, ();
#n#$o'0"ite(MOTOR1_PIN2, *speed,e-t);
)
i- (speedRi'.t / () {
#n#$o'0"ite(MOTOR2_PIN1, speedRi'.t);
#n#$o'0"ite(MOTOR2_PIN2, ();)
e$se {
#n#$o'0"ite(MOTOR2_PIN1, ();
#n#$o'0"ite(MOTOR2_PIN2, *speedRi'.t);
)
)
19 | R o b o t a u t o n o m n C
Senzori de linie
)a sa ra#ana in ring tot ti#pul1 ro!otul tau are ne*oie de senzori de linie.
'oti <olosi doi senzori .doar in <ara/1 sau patru senzori .si in <ata si in spate/. Depinde de
strategia pe care ai ales"o.
Iti reco#and *ersiunea analogica a senzorilor de linie.
Daca nu ai deBa senzori de linie1 iti reco#and sa ii adaugi in cos acu#.
'entru #ontaBul senzorilor *ei a*ea ne*oie si de un set de suru!uri si piulite M%.
Senzori de distanta
)a sa isi *ada ad*ersarul1 ro!otul tau are ne*oie de senzori de distanta. 3it"ul are deBa
pre*azuta o <anta in zona <rontala si gauri pentru #ontare.
Senzorii de distanta S,arp sunt cei #ai potri*iti pentru acest gen de ro!ot pentru ca au
raspunsul <oarte rapid. Senzorii cu ultrasunet nu sunt <oarte e<icienti pentru su#o1 raspunsul
lor este relati* lent.
Senzorii de distanta S,arp sunt disponi!ili in trei *ariante1 in <unctie de zona in care sunt
e<icienti. E&ista senzori e<icienti intre 3 c# si >G de c#1 intre $G c# si 8G de c#1 si intre $5
c# si $5G de c#. In a<ara zonei in care sunt e<icienti1 *alorile senzorilor nu pot <i utilizate. Fa
<el1 ce senzori alegi depinde de strategia ta.
20 | R o b o t a u t o n o m n C
E5+L!CRE C$DULU!
int MOTOR2_PIN1 = 3;
int MOTOR2_PIN2 = 5; // declararea pinilor destinai motoarelor
int MOTOR1_PIN1 = 6;
int MOTOR1_PIN2 = ;
int i;
!oid set"p #$ %
pinMode#MOTOR1_PIN1& O'TP'T$;
pinMode#MOTOR1_PIN2& O'TP'T$;
pinMode#MOTOR2_PIN1& O'TP'T$;
pinMode#MOTOR2_PIN2& O'TP'T$;
(erial)*e+in #6,,$;
-
!oid loop #$ %
dela.#5,,,$; // setarea "n"i repa"s de 5 sec"nde /naintea pornirii pro+ram"l"i
int 0 = 1;
int c"l1 = analo+Read # 1$; //citirea !alorilor ret"rnate de sen1or"l de linie
int ir = analo+Read#,$; //citirea !alorilor ret"rnate de sen1or"li de linie
23ile #0 4 ,$ % // intrarea intr5"n 23ile in6init
int c"l1 = analo+Read # 1$;
int c"l2 = analo+Read # 2$;
int ir = analo+Read#,$;
i6#c"l1 7 1,, $ % +o#515,& 515,$; dela.#5,,$; // sen1or"l drept de linie este acti!at
si scanea1a
23ile #ir 7 1,, $% +o#15,& 515,$ ; ir= analo+Read#,$; --
i6#c"l2 7 1,, $ % +o#515,& 515,$; dela.#5,,$; // sen1or"l stan+ de linie este acti!at
si scanea1a
23ile #ir 7 1,, $% +o#515,& 15,$ ; ir= analo+Read#,$; -
-
i6 #ir 4 1,,$ +o#15,&15,$; // daca are oponent in 6ata a!ansea1a
else %
6or#i=1; i7=1,,,; i88$% +o#515,& 15,$; // daca n" are opponent scanea1a
int ir = analo+Read#,$;
i6 #ir 4 1,,$ *rea9; -
+o #15, & 15,$; dela.#5,$;
-
21 | R o b o t a u t o n o m n C
--
!oid +o#int speed:e6t& int speedRi+3t$ % // 6"nctiile care sc3im*; polaritatea
i6 #speed:e6t 4 ,$ % // motoarelor
analo+<rite#MOTOR1_PIN1& speed:e6t$;
analo+<rite#MOTOR1_PIN2& ,$;
-
else %
analo+<rite#MOTOR1_PIN1& ,$;
analo+<rite#MOTOR1_PIN2& 5speed:e6t$;
-
i6 #speedRi+3t 4 ,$ %
analo+<rite#MOTOR2_PIN1& speedRi+3t$;
analo+<rite#MOTOR2_PIN2& ,$;
-
else %
analo+<rite#MOTOR2_PIN1& ,$;
analo+<rite#MOTOR2_PIN2& 5speedRi+3t$;
--
22 | R o b o t a u t o n o m n C
+R$DUSUL #!"L
23 | R o b o t a u t o n o m n C