0% au considerat acest document util (0 voturi)
131 vizualizări23 pagini

Proiect: Robot Programat În C

Documentul prezintă noțiuni generale despre Arduino, inclusiv Arduino IDE, microcontrollere, senzori și un robot mini autonom. De asemenea, explică codul unui program Arduino și prezintă un produs final sub forma unui robot autonom.

Încărcat de

Patrick Schmiedt
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
131 vizualizări23 pagini

Proiect: Robot Programat În C

Documentul prezintă noțiuni generale despre Arduino, inclusiv Arduino IDE, microcontrollere, senzori și un robot mini autonom. De asemenea, explică codul unui program Arduino și prezintă un produs final sub forma unui robot autonom.

Încărcat de

Patrick Schmiedt
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd

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

S-ar putea să vă placă și