SlideShare a Scribd company logo
1 of 118
Download to read offline
IKASTETXEAN
ARDUINOA
“Can't buy what I want because it's free”- Pearl Jam
ARDUINOA IKASTETXEAN
0. HITZAURREA 1
1. KAPITULUA: ARDUINO FENOMENOA 2
1.1. Zer da Arduinoa? 2
1.2. Arduinoa ikastetxean 3
1.3. ZergatikArduinoa? 5
2. KAPITULUA: HARDWAREA 6
2.1. Arduino Uno-a 7
2.2. Sumarioa 8
2.3. Eskemak eta planoak 8
2.4. Elikadura 9
2.5. Sarrera-irteerak 9
2.5.1. I/O digitalak (eta PWM irteera analogikoa) 9
2.5.2. Sarrera analogikoak 11
2.5.3. Beste konexio-pinak 12
2.6. Komunikazioa 13
3. KAPITULUA: SOFTWAREA 14
3.1. Arduinoa instalatu 14
3.2. Arduino IDEa 19
3.2.1. Erreminta-barra 19
3.2.2. Menuak 20
4. KAPITULUA: PROGRAMAZIOA 26
4.1. Egitura 26
4.1.1. setup() 26
4.1.2. loop() 27
4.1.3. Funtzioak () 27
4.1.4. Giltzak {} 28
4.1.5. Puntu eta koma ; 28
4.1.6. Iruzkinak // 29
4.2. Aldagaiak 29
4.2.1. Aldagaien erabilera-eremua 29
4.2.1.1. Aldagai lokalak
4.2.1.2. Aldagai globalak
4.2.2. Aldagai motak 30
4.2.2.1. Char
4.2.2.2. Byte
4.2.2.3. Integer
4.2.2.4. Long
4.2.2.5. Float
4.2.2.6. Array
4.2.3. Konstanteak 33
4.2.3.1. True/flase
4.2.3.2. High/low
4.2.3.3. Input/output
4.2.4. Eragiketak 34
4.2.4.1. Konposizio-eragiketak
4.2.4.2. Konparaketa-eragiketak
4.2.4.3. Eragiketa logikoak
4.2.4.4. Eragiketa matematikoak
4.2.5. Zenbaki aleatorioak 38
4.2.5.1. randomSeed()
4.2.5.2. random()
4.2.6. Denbora-funtzioak 39
4.2.6.1. delay()
4.2.6.2. millis()
4.2.7. Fluxu-kontrola 39
4.2.7.1. if(){} else {}
4.2.7.2. for(){}
4.2.7.3. while(){}
4.2.7.4. do...while(){}
4.2.8. I/O digitalak 42
4.2.8.1. pinMode()
4.2.8.2. digitalRead()
4.2.8.3. digitalWrite()
4.2.9. I/O analogikoak 43
4.2.9.1. analogRead()
4.2.9.2. analogWrite()
4.2.10. Serie-funtzioak 44
4.2.10.1. Serial.Begin()
4.2.10.2. Serial.Print()
5. KAPITULUA: ARDUINOA KONEKTATU 47
5.1. Sarrera digitalak 47
5.1.1. Pull Up konexioa 48
5.1.2. Pull Down konexioa 48
5.2. Sarrera analogikoak 49
5.2.1. Hiru hariko sentsoreak 49
5.2.2. Bi hariko sentsoreak 49
5.3. Irteera digitalak 50
5.4. Irteera analogikoak 51
5.4.1.1. Kontsumo txikikoak < 40mA 51
5.4.1.2. Kontsumo handiagokoak > 40 mA 51
5.5. Kontrolagailuak 52
6. KAPITULUA: ARDUINOAREKIN PRAKTIKAK 54
6.1. Blink 55
6.2. Alarma bisuala 58
6.3. Inklinazio-detektorea 61
6.4. DYAko anbulantzia 64
6.5. Kandela 67
6.6. Potentziometro baten irakurketa 69
6.7. Kontatzailea 72
6.8. Solfeo de Morfeo 76
6.9. Led-a ordenagailutik agindu 79
6.10. Errelea 80
6.11. Motorraren kontrol digitala 83
6.12. Motorraren kontrol analogikoa 85
6.13. Serbomotor baten kontrola 88
6.14. Stepper-a 91
6.15. LCD pantaila 95
6.16. FSR presio sentsorea irakurtzen 98
6.17. Termometro digitala 102
6.18. Proiektua: Joystic batekin bi serbo eta laserra kontrolatu. 105
7. ERANSKINA 109
8. BIBLIOGRAFIA 110
1. Arduino fenomenoa
HITZAURREA
Eta guztiek jartzen didate aurpegi bera. “Arduinoa?” Eta, noski, pixka bat desanimatzen nau
zer den sinple esaten ez jakiteak. Hala, bada, kontu sakonagoetan sartu aurretik, arnasa firme
hartzen dut, tartetxo bat egin, eta “ezer ez” diot ahopean, “honelako gauza bat baino ez da”,
eskuarekin parafina pusketa baten tamainako karratutxo bat marraztuz.
Liburu honek irakurlea Arduinoaren erabilerara hurbiltzea du helburu. Elektronikaren nahiz
programazioaren oinarrizko ezagutzak dituenarentzako gida gisa sortu da, prototipoak diseinatu eta
eraikitzeko garaian lagungarri izango zaiona. Funtsean, hardware libreak niregan sortu duen
esperimentatzen jarraitzeko gogoa azaleratzen du, baliabide gutxi dituztenei ere zientzia eta
teknologia eskuragarri egiteko Arduinoak sortu duen bideari euskaraz adar txiki bat irekitzeko
ilusioa.
Arduinoa ikastetxean erabiltzeko gida hau osatzeko garaian, Interneten aurki daitekeen
informazio amaigabea antolatu, funtzionalena hartu, eta sinple eta labur azaltzen saiatu naiz zer den
Arduinoa eta zertarako erabil litekeen azaltzeko.
Ia informazio guztia http:/www.arduino.cc webgunetik edo bertan inspiraturiko manualetatik
aterea dago, eta, Creative Commons Attribution-ShareAlike 3.0 License. lizentziapekoa izaki, berriz
ere lizentzia horrekin argitaratua izan da.
1
1. Arduino fenomenoa
1. KAPITULUA: ARDUINO FENOMENOA
1. Zer da Arduinoa
Arduinoa prototipo elektronikoen oinarri izango den kode irekiko hardware- eta software-
plataforma bat da. Artista, diseinatzaile eta ikasle-irakasleentzat pentsatua dago, baita hobby gisa
objektu nahiz ingurune interaktiboak sortzea helburu duen edozeinentzat ere.
Nolabait esatearren, Arduinoa ingurunea senti dezakeen elementua da. Alde batetik,
sentsoreak eta hartzaileak erabiltzen ditu horretarako. Bestetik, erabiltzaileak bertan irauliriko
programaren aginduak jarraituko ditu; eta horren ondorioz, ingurunean eragingo du, bere
kontrolpean dituen argi, motor edo beste edozein eragile elektriko martxan jarriz. Beste era batera
esanda, Arduinoa gure begiak kontrolatzen dituen burmuina izan liteke; ikusteko gaitasuna du, eta
edonora begiratzeko ahalmena ematen digu.
Oinarrian, ATMEGA etxeko xx8 mikrokontrolagailua du. Hori plataformaren burmuina
litzateke, eta Arduino Programing Language (Wiring-en oinarritua) nahiz Arduino Development
Enviroment (Processing-en oinarritua) erabiliz programatzen da.
Arduinoan oinarrituriko proiektuak nahiz prototipoak guztiz autonomoak izan litezke, edota
PC edo memoriaren batean ejekuzioan dagoen edozein sofwarerekin komunika litezke (Flash,
Processing, MaxMSP, edo baita OpenOffice-ekin ere). Horrek prototipo ibiltariak, estatikoak edo
adierazleak osatzeko aukera eskaintzen du.
Zirkuitu inpresoa osatzen duten plakak aurrez fabrikan mihiztatuak eska daitezke, edo,
sarean zintzilikatua dagoen informazioa erabiliz, norberak ere mihizta ditzake.
Erreferentziako hardware-diseinua (CAD artxiboak) eskuragarri dago sarean; beraz, edonork
du aukera hardwarea bere kabuz eraikitzeko, baita dagoenaren gainean nahi dituen berrikuntzak
garatzeko ere.
Software eta hardware libreko plataforma honek mundu oso bat ireki dio prototipoak
laborategitik nahiz enpresetatik kanpo eraikitzeari.
2
1. Arduino fenomenoa
2. Arduinoa ikastetxean
Ikastetxeetan prototipo elektronikoen eraikuntza aurrera eramateko zegoen hardware
askearen gabezia zela medio sortu zen Arduinoa. Bereziki Hezkuntzan erabiltzeko sortu zela esan
liteke, nahiz eta urte gutxian bilakaera askoz ere zabalagoa izan duen.
Gida honek Arduinoa ikastetxeetan erabiltzeko baliagarri nahi luke izan, eta, bide batez,
irakaslea PBLra (Project Based Learning proiektuetan oinarrituriko irakaskuntza) hurbildu.
Liburuari jarraiki, ikasleak proiektu praktikoak gauzatuz garatuko du bere ikasketa, eta irakaslearen
lana proiektu horiek proposatzen, ebazten eta muntatzen laguntzea izango da.
Horretarako, Arduinoa erabiltzeko beharrezkoak izango ditugun kontzeptu teorikoez aparte,
liburuak Arduinoarekin eginiko oinarrizko muntaia sorta bat aurkezten du. Horien laguntzaz,
ikasleak nahiz irakasleak, muntaia horiek edo antzekoak eginez, ikasketa eta proiektu berriak gara
ditzakete.
Arduinoa hardware irekiko plataforma izaki, 300 pertsonatik gorako garatzaile taldea du, eta
milioika erabiltzaile mundu guztian zehar. Gida hau ikasgelarako erreminta bat baino ez da, bere
baitan Arduinoak duen potentzialaren argazki bat baino gordetzen ez duen gidaliburua. Erabiltzeko
interesa duenari bide bat eskaintzen dio, hasierako pausoetan sortuko zaizkion arazoak
konpontzeko. Ondoren, mundua zabala da, proposamenak amaigabeak, eta sarean informazio
preziatua aurki daiteke, automatikoa den ia edozer Arduino bitartez muntatzeko. Aztertzea eta
imajinatzea norberaren esku geratzen da, eta baita sortutakoa berriz sarean banatzea ere.
Liburuak PBL irakaskuntza-metodologia hiru puntu hauetan garatzen du:
Arduinoa. Ikasle bakoitzak Arduino erreminta eskuragarri izango du. Horretarako,
ikastetxeak aurrez mihiztatuta saltzen diren prezio baxuko Arduinoak eskuratu
beharko ditu, edo, liburuan agertzen den informazioari jarraituz, Arduino propioak
muntatu.
Horrela, ikasleak, ardura bere gain hartuta, ekipoa etxera eraman ahal izango du, eta,
ordenagailura duen konexioa erraza izaki, auto-ikasketa indartu.
Esperimentazioa. Ikaskuntza esperimentazioan oinarritzen da, non ikasleak nahiz
irakasleak akatsak izatea ia ezinbestekoa bilakatzen den eta akats horietatik denek
ikasten duten.
Ez da azterketa baterako lan egiten –nahiz ebaluazioa ikastetxe bakoitzaren esku
geratzen den–, proiektu, maketa edo prototipo funtzional bat eraikitzeko baizik.
Eginez ikasten da – Asthangaren sortzaile Pathavi-k dioen bezalaxe–. Ikastean, % 1
teoria da, eta % 99 praktika eta mugimendua.
Librea, forman eta funtzioan. Erreminta digitaletako hardwarea eta softwarea gure
orainaren eta geroaren parte dira, eta, neurri handi batean, horien erabilerak pertsona
nahiz gizarte moduan izango dugun bilakaera markatuko digu.
3
1. Arduino fenomenoa
Softwarea nahiz hardwarea erabiltzeak gure bizitzan zehar egunero aurkituko ditugun
elementu horiek hobeto ulertzen lagunduko digu, baina, guztiaren gainetik, hardware
eta software libreak erabiltzeak guztioi luzatuko digu hori egiteko aukera, eta
ahalbideratuko gure ideiak prototipatzea inongo traba legalik gabe.
Amaitzeko, esan beharrekoa da Arduinoa ez dela irakaskuntzan hardware- edo
software-plataforma soil gisa txertatzen. Hainbat irakasgaitan (teknologia, diseinua,
matematika, fisika eta arte digitala) kontzeptu konplexuak aztertu eta praktikara
eramango dituen irakaskuntza-metodologia gisa ere agertuko zaigu.
4
1. Arduino fenomenoa
3. Zergatik arduinoa
Merkatuan, beste mikrokontrolagailu-plataforma ugari daude, eta antzeko funtzionalitatea
eskain dezakete gehienek. Aukerak anitzak direla jakinda, ordea, hauek dira nire arrazoiak
ikastetxean erabiltzeko aukera egokiena Arduinoa dela pentsatzeko.
Merkea da. Beste mikrokontrolagailuekin alderatuta, prezio xumeagoa du. Aurrez
mihiztatua, Arduinorik erabilienak (Uno) 25 eurotik beherako kostua du, eta norberak
muntatutako Arduinoaren prezioa are merkeagoa da.
Merkatua. Taxuzko lan-baldintzetan muntatua izan da. Lizentzia librekoa izanik,
lizentzia-gasturik ez du, eta irabaziak lan egiten duenarentzat bideratzen dira, eta ez,
elektronikan askotan pasatzen den moduan, lizentziaren jabe diren enpresentzat.
Arduinoan egiten den edozein aldaketa merkaturatu daiteke, eta onura ekonomikoa lortu,
baldin eta berriz ere lizentzia irekian saltzen bada.
Multiplataforma da. Arduino softwarea Windows, Mac, OSX eta Linux sistema
eragileetan ejekutatzen da. Beste mikroprosezagailu-plataforma gehienak Windows edo
DOS sistema eragileetara mugatuta daude.
Programazio-ingurune sinple eta argia dauka. Arduino programazio-ingurunea
hasiberrientzat oso erabilerraza da, eta, aldi berean, ahalmentsua, erabiltzaile aurreratuek
zukua atera diezaioten.
Kode irekiko software garagarria du. Arduino softwarea edozein programatzailek
garatzeko irekia da. C++ lengoaian oinarrituriko liburutegiak garatuz, Arduinoaren
kapazitateak muga gutxi ditu.
Kode irekiko hardware garagarria du. Arduinoa ATMEGA xx8
mikrokontrolagailuetan oinarritua dago, eta gainerako modulu guztien CAD planuak,
Creative Commons Attribution-ShareAlike 3.0 License lizentziapean, sarean
argitaratuak daude.
Diseinatzaile ausartenek Arduinoaren bertsio propioa diseina dezakete, eta baita, betiere lizentzia
irekian, saldu ere; honela, Arduinoaren prestazioak nahiz garapena bultzatuko dituzte. Arduinoaren
plataformari hamaika funtzionalitate gehitu dizkio erabiltzaileen komunitateak oraingoz (wifia,
GPSa, GRSMa, Irudi detekzioa, Android konexioa...), eta kontaezinak dira oraindik garatu
dakizkiokeenak.
5
2. Hardwarea
2. KAPITULUA: HARDWAREA
Arduino asko aurki ditzakegu merkatuan. Gure Arduino propioa ere munta dezakegu,
horretarako jakintza nahikoa badugu. Baina badaude Arduino guztiak antzeko egiten dituen zenbait
ezaugarri, eta horiek aipatuko ditugu, nola eginda dauden ikustean.
6
2. Hardwarea
Arduinoaren hardwarea aztertzeko, Arduino Uno-a aztertuko dugu. Hau da azkena atera
duten modeloa, eta oraingoz prezio baxuan prestaziorik onena ematen duena. Ondoren,
erabiltzailearen esku geratzen da erabakitzea zein Arduino datorkion ondoen bere proiekturako,
tamaina, konplexutasuna, memoria edo diseinua kontuan izanda.
1. Arduino Uno-a
Arduino Uno-a Atmega 328(datasheet) mikrokontrolagailuan oinarrituriko sarrera-irteera
plaka programagarri bat da. Uno-a Arduinoetan azkenekoa da, eta Arduino plataformaren
erreferentzia bihurtu da, Arduino softwarearen 1.0 bertsioarekin batera.
14 sarrera-irteera digital ditu (horietako 6 PWM irteera analogiko gisa erabil daitezkeenak),
6 sarrera analogiko, 16 MHz-eko maiztasuna duen kristal oszilatzailea, USB konexioa, jack
elikadura, ICSP header-a, eta Reset pultsagailu bat. Funtsean, mikroa kontrolatu, elikatu eta
7
2. Hardwarea
ordenagailura erraz konektatzeko beharrezko guztia dauka.
2. Sumarioa
Mikrokontrolagailua ATmega328(datasheet)
Lan-tentsioa 5V
Elikadura-tentsioa 7-12 V
Elikadura-tentsioa (onargarriak) 6-20 V
I/O (sarrera-irteera) pin digitalak 14 (horietariko 6k PWM irteera ematen dute)
Sarrera analogikoak 6
I/O (sarrera-irteera) korronteak 40 mA
3.3V-eko pinaren korrontea 50 mA
Flash memoria 32 kB (horietatik 2 kB, bootloaderrak erabiliak)
SRAM 2 kB
EEPROM 1 kB
Erloju-maiztasuna 16 MHz
Tamaina 2,7 eta 2,7 hazbete
3. Eskemak eta planuak
EAGLE artxiboak Eagle_Desing.zip
Arduino UNO REV3 plakaren eskema
8
2. Hardwarea
4. Elikadura
Arduinoa USB bitartez edo kanpoko elikadura-iturri bitartez elika daiteke, eta berak igartzen
du automatikoki zein duen konektatua.
Kanpo-elikadura bitartez konektatzean, bi aukera ditugu. Plakak bistan duen 2.2 mm-ko jack
elikadura erabili, AC/DC (220v/9V) bihurgailu batez, edo bateria sorta bat erabili, horren konexioak
plakan dauden GND eta Vin pinetara konektatuta.
Kontuan izan plaka gehienez 6-20 V-era elika daitekeela, baina egokiena 7-12 V bitartean
elikatzea dela.
Elikadura-pinak hurrengoak dira:
VIN. Arduinora kanpo-elikadura bat konektatzeko pina da. Arduinoa pin honetatik edo
jack konexiotik elika daiteke, eta, azken horretatik elikatuz gero, Vin pina elikadura gisa
balia daiteke. Berezitasun bat besterik ez da, baina erabilgarri suerta liteke zenbaitetan.
5V. Plakak berak erregulaturiko 5V-eko irteera bat ematen digu. Tentsio- irteera hau oso
erabilia da plakara konektatuko ditugun sentsoreak elikatzeko garaian. Eroalea gorriz
kableatzea gomendatzen dut beti.
Pin hau elikadura-sarrera gisa erabiltzeak plakaren erregulatzailea by-passeatzen du, eta
plaka erre dezake. Ez esan, gero, abisatu ez nuenik!
3V3. Plakak berak erregulaturiko 3.3 V-eko tentsioa ematen digu. Gehienez, 50 mA-ko
korrontea hornitzen du.
5. Sarrera-irteerak
1. I/O Digitalak (nahiz PWM irteera analogikoa)
14 pin digitalak irteera nahiz sarrera digital gisa erabil daitezke, aurrez nola
deklaratzen ditugun. 5 V-ean lan egiten dute guztiek, eta pin bakoitzak GEHIENEZ 40 mA-
ko korrontea jaso nahiz eman dezake.
Oso ideia ona da IRTEERA gisa erabiltzen den edozein pinetan seriean 470 Ohm
edo 1 kΩ -eko erresistentzia bat jartzea.
Pin bakoitzak 20-50 kΩ bitarteko Pull Up erresistentzia bat dauka, baina berez
deskonektatua dago. Sarrera guztiak Pull Up erresistentzia bitartez kableatzea gomendatzen
9
2. Hardwarea
da. Aurrerago, liburuan zehar, kableatze modu hori ikusiko duzue.
Ezaugarri horiek komunak dira pin guztientzat, baina, horietaz aparte, pin batzuek
ezaugarri bereziak dituzte, eta ondoren zerrendatzen dizkizuet:
Serial: 0(RX) eta 1(TX). TTL serie-datuak hartzeko (RX) nahiz bidaltzeko (TX)
erabil daitezke pin hauek, Arduinoa edozein serie-dispositiborekin komunikatu
nahi denean.
Kanpo-interrupzioak: 2 eta 3. Pin hauek, trigger pultsu batez, interrupzio bat
programatzeko konfigura daitezke.
PWM: 3, 5, 6, 9, 10 eta 11. Pin hauek 8 biteko PWM irteera analogiko bat
programatzeko aukera ematen digute, analogWrite() funtzioa erabiliz.
OHARRA: PWM (pulse-width modulation)
PWMren funtzioa seinale periodiko baten pultsuen zabalera modulatzea da, hau da, seinale
horren lan-zikloa aldatzea. Oso baliagarria da, adibidez, DC motore baten abiadura-kontrola
egiteko. Seinale periodiko baten lan-zikloa edo Duty Cycle-a seinale horren parte positiboak
periodo osoarekiko duenzabalera-erlazioada.
analogWrite() funtzioak, 8 bit izaki, 0 eta 255 bitarteko zenbakiak onartzen ditu sarrera-
aldagai gisa. Arduinoak guk analogWrite() aginduan emaniko zenbakiaren proportzionala den 5V-
eko seinale karratu bat emango digu.
Hurrengo taulan aurki dezakezue analogWrite() funtzioaren aldagaia eta irteerako
tentsioaren batez bestekoaren arteko erlazioa.
analogWrite(pin,0) -> Duty Cycle 0 (Bat ere ez) -> 0V (Irteerakobatezbestekoa)
analogWrite(pin,64) -> DutyCycle 0,25 (Laurdena) -> 1,25V (Irteerakobatezbestekoa)
analogWrite(pin,128)-> Duty Cycle 0,5 (Erdia) -> 2,5 V (Irteerakobatezbestekoa)
analogWrite(pin,256)-> Duty Cycle 1 (Osoa) -> 5 V (Irteerakobatezbestekoa)
10
2. Hardwarea
Honahemenadibidebat,seinalekarratubatentzat:
Duty Cycle=Ton/TonToff  x100
-> 0V(Irteerakobatezbestekoa)
->1,25V (Irteerakobatez bestekoa)
-> 2,.5V(Irteerakobatezbestekoa)
->3,75V(Irteerakobatezbestekoa)
-> 5V(Irteerakobatezbestekoa)
LED: 13. pina. Plakan bertan txertaturiko led bat 13. pin digitalera konektaturik dago. Pin
horren balioa altua (HIGH) denean, led-a piztuta ikusiko dugu, eta balioa baxua (LOW)
denean,aldiz,itzalita.
Aurrerago ikusiko dugun bezala, oso erabilgarria egingo zaigu, Arduinoa ongi konektaturik
dagoenjakiteko.
2. Sarrera analogikoak
Arduinoak 6 sarrera analogiko ditu, A0 eta A5 artean izendatuak, eta bakoitzak 10 biteko
bereizmena ematen digu. A0-A5 pinetan sartzen dugun balio analogikoa balio digital bihurtzen dute.
Normalki, sarrerako tentsio maximoa 5 V-era erreferentziatua dute, eta horretan oinarrituta egiten dute
digitalerakobarne-konbertsioa, analogRead() komandoaerabiliz.
10 biteko bereizmenak 1024 digituko irakurketa
ahalbideratzendiosarreraanalogikobakoitzari.
analogRead() komandoak, automatikoki, sartzen zaion
tentsio-mailabakoitzari0tik1023rabitarteandagoenbaliobat
bueltatuko dio, eta zenbaki hori erabiliko dugu
programatzaileoksarrerandagoententsioainterpretatzeko.
11
Ton Toff
Ton
Ton
Toff
Toff
Ton
Toff
5 V -> 1023
3,75 V -> 918
2,5 V -> 612
1,25 V -> 306
0 V -> 0
2. Hardwarea
Esatebaterako, analogRead(3) komandoakhirugarrenpinairakurriondoren,611balioabueltatzen
baldinbadigu,badakigu2,5Vdauzkagulalehenengopinean.
OHARRA.Sarreraanalogikoarenerreferentziako tentsio maximoa 5 V da normalean, baina, zenbait
kasutan, tentsio-mailadesberdinaemangodiguten sentsoreak konektatuko ditugu, eta erreferentziako tentsio
maximoatxikiagoaizangoda..
Kasuhorietan,etaAREFpinaeta analogReference() funtzioaerabiliz,aldatuegindaitekebalio-mailahori.
3. Beste konexio-pinak
AREF: Sarrera analogikoetarako erreferentzia-tentsioa konektatzeko pina, erreferentzia 5 V
EZ denguztietan.
Reset: Pin hau LOW baliora eraman behar da mikrokontrolagailua erreseteatzeko. Normalki,
berez duen Reset botoia tapatzen duen Shield-en bat konektatzen baldin badiogu soilik
erabiltzenda..
OHARRA: Atmega328-aren pinen mappeoa begiratzea ondo etorriko litzaioke bereArduinoa
muntatunahiduenariedotaemanikoarizukugehixeagoateranahidionari.
12
2. Hardwarea
6. Komunikazioa
ATmega328-ak UARTTTL (5 V) komunikazioa ahalbidetzen du bere 0 (RX) eta 1 (TX) pinetan, baina
Arduinoak integratua duen ATmega16U2 txipak serie-komunikazio hori USB komunikazio gisa bideratzen du, eta
Arduinoa COM portuestandarrerakonektatzeaahalbideratzen.
Hau da funtseanArduinoaren eta beste mikrokontrolagailuen arteko desberdintasun nabarmenena:Arduinoa
edozeinordenagailutakoUSBportutikprogramatudaitekeela.
Birtute horretan sakonduz, Arduino softwareak serie-monitore bat dakar integraturik, eta, bertan, denbora
errealean,Arduinoarekinkomunikazioabideradaiteke,halanola Arduinoarensarrera-irteeren balioa PCan ikusi
edotaPCtikArduinorainformazioaedoaginduakbidali.
OHARRA: Arduinoak USB portua babesteko fusible bat dauka plakan integraturik.500mA-tik gorako
kontsumoaduenean,etaUSBportuababestealdera,ArduinoadeskonektatuegingodaPCtik.
13
3. Softwarea
3.KAPITULUA:SOFTWAREA
1.Softwarea instalatu
Arduino programazio-inguruneak (IDE) erraza egiten du kodea idaztea eta, ondoren, I/O plakara bidaltzea.
Windows, Mac OS X eta Linux-pean egiten du lan. Java lenguaian garatua dago, eta Proccessing software irekian
oinarritua.
Saretik jaitsi daiteke, beti bezala eskuragarri www.arduino.cc webgunean.. Uneko azken bertsioa erabiliz
egindutondorengoinstalazioa..
Jarraian, azalduko dut Arduino programa nola instalatu, ondoren zuen Arduino plaka nola konektatu eta
lehen programa nola jarri funtzionamenduan. Gida hau Arduino Uno-a Windows XP-pean instalatzeko dago
prestatua. Barianteak asko izan daitezke sistema eragileetan; hala, bada, instalatzeko garaian beste sistema-eragile
batenaurreanaurkitzenbazarete,informazioahurrengoesteketanduzue:
Linux-eninstalatu -> http://www.arduino.cc/playground/Learning/Linux
MacOSX-eninstalatu -> http://arduino.cc/en/Guide/MacOSX
Windows-eninstalatu -> http://arduino.cc/en/Guide/Windows
a)LortuArduinoplakabatetaUSBkablea(begiratukonektoreak!)
b) Jaitsi Arduinosoftwarearenazkenbertsioa,etainstalatu.
Softwareajaitsiostean,deskonprimatuartxiboa.
14
3. Softwarea
Ondoren,eramanArduinox.x karpetaosoa C:/Archivosdeprograma/ karpetara.
Azkenik,eginArduinoexekutagarriarilasterbidebatmahaigainean.
d) Konektatu Arduino plaka, eta instalatu Driverrak.
Arduino plakaren funtzionamendua egokia izan dadin, Driverrak instalatu beharra dago. Ondoren, irudi
bidez,Driverhoriekinstalatzekopausoaklistatukoditut.
d) Ireki Arduino IDEa, eta kargatu Blink programa.
Arduinoa USB portura konektatzean, hardware berriaren morroia abiatuko zaigu. Driverrak eskuz
instalatuko ditugunez, esan “ez” windows updatera konektatzeari. Aukeratu, ondoren, instalazioa
kokalekujakinbatetik egitea.
15
3. Softwarea
Arakatu Arduinoa instalatu dugun karpeta, eta aurkitu haren barruan Drivers karpeta.
Kontuan izan EZ dudala FTDI USB Drivers karpeta aukeratu. Hori bertsio
zaharragoentzat erabiltzen da.
“Ezikusiarena egin” zertifikatua eskatzen duen leihoari, eta instalatu Driverrak.
16
3. Softwarea
Azkenik, kontuan izan Arduino softwareak ez duela COM portua automatikoki
aurkitzen eta, beraz, eskuz sartu behar diogula Arduinoa konektaturik dagoen
portuaren zenbakia. Bestela, komunikazio-errore oso ohiko bat emango digu.
Arduinoa zein COM portutan dagoen konektaturik jakiteko, aurkitu gailu-
kudeatzaile menuan COM/LPT portuen lista, eta begiratu zein den gure
Arduinoaren portua.
17
3. Softwarea
Behin jakinda gure Arduinoari COM4 portua egokitu zaiola, joan Arduino IDEra,
eta aukeratu portu hori Tools / Serial Port sailean. Orain, ongi konpilaturiko edozein
programa karga genezake Arduinoan. Nik BLINK (dir-dir) programa kargatzea
aholkatzen dut. Aurrerago, sakonago azalduko dut programa hori.
Programa Arduinora ondo kargatu den edo ez jakiteko, nahikoa da hurrengo pausoak
jarraitzea.
Plakako Led-ak dir-dir egin behar du 1000 milisegundoko maiztasunaz.
Programan delay(100) konstantea 100era jaitsi, eta, kargatu ondoren, plakako Led-
ak dir-dir egin behar du 100 milisegundoko maiztasunarekin. Azkarrago, alegia.
18
3. Softwarea
2. Arduino IDEa
Arduino IDEa (Integrated development environment) programazio-software bat da.
Programazio-software gehienak bezala, argia izatea du helburu, eta bertan idatziko diren
Arduinorako programek duten zailtasuna ez areagotzea. Hori horrela, nahiko azkar egingo dugu
software hau erabiltzeko gida labur bat.
1. Erreminta-barra
Verify/Compile
Idatziriko kodea aztertzen du, akats bila. Konpilatzaileak erroreren bat aurkitzen
badu, ezin izango da kodea Arduinora igo.
19
3. Softwarea
Upload to I/O Board
Idatziriko kodea Arduino plakara igotzen du. Gogoratu igo aurretik gordetzea.
OHARRA: Arduinora programak igotzea erraza bada ere, behin Arduinoan dagoen
programa ordenagailura jaistea EZINEZKOA da. Horrek kargatzen ditugun programa guztiak
aurrez gordetzea zein garrantzitsua den erakutsi beharko liguke. Ez esan, berriz ere, abixatu ez
nuenik!
New
Errutina edo programa berri bat kargatzen du. Sketchbook (programa lista)
bistaratzen du, han dagoen adibideren bat kargatu nahi izanez gero.
Save
Uneko programa gordetzen du.
Serial Monitor
Arduino plakatik USB bitartez ordenagailura bidaliriko datuak bistaratzen ditu.
Aldiz, ordenagailutik Arduinora datuak bidali nahi izanez gero, testua idatzi, eta
SEND botoia sakatu behar da.
2. Menuak
Import Library. Idazten ari garen programari liburutegi bat gehitzeko erabiltzen
dugun komandoa da. Programa-errutinari funtzionalitate berriak ematen dizkio, baina, aldi
berean, haren tamaina handiagotzen du. Liburutegia inportatu ondoren, kodearen hasieran
#include gehitu behar da.
OHARRA: Liburutegi-kode bat programa nagusiago bat garatzeko erabiliko den
azpiprograma talde bat da. Liburutegiek programaren atal edo egiteko berezi baten kodea eta
datuak gordetzen dituzte.
Horrek programa nagusitik liburutegiek duten kodeari deiak egitea ahalmentzen du,
programa nagusian guztia programatzen ibiltzen jardun beharrean.
Adibide nabarmena dira aparailu desberdinekin komunikatzeko sortzen diren kode-
liburutegiak. Demagun GPS berezi batekin komunikatzeko protokoloa nahiz kodea
liburutegi batean gordeta dugula. Norbaitek GPS horrekin komunikazio-errutina bat osatu
nahi badu, ez dauka kode guztia idazten hasi beharrik. Nahikoa luke liburutegia inportatu eta
20
3. Softwarea
haren funtzioak erabiltzearekin.
http://www.ladyada.net/library/arduino/libraries.html
Show Sketch Folder. Programa edo errutina direktorioa bistaratzen du. Hor
gordetzen dira guk aurrez eginak ditugun programa guztiak.
Add File. Gure programa nagusiari errutina bat gehitzen dio. Horrek proiektuei
artxiboak gehitzea ahalbideratzen du. Errutina berria fitxa berri batean irekitzen da.
Hurrengo adibidean, lau artxiboko programa nagusi bat duzue.
21
3. Softwarea
Auto Format. Honek gure kodea formateatzen du.
OHARRA: Zer da kodea formatu onean mantentzea? Beharrezko oharrak jartzea, edo
gehiegi ez jartzea, eta funtzio edo atal desberdinak egoki tartekaturik edukitzea da. Denboran atzera
egindako kodea edo beste norbaitek eginikoa egoki formateaturik ez izateak burukomin handiak sor
liezazkiguke, eta sortzen dizkigu sarritan.
Kodea formatu onean edukitzea azpiko arropa egokia izatea bezalakoa da; ez da ezinbestekoa,
ezinbestekoa bihurtzen den arte.
Archive Sketch. Kodea gorde, karpetaratu eta konprimatu egiten du; eta edozein
foro, blog edo tutorialetan zintzilikatzeko modu egokian paketatzen du.
Board. Erabiltzen ari garen Arduinoa aukeratu behar da lista honetan. Arduino
softwareak ez du berak bakarrik ezagutzen plaka; hortaz, plaka desberdin bat konektatzen
dugun bakoitzean, kontu izan behar da egokia aukeratzeko. Bestela, ez da komunikaziorik
izango .
22
3. Softwarea
Serial Port. Gure ordenagailuak dituen serie-konexioko Arduino guztiak bistaratzen
ditu.Tools menua luzatzen dugun bakoitzean, bere kasa aktualizatzen da. Windows-en
COM1 edo COM2 balioa hartzen du serie-konexioa duten gailuentzat, eta COM4, COM5,
COM6 edo handiagoa USB konexioa duten gailuentzat.
Kontuan izan programa kargatzeko garaian portu egokia aukeratu behar dela;
horretarako, gailu-kudeatzailea erabili.
Programmer. Gure Arduino plakaren bootloaderra grabatu nahi dugun kasuan
bakarrik erabiliko dugu aukera-lista hau. Kasu oso aurreratua izaki, kontzeptu batzuk
gainetik aipatuko ditut, eta kasu praktiko batera mugatuko dut azalpena.
Gehiagorako, kontsultatu; http://www.ladyada.net/learn/avr/programmers.html
Arduino mihiztatuak erabiltzen ari zaretenok ez duzue tarte honen beharrik.
Mikro batekin komunikatu nahi dutenek beharrezko dute “programmer” bat. Beraz,
oso garratntzitsua izango da mikroak eta Arduinoak izango duten konexio mota (Serie TTL,
USB, portu pareloa, etab.). Programmer mordoa daude aukeran, baina nagusienen
ezaugarriak aztertuko ditut.
23
3. Softwarea
ISP (In sistem Programming) → Programazio mota honekin txipa zirkuitutik atera
gabe programa daiteke.
Sistema honetan oinarritzen dira Arduinoa programatzaile gisa erabiltzeko aukera
guztiak; bai AVRa, bai USBtiny-a ere. Horiek komunikazio-protokoloan eta -bidean bakarrik
desberdintzen dira; batean TTL seriea, eta bestean USB.
Guk hau guztia ez dugu sumatuko; izan ere, plakak berak du USB-SerieTTL
bihurgailu bat, eta, beraz, ez dugu Arduinoa programatzean programmer funtziorik erabiliko.
Baina bada kasu bat, nahiko orokorra gainera, Arduinoa Txip programatzaile gisa
erabiliko duguna. Hori Arduino berriak geuk egiterakoan da.
Baldin eta Arduinoa geronek mihiztatu nahi badugu, bi aukera ditugu Atmega 168-a,
adibidez, erosteko garaian: bootloaderra dakarrena erosi edo bootloader gabekoa erosi.
OHARRA: Bootloaderra abio-gestore bat da, programa nagusia martxan jarri dadin
baimentzen duena, eta guztiz aparte programatu eta grabatzen da. Gehienetan babes-neurriak izaten
ditu, aparailuaren martxa desegokiak edo aldaketak ekiditeko.
Baldin eta bootloader gabeko Atmega 168 txipa erosten badugu (kasurik orokorrena eta
merkeena), abio-gestorea grabatu beharko diogu lehenengo, eta, horretarako, gure Arduino Uno-a
erabil dezakegu.
Arduino Uno-a erabili beharrean beste programatzaileren bat erabili nahi badugu, egoki
aukeratu behar dugu.
Arduinoa, gure kasuan, programatzaile gisa erabilita, gai izango gara guk sortu nahi dugun
Arduino berriaren txipari bootloaderra grabatzeko.
24
3. Softwarea
Burn bootloader. Aurreko kasuari jarraiki, guk mihiztatu beharreko arduinoaren
txipari (Atmega 168 da orokorrena) bootloaderra grabatzeko agindua ematen dion
komandoa da.
Gogoratu kasu honetan board atalean plaka egokia aukeratu behar duzuela.
Arduino Uno-a kasu honetan programatzaile gisa ariko da lan egiten, eta helburuko plaka
Atmega 168-a izango da (Diecimila) gure kasuan.
25
4. Programazioa
4.KAPITULUA:PROGRAMAZIOA
Arduinoaren programazioa ez da C lengoaiatik asko desberdintzen. Hortaz, lengoaia honetara ohituta
zaudetenoi ezagunak egingo zaizkizue hurrengo kontzeptutatik asko; eta besteoi, berriz, animo. Programazioak ez du
oinarrizkoezaguerahandirikbehar,logikanahizkuriositatepixkabatnahikoadiraiaedozeraparatumartxanjartzeko.
Arduinoa programazio-jakintza gutxi duten erabiltzaileentzat egin zen bereziki, baina, C lengoaian
oinarriturikoaizaki,garatzekobideakinfinituakdira.
1.Egitura
Arduino programazioaren lengoaiaren egitura nahiko sinplea da. Bere barruan instrukzioak gordetzen
dituztenbifuntzionagusitanbanatzenda: voidsetup() eta voidloop().
Adibidea
1.setup()
Programanexekutatzendenlehenfuntzioada,etaBEHINbakarrikexekutatzenda.Hurrengolanak
hartubehardirafuntziohonetan.
Programanerabilikodiren aldagaiak deklaratu.
pinMode()-a erabiliz, pinei beren egitekoa finkatu: edo sarrera (INPUT) edo
irteera(OUTPUT).
Serie-komunikazioakabiatu. Serial.begin(abiadurabaudio/s)
Adibidea: Programa honek serie-komunikazioaren abiadura 9600 baudio/s-ra mugatzen du, eta 13. pina
irteera-pinaizangodelaadieraztendu.
26
4. Programazioa
OHARRA: Serie-komunikazioak abiatzeko garaian (Arduinoaren datuak ordenagailura pasatzeko
ezinbestekoa),konstantebatpasatzenzaioabiaduragisa.
Baudioak komunikazio-egoerabatenaldaketakopuruaadierazikodigu,eta,beraz,baudi/s-akezdirabit/s-en
berdinak,komunikazio-saiobakoitzeanbitbatbainogehiagobidaliedoharbaitaiteke.
Hori horrela, esan beharra dago 9600 baudio/s-ko abiadura dela ia beti erabiltzen dena, serie- komunikazio
azkarnahizeraginkorbatbermatzenbaitu.
2.loop()
Programan ondoren exekutatzen den funtzioa da. Funtzio honen kodea behin eta berriz
exekutatzen da, bukaerarik gabe. Funtzio hau da Arduino programa guztien nukleoa, eta berak egiten du
lanikhandiena.Hemenjoangodiraidazketa,irakurketa,konparazio,eragiketaetaantzekoakzioguztiak.
Adibidea
3.funtzioak()
Deiaegindakoan(void)exekutatzendirenkodeakdira.Programanerrepikatzenden kodea ez
erabiltzeko sortzen dira. Funtzio bat deklaratzean, lehenengo, bueltatuko duen balioa deklaratzen da (int,
foat,..);gero,funtzioarenizenadeklaratzenda,deitzeanpasabeharkodizkiogunparametroekinbatera.
Adibidea
Aurrerago,programanzeharfuntziohaunahiadinaaldizdeitudaiteke.
27
4. Programazioa
Adibidea
4. Giltzak {}
Giltzekfuntzio-blokearenhasieraetabukaeramarkatzendigute.Giltzaguztiekbikoteanetorribehar
dute;irekierakogiltzaguztiek,beraz,itxierakobatbeharduteeduki.
Arduino IDEak badu giltza-balantzea txekeatzeko modu berezi bat ere.Aukeratu irekierako giltza
bat,etasoftwareakberakargitukodu nonduenitxierakoa.
Adibidea
5.Puntuetakoma; .
Deklarazio bakoitzaren ondoren jarri beharreko sintaxia da.. Programaren elementuak banatzeko
erabiltzen da. Puntu eta koma bat ahazteak konpilazio-akatsa emango dizu, eta ezingo duzu programa
Arduinoraigo.
Ohartuiruzkinenondorenezdagoela(;)puntuetakomajarribeharrik.
Adibidea
28
4. Programazioa
6.Iruzkinak//
Programa guztiek behar dituzte iruzkinak. Horiek programaren nondik norakoak esplikatuko
dituzte, eta nahiz eta ez izan kodea –ez, behintzat, ondoren konpilatuko den kodea – ezinbestekoa da
programaongiestrukturatzekogaraian.Etorkizunerako,memoriagisaosobaliagarriaksuertatzendira.
Zenbait programatzailek –gehienek esango nuke nik– iruzkinik gabeko kodea ilargirik gabeko
eguzkia bezalakoa dela diote; argituko gaitu gehienetan, baina gehien behar dugunean, beste nonbaitera
egingoduargia,etaezdugujakingonora,ilunpetanutzigaitueta.
Iruzkinak beharrezko ikusten ditugun aginduetan bakarrik jarriko ditugu; programaren helburuaz
ezer ez dakien baina kodea uler dezakeenak laguntzarako izango lituzkeen tokietan bakarrik. Iruzkin
gehiegikiruzkinenbalioaezerezeanuztendute.
Zentzuak,praktikaketabesteiruzkinakirakurtzeakerakustendute,azkenean,nolaegokituiruzkinak
programari.
Adibidea
2.Aldagaiak
Aurrerago programak erabiliko duen balio numeriko bat gordetzeko forma bat da aldagaia. Izenak ongi
adierazten duen moduan, balioz aldatuz doazen zenbakiak dira, konstanteak ez bezala, horien balioa ez baita inoiz
aldatzen.
Aldagaiak deklaratua izan behar du beti, eta, ondoren, programatzailearen esku geratzen da hasierako balio
bat ematea. Aldagai bat deklaratzeak bere baitan gordeko duen balioa zein motatakoa izango den esatea dakar (int,
long, float,...), lehenengo, eta aldagaiari izen bat ematea, ondoren. Deklarazio hori programa guztian zehar behin
bakarrikeginbeharda,etaaldagaiarenbalio-aldaketa,aldiz,programannahiadinaaldizgertadaiteke.
1.Aldagaienerabilera-eremua
Aldagaiak, non deklaratzen diren, bi motatakoak izan daitezke, globalak edo lokalak.
Aldagaiadeklaratzekogaraian,kontuanizannonerabilikoduzuen,eta,horrenarabera,eraglobaleanedoera
lokalean deklaratu. Dudak baldin badituzue, emaiozue pasaporte anitza; egin aldagai globala, eta arazo
gutxiagoizangoduzue.
1.Aldagaiglobalak
Programabatekoedozeintokitankontsultatunahizerabildaitezkeenaldagaiakdiraaldagai
globalak.Programarenhasierandeklaratzendira, setup() funtzioarenaurretik.
29
4. Programazioa
Adibidea
2.Aldagailokala
Aldagai lokalak funtziobatenbarruanedo for lazobatenbarruandeklaratzendiren
aldagaiakdira..Deklaratudirenfuntzioarenbarruanbakarrikirakuredoerabildaitezke.Horrek
programa berean, funtzio desberdinen barruan, izen berdineko baina balio desberdineko bi aldagai
izateaahalbidetzendigu.
Adibidea
2.Aldagaimotak
1.char
Karakterebatgordetzenduberebarnean.KarakterehoriASCII kodekokaraktere
batizangoda(Adibidez: a, b,c, H, &, Ñ,....).Osoegokiadahitzakgordetzeko.
AldagaiarenASCII karaktereabierataragordedaiteke:karaktereberaemanez
30
4. Programazioa
kakotxarteanedotakarakterearidagokionbaliodezimalaemanez.
char aldagaiakerabiltzerakoan,osobaliagarriaizangozaizueASCIItaula:
2.byte
Komarikgabekoeta 8bitekobalionumerikobatgordetzendu.Beraz, 0 tik 255
artekozenbakiabeharduizan,ezhandiagoaeztxikiagoa.
byte angelua =180; //angeluaaldagaiabytemotakoadeladeklaratzendu
3.int-OSOA-
Komarikgabeko 16 biteko(2byte)balionumerikobatgordetzendute,zenbaki
31
4. Programazioa
OSOA deiturikoa.Beraz, -32768 tik 32767 artekozenbakiabeharduizan,ezhandiagoaez
txikiagoa.
int luzera =1550; //luzeraaldagaiaint motakoadeladeklaratzendu
OHARRA: Zenbaki osoek ez dute komarik. Sentsoreen irakurketak (int) batean gordetzean koma galtzea
ekarrikodu.
Demaguntenperatura-sentsorebatek 3,8V-ekobalioaematendigula.Baliohori int =tenperatura;aldagaian
sartzenbaldinbadugu,automatikoki 3 bihurtukodelajakinbehardugu.
Osoaldagaierabiliakdira,memorianespaziogutxierabiltzendutelako,etaberenartekoeragiketakosoazkar
egitendirelako.Aldiz,sentsibilitatehandiagoabehardugunkasuetan, float aldagaiakerabiltzenikasibeharkodugu.
4.long
Komarikgabeko 32 biteko(4 byte)balionumerikobatgordetzendute. Beraz,
-2146483648 tik 2147483647 artekozenbakiabeharduizan,ezhandiagoaeztxikiagoa.
long segundoak =900050; //segundoakaldagaialong motakoada
5.float
Komadunzenbakiakgordetzekoerabilikodiraaldagaihauek.Komaflotantegisa
deklaratzenditu,etaprogramakbeharrezkoprozesuaemangodieeragiketakegiteko
garaian. 32 biteko(4byte)baliomoduangordetzendira.Beraz, -3.4028235E-38 tik
3.4028235E38 artekozenbakiabeharduizan,ezhandiagoaeztxikiagoa.
float tenp =18.14; //tenpaldagaiafloatmotakoadeladeklaratzendu
Adibidea
6.array
arrayakzenbaki-zerrendabatdira.Arrayarenbarnekozenbakiakbyte,int,long
edo float motakoak izan daitezke. Zenbaki-lista bat izatean, oso garrantzitsua da bai zein balio sartu
dugunzenbakibakoitzean,baitazenbakihorrekzerrendanduenposizioaere.
arrayadeklaratzekogaraian,zeinzenbakimotazosatuadagoenesangodugu,eta
32
4. Programazioa
zenbat zenbakiz osaturik dagoen, ondoren. Kontuan izan – eta honek nahaste askotara bideratzen
gaitu– 0posizioalehenengoposizioadela.Alegia, num[4] array batek5zenbakiizangoditubere
barnean,0-1-2-3-4posizioetan.
int num[4] ={0,0,0,5,0} //numaldagaia5posiziokoarraygisadeklaratzendu,etabalioakeman.
arrayaribalioakematekonahizbertakobalioaklortzeko, nahitaezkoadazein
posiziozarigarenesangodigun indizea adieraztea.
num[2] =10; //numarrayaren3.posizioan10zenbakiasartzendu.
Honelageratukozaigu,beraz,gure arraya.
arrayetikbalioakirakurtzekogaraianere,indizeaerabilikodugu.
x=num[3]; //xaldagaiarenbalioa5izangodaorain(x=5).
3.Konstanteak
Arduinoprogramakaurrezdefiniturikozenbaitkonstanteditu.Programakirakurterrazagoakegiteko
erabiltzendira.
33
4. Programazioa
1.TRUE/FALSE
Egoera logikoak adierazten dituzten konstante BOOL-earrak dira. FALSE - 0 - gisa
definitzenda,eta TRUE - 1-gisa..
Adibidea
2. HIGH/LOW
Konstante hauek pinen egoera altua edo baxua adierazten digute. HIGH egoera altu gisa
definituadago,etaLOWegoerabaxugisa.Bakoitzaktentsioelektrikobatdaukaberari
lotua.Osoerabiliakdira programazioan.
HIGH-> ON (5V) -> 3V–5V artean
LOW-> OFF(0V) -> 0V -1,5V artean
Kontuan izan sarrera digital baten irakurketa egiten ari garenean arduinoak
HIGH moduan hartzen dituela 3V-etik gorako tentsioak, eta LOW gisa 1,5V-etik
beherakoak. Tartean geratzen diren tentsioak (1,5V-3V) ezezagun moduan hartzen
ditu, eta ez ditu ulertzen balio logiko gisa. Erantzuna edozein izan daiteke kasu
horietan.
Adibidea
3. INPUT/OUTPUT
pinMode() funtzioak erabiltzen dituen konstanteak dira, pin digitalek SARRERA edo
IRTEERAgisalanegingodutendefinitzeko.
Adibidea
4.Eragiketak
Arduinoaprogramatzekogaraian,hurrengoeragiketaaritmetikoakerabiltzendira.
34
4. Programazioa
Kontuan izan eragiketaren erantzuna oso baldintzatua dagoela eragiketan erabiltzen diren eragile
motekin.
OHARRA: Eragiketaren emaitza erabiltzen diren eragileen mota berekoa izango da. Demagun 9/4
eragiketa egiten dela. Erantzuna 2 izango da, eragileak 9 eta 4 zirelako (OSOAK) eta erantzuna ere OSOA izango
delako,(2),etaezfloat(2.25).
Eragileak zenbaki mota desberdinetakoak baldin badira, erantzuna zenbaki kota luzeenekoa izango da.
Demagun9/2.4eragiketadugula.Erantzunafloatmodukoaizangoda,hots,(3.75),bietatikluzeena(4byte).
Aldagai baten izatea aldatzeko, cast operazioa erabiliko dugu. Hona hemen float bat int bihurtzeko era erraz
bat.
Adibidea
1. Konposizio-eragiketak
Osoerabiliakdira for() {}lazoetan,kontrol-aldagaiarenaldaketaprogresiboaegiteko.
2.Konparaketa-eragiketak
Oso erabiliak dira if() {} deklarazioetan, kondizio jakin bat egiazkoa ala gezurrezkoa den
jakiteko.
35
4. Programazioa
3.Eragiketalogikoak
ETA(&&), EDO(||) eta NOT(!) eragiketalogikoakdira.Konparaketataldeetan
erabiltzen dira gehienetan, bi kondizio batera, biak bakanean, edo bietatik bat ere betetzen ez den
ziurtatzeko.
4.Matematikoak
Eragiketamatematikoohikoenakditugu,lehenengo.
Balio-tarteaaldatzekoeragiketak,ondoren;osoerabiliakSENTSOREENirakurketak
egitean.Lehenengo,mappeo-aikusikodugu,balio-tarteaaldatzekoosoeragiketaerabilia.
36
4. Programazioa
Ondoren, estutzea, constrain() ikusikodugu,balio-tartejakinbatetikkanporairtetendiren
balioak mespretxatzekoosoerabilia.
OHARRA: Sentsore bat irakurtzen dugun unean, Arduinoak bere barnean duen konbertsore analogiko-
digitalak 10biteko balio-tartean dagoen balio batematendio,alegia, 0tik 1023 artekozenbakibat.Horrek 5mV-eko
sentsibilitateaematendioirakurketari,baldin 5V-ekoerreferentziarekinlaneanaribagara.Horidakasurikohikoena.
Ondoren,zenbakihoritratatuetairteeraanalogikobateraeramannahibaldinbadugu,osopresenteizanbehar
dugu irteera analogikoek duten balio-tartea 8 bitekoa dela, alegia, 0tik 255 arteko zenbakiak bakarrik onartzen
dituztela.
Beraz, bi balio-tarteen arteko konbertsio bat egitea ezinbestekoa da; bestela, okerreko irakurketa-idazketa bat
egitenarikogara!!
Badira eragile batzuk konbertsio hau egiteko, eta aurrerago aztertuko ditugu; baina bada oso erabilia den
konbertsioazkarbatere.
37
4. Programazioa
Bibalio-tarteenmaximoak 1024 eta 256 direla jakinda,nahikoa da balio-tarte altukoirakurketaguztiak /4
egitea,etalistoizangodugu 10biteanegindugunirakurketaren 8bitekoproportzionala.
5.Zenbakialeatorioak
Zenbait aplikaziotan beharrezko izango ditugu zenbaki aleatorioak. Demagun loteria-makina bat
diseinatunahidugula,edotakolorealeatoriozpiztukodenLedargibat.Kasuhorietan,programazsortubehar
dituguzenbakialeatorioak,eta,ondoren,irteeretaratransmititu.
Arduinoakezduzenbakialeatorioaksortzekoerremintapropiorik,bainaharenbifuntziojakinerabil
ditzakegu zarata elektrikoa neurtzeko, eta horiek emango digute zenbaki aleatorioa (random) sortzeko hazia
(seed).
analogRead() funtzioa da horretarako gehien erabiliko duguna. Konektatu GABEKO edozein
sarrera analogiko hartuko dugu, eta bertan dagoen zarata elektrikoa erabiliko dugu zenbaki aleatorioak
sortzeko. Hori bezalaxe, milis() funtzioa ere erabil genezake, eta zenbaki aleatorioen sekuentzia
errepikatuanahi dugunean,baita konstante batere.
Bi funtzio erabili behar dira hori aurrera eramateko: lehenengo, randomSeed() funtzioa, hazi
aleatorioasortzeko;ondoren, random() funtzioa,zenbakialeatorioasortzeko.
1.randomSeed()
randomSeed(analogRead(1)); //Zenbakialeatorioasortukodu1.sarreraanalogikokozaratarekin.
//Parametro gisahaziasartubeharzaio; analogRead(),edo milis()
//edo konstantebat.
2.random()
random(100,200); //Parametrogisazenbakialeatorioazeinzenbakitartetannahidugun
//esanbehardiogu;kasuhonetan100eta200artekozenbakialeatorioa
//bueltatukodigu.
38
4. Programazioa
Adibidea
6.Denbora-funtzioak
Oso erabilia, lehenengoa behintzat, bi akzioren artean denbora-tarte bat itxarotea nahi dugunean.
Ikusditzagun,bada,delay()etamillis()funtzioak.
1.delay()
Gureprogramapausatukoduparametroanadieraztendizkiogun milisegundoetan zehar.
delay(1000); // 1sg itxarongodu
2.millis()
Arduinoa programa exekutatzen hasi denetik zenbat milisegundo pasatu den adieraziko
digu.Zenbakihaugainezkatuegingozaigu,9batordupasaondoren.
value= millis(); //Sartu value aldagairaprogramahasidenetikpasatudendenbora
7.Fluxu-kontrola
1.if(baldintza) { } .... else{ }
if sententziak pasa zaion baldintza egiazkoa den begiratzen du, eta, hala bada, giltza artean
dauden aginduakbetetzenditu.Bestela, else-nkakotxenarteandagoenaegitendu.
else gabeko sententzia bada eta if-en baldintza ez baldin badu betetzen, ezer egin gabe
programanaurreraegingoduhurrengopausuraarte.
else sententzia guztiz hautazkoa da, beraz. if edo else baten barruan beste nahi adina if ..
else sententziajargenitzake.
39
4. Programazioa
Adibidea
2.for (aldagaiahasieratzea,baldintza,aldagaiarenaldaketa ) { }
for sententziagiltzenartean{}gorderikoagindutaldebatzenbaitetanerrepikatzeko
erabiltzenda.Birabakoitzeanaldatukoden aldagai baterabiltzendagehienetan, hariketa
baldintza beteeta lazoageratzenduenarte.
Aldagai lokal baten edo gehiketa kontatzaile baten hasieratzea egiten da, lehenbizi, eta
behinbakarrik,gainera.Aginduakbetetzenditu,etalazoaamaitzenduenbakoitzean,baldintza
betetzenotedenbegiratzendu.Baldintza TRUE denbitartean,aginduakegitenditubehineta
berriz, etakontrol-aldagaiaaldatzendu.Baldintza FALSE denkasuan,lazoaamaituegingoda, eta
sententziatikatera.
Hurrengo adibideak plakan integraturiko led-a 20 aldiz piztu-itzaltzea ekarriko du. Kasu
egin nolahasieran i kontrolaldagaia =0 gisahasieratueta integer gisadeklaratzenduen.Ondoren,
20 bainotxikiagoadenarteanjarraidezalaesatendio,etabueltabakoitzean( i++), i-renbalioaribat
gehitu diezaiola. Ondorioz, giltzen artean duen guztia 20 aldiz errepikatuko du, eta, kasu honetan,
13.pinapiztuetaitzali.
40
4. Programazioa
Adibidea
3.while (baldintza) { }
while lazoaetengabeerrepikatukoda,parentesiarteanduenbaldintza FALSE bihurtzen
den arte. Zerbaitek lazo barruan kontrol-aldagaia aldatu beharra dauka; bestela, while lazoa ez da
inoizamaituko,etaprogramablokeatutageratukoda.Aldaketahorikodeanegindaiteke,while
bukaeranaldagaiaribalioaigoz,adibidez,edotakanpokoegoerabatibaldintzatuaizandaiteke,
sentsorebatenirakurketa,esaterako.
Hurrengoadibidean, 200 aldizidatzikodugauzaberaserie-monitorean.Lehenengo,
baldintzagisa, i<200 denarteangiltzaarteandagoenaegindezalaesatenzaio.Ikusinolagiltza
artekoazkenaginduakontrolaldagaiaribatgehitzeaden.
Adibidea
4. do......while (baldintza) { }
do lazoaerrepikatukodu, while baldintzabetetzendenartean. while lazoarenoso
antzekoa da. Desberdintasun bakarra dago. Kasu honetan, baldintza lazoaren amaieran begiratzen
da. Horrek esan nahi du nahiz eta baldintza FALSE izan lazoaren barruan dauden aginduak behin
behintzateginegingodirela.
Hurrengo adibidean, sentsore baten irakurketa x aldagai batean gordetzen da; ondoren,
berdinaegitenjarraidezalaesatenzaio,irakurketa100bainotxikiagoadenbitartean.
41
4. Programazioa
Adibidea
8. I/Odigitalak
Irteera-sarreradigitalenberezitasunabierataralaneginahalizateada.Horidelamedio,lehengozein
lan egingo duten deklaratzea tokatuko zaigu. Ondoren, zerrendatuak daude sarrera-irteera digitalak
kudeatzekoerabilienakdirenfuntzioak
1.pinMode(pin,Modua)
voidsetup() funtzioandeklaratzendirasarrera-irteeramoduan.Horesangozaiopinberezi
batiea INPUT (sarrera)edo OUTPUT (irteera)gisalanegingoduen.
Adibidea
OHARRA: Arduinoaren pin digitalek INPUT gisa lan egiten dute, deklaratzen ez baldin badira. Pull Up
erresistentziakerebadituzteintegraturik,bainadeskonektatutadaude,berez.
Bada Pull Up erresistentziak softwarez konektatzeko modu bat ere. Normalki, fisikoki konektatu ohi dira,
kanpo-kableatu gisa –aurrerago ikusiko dugun bezala– baina erresistentzia faltan baldin bazaudete, trikimailu hau
ongietorrikozaizue,Arduinoarensarreraerreezdezazuen.
Adibidea(PullUperresistentziaksoftwarezaktibatu)
2.digitalRead(pin)
Pin bateko balioa irakurtzen du, HIGH edo LOW moduan. Gehienetan, aldagai baten
barneansartuohidairakurketa.Zeinpinetakobalioairakurrinahidugunesanbehardiogufuntzioari,
etahorizenbakibitartezedoaldagaibitartezesandiezaiokegu.
42
4. Programazioa
Adibidea
3. digitalWrite(pin)
Pin jakinbati HIGH edo LOW balioa ematen dio. HIGH balioaemanezgero,
pinhorrek 5V izangoditu; LOW balioaemanezgero,berriz, 0V.
Adibidea
9. I/Oanalogikoak
Sarrera-irteera analogikoek, digitalek ez bezala, ez dute programaren hasieran zein egoeratan lan
egingodutendeklaratubeharrik.Sarreraetairteeraanalogikoakfisikokipindesberdinakdira.
1.analogRead(pin)
Pinanalogikobatekobalioairakurtzendu,eta 10bitekokonbertsoreanalogiko-digital
batenbitartez 0-1023 artekobaliobatematendioirakurketari.
Normalki,irakurketaaldagaibateangordeohida.
Adibidea
2.analogWrite(pin,value)
Balioseudo-analogikobatidaztenduesangodiogunpinean.Baliohori PWM
modulazioanoinarritutaidatzikodu.Kontuanizanbalioa 8biteanemangodiogula.Alegia,
irakurketaanalogikobatenbalioa(10bit)zuzeneanirteeraanalogikobateanidatzi nahidugun
kasuetan,balio-tarte konbertsiobateginbeharkodugu.
PWM irteeraanalogikoaonartzendutenirteerakhurrengoakdiraArduino Uno-an; 3, 5,
6, 9, 10 eta 11.
Adibidehonetan, 5.irteeraanalogikoan, 8bitekobalio-tartetik(0-1023 artekozenbakiak)
erdikoapasadiogu,alegia, 127. PWM pultsu-modulazioaerabiliz 5.irteeran 5V balio
maximoarenerdiajarrikodigu, 2,5V, alegia.
43
4. Programazioa
Adibidea
10. Serie-funtzioak
Arduinoakordenagailuradatuakbidalditzanerabilikodituguhurrengofuntzioak.Osoerabiliak,edo,
beti erabiliak direla esango nuke. Ez dago lehenengoan ondo ateratzen den muntaiarik, eta ondo dator
Arduinoarenetaordenagailuarenartekokomunikazioabegiratzeko,datuakongiirakurtzenarigarenjakiteko
alaakatsakableatuandugunkonturatzeko.
Arduino softwareak serie-komunikazio monitore bat du; bertan azalduko dira idatzita serie-
konexiozbidalikoditugundatuak.
1.Serial.begin(rate);
Serie-portua ireki, eta datu-transmisioaren abiadura deklaratzen du.Abiadura tipikoa 9600
baudio/s izanohida. voidloop()-eanegitenzaiofuntziohorrideia.
Kontuan izan serie-komunikazioa erabiltzen dugun bakoitzean 0 (RX) eta 1 (TX) pinak
ezindirelaerabili.
2.Serial.print() etaSerial.println()
Funtzio honek datuak inprimatzen ditu serie-portuan. Serial.println()-ak agintzen dioguna
inprimatu ondoren, hurrengo lerrora bidaliko du kurtsorea, hurrengo inprimatzea hurrengo lerroan
izandadin.
Funtzio hauei idatzi nahi dugun aldagaia bidaliko diegu, edota, kakotxen artean idazten
badugu,baitazuzeneanidatzinahidugunaere.
Hurrengoadibideakbizenbakialeatorioidaztendituserie-monitorean.Kodealasaiirakurri,
eta ondoan duzue serie-monitorean idatzirik agertzen denaren argazki bat. Kontuan izan hemen
garrantzitsuenainprimatzekofuntzioarisartzendizkiogunaldagaiakdirela.
44
4. Programazioa
Adibidea
45
5. Arduinoa konektatu
5.KAPITULUA:ARDUINOAKONEKTATU
Hauirakurtzenhasizaretenerako,bidirakasuposibleak:honezkerokokoterainozaudetekodigoairakurtzeaz,
edo irakurri ere ez duzue egin nola programatzen den. Edonola dela ere, bada garaia praktikara pasatzeko, eta
kableekin jolastu behar dugu oraingoan.. Beraz, pazientzia pixka bat gorde oraindik, eta ikus dezagun Arduinoaren
sarrera-irteerakzeinmodutankonektatzendiren.
1.Sarrera digitalak(Pultsagailuak...)
EZ. Sarrera digitalak konektatzeko, bi konekzio mota aurkituko ditugu, eta ondoen etortzen zaiguna
erabiliko dugu, kasuaren arabera, Pull Up konexioa ala Pull Down konexioa. Sarrera digitalak ON-OFF balioak
baizik hartzen ez dituzten elementuak dira, hala nola pultsagailuak, etengailuak, inklinazio-sentsoreak, presentzia-
detektoreak, etab.
Norbaitek pentsa lezake sarrera digital batera zuzenean konekta daitekeela 5V-eko elikadura –kasu honetan
pultsagailubidez–etafuntzionatzenduela.Bainaezdainoizegiten,etaezdaeginbeharere,eta harazergatia.
Sarrera digitala konektatu gabe dagoenean, airean geratzen da, eta zarata elektrikoa sartzen zaio, eta
ez du0baliologikoa.
Eroalea luzea den kasuan eta pantailarik gabe, tentsio-erortzeak handiagoak dira, eta, konektatua
egoteanere,zarataelektrikoasuertadaiteke.
46
5. Arduinoa konektatu
BAI. Hori guztia dela eta, ondorengo konexioak erabiliko ditugu beti, detektore digitalak konektatzeko
garaian.
Adibideetan,pultsagailuakerabiliditut,osoohikoelementuakdirelako.
1.Pull Upkonexioa
Konexio mota honetan, pultsagailua masaren eta sarreraren artean konektatzen da, eta Pull Up
erresistentzia sarreraren eta tentsio-iturriaren artean (5V). Pultsagailua sakatzen den unean, sarrera masara
eramangodu;alegia,sarreran0Vbalioairakurrikodugu.Pultsagailuasakatugabedagoenean,aldiz,sarreran
5V balio logikoa izango dugu. Ez da 5V-eraino iritsiko, tentsio-erortze txiki bat izango dugulako;
baina, sarrerako inpedantzia oso handia denez, Pull Up erresistentzian dugun tentsio-erortzea guztiz
mespretxagarriada.
Kontuan izan konexio hau egitean logika negatiboko pultsagailu bat lortuko dugula; alegia,
pultsagailuasakatugabe,sarreran5Vizangoditugu,etapultsagailuasakatutakoan,ordea,0V.
2.PullDownkonexioa
Konexio mota honetan, Pull Down erresistentzia masaren eta sarreraren artean konektatzen da, eta
pultsagailua, berriz, sarreraren eta tentsio-iturriaren artean (5V). Pultsagailua sakatzen den unean, sarrera 5V-
eraeramangodu.Pultsagailuasakatugabedagoenean,aldiz,sarreran0Vbalioaizangodugu.
Kontuan izan konexio hau egitean logika positiboko pultsagailu bat lortuko dugula; alegia,
pultsagailuasakatugabe,sarreran0Vizangoditugu,etapultsagailuasakatutakoan,ordea,5V.
PullUp PullDown
47
5. Arduinoa konektatu
2.Sarrera analogikoak(Sentsoreak...)
Sarreraanalogikoakkonektatzean,askoaldatukodakonexioa,hiruharikodetektoreaalabiharikoadugun.
1.Hiruharikosentsoreedoeragingailuak
Sail honetakoak ditugu potentziometroak, hurbiltasun-sentsoreak, zenbait tenperatura-detektore,
argi-detektoreak, eta abar. Kontuan izan hiru hariko detektoreak bi hari erabiltzen dituztela elikatzeko, eta
hirugarrena,erdikoagehienetan,detekzio-seinaleaemateko.
Arduinoarensarrerarakonektatzekogaraian,seinaleaematendiguneroaleakonektatuko
dugusarreraanalogikora.
2.Biharikosentsoreedoeragingailuak
Sailhonetanaurkitukodituguerresistiboakdirensentsoregehienak; NTC, PTC eta LDRak,
ezagunenak.
Biharikosentsoreaktentsio-zatitzailebitartezkonektatukoditugu;ondoren,detekzioaren
doikuntzaegingodugu,konektatudugunerresistentziarenarabera.
48
Elikadura
+
Elikadura -
Seinalea
TMP 36 Tº
sentsorea
Arduinoaren
sarrerara
LDR argi
sentsorea
FSR presio
sentsorea
5. Arduinoa konektatu
3.Irteera digitalak(Led-ak...)
Irteera digitalek gehienez 40mA-ko korrontea ematen digute. Hori oso kontuan izan behar dugu, Led-ak eta
antzekokontsumoadutenelementuakkonektatzean.
Led batean, korronte onargarria 5mA-tik 30mA-ra doa; beraz, irteera digitalak emango digun tentsioa 5V
delajakinik,errazkalkuladezakeguLed-arekinserieanipinibeharkodugunerresistentziarenbalioa.
Kontsumo baxuko elementuren batera bideratu behar dugun edozein irteera digital zuzenean konekta
dezakegu, betiere kontsumoa 40mA baino txikiagoa den heinean. Bestela, transistoreak erabili beharko ditugu
irteerarenetakargarenartean.
49
Led-aren konexioa: Kontsumoa < 40 mA
Errelearen konexioa: Kontsumoa > 40mA
5. Arduinoa konektatu
4.Irteera analogikoak(Led-ak,serboak,motortxikiak...)
1.Kontsumotxikikoirteerak(Erreleak,motorrak,kargaerresistiboak...)
Irteera analogikoek PWM bitartez modulaturiko 5V-eko seinale bat ematen digute. Hemen ere
kontsumomaximoa40mA-koaizangoda,etakargatxikiakbainoezingodirakonektatu.Kargarekinseriean
220Ohm-ekoerresistentziabatkonektatzeagomendatzenda,bainazuzeneanerekonektadaitezke.
2.Kontsumohandikoirteerak(Erreleak,motorrak,kargaerresistiboak...)
Kontsumo handiko irteerak konektatzeko, potentziako etapa bat konektatu beharko dugu
Arduinoaren irteeretan. Nahiz irteera digitala edo analogikoa izan, transistoreak dira erabilienak irteerako
seinaleaanplifikatzekogaraian.
Transistorebipolarrenkasuan,basean1kOhmeta5kOhmartekoerresistentziajarriohida,etakalkuluaerraz
egindaiteke, basetiksartzendenkorrontea5mAingurukoa izandadin.
50
5. Arduinoa konektatu
Rb= (5-0,7)/5mA=1kOhm
Mosfettransistoreenkasuan,ezdaateaninongoerresistentziarikjartzen,inpedantziahandiamedio.
5.Kontrolagailuak(Step-stepmotorrak,motorrak,Led-matrizeak....)
Merkatuan, ehunka aplikaziotarako kontrolagailuak aurki ditzakegu. Horiek, Arduinoaren irteeretara
konektaturik, gailu multzo handia erraz gobernatzeko aukera ematen digute. Hemen ezagunenak bakarrik jarriko
ditut.
51
ULN2003 urratsez urratseko motor-kontrolagailua (14. praktika)
5. Arduinoa konektatu
52
Merkatuko kontrolagailu edo Shield zenbait:
Motor shield LCD shield GPS shield Midi shield Joystic shield
Power shield AM/FM shieldEthernet shield Xbee
Wireless
shield
6. Praktikak Arduinoarekin
6.KAPITULUA:PRAKTIKAKARDUINOAREKIN
Liburuhaupraktikahauekosatuahalizatekoidatzitadago.Honairitsiarteanzegoenguztiairakurriduzuenoi
bejondeizuela;ezdaukazuemeritumakala.Besteokhemendikhaszaitezkete.LortuzuenArduinoaetabeharrezko
elementuak,etapraktikatu,hariketasoluzioalortzenduzuenarte.
Praktikaguztiekin,sketch-aluzatzendizuet.Tentuzirakurri,etakontuizan,eskemafisikokiosatzerakoan,
sarrera-irteeraberdinakerabiltzenarizaretelaetakonfigurazioorokorraberdinadela.Tarteandudarenbat baduzue,
joanliburuangaiaridagokionatalera,etabazterrakpixkabatnahastu,inorigaldetzenhasiaurretik.Baina,batezere,
zentzupixkabatezibili,minimoabadaere,eta ilusioz.Etaezizanbeldurrik, ezerkezduhemenkoskaegiteneta.
53
6. Praktikak Arduinoarekin
1. Blink
Arduinoarenoinarrizkopraktikadeiturikoada:ezertanhasiaurretikbetiprobatzendena;programaarduinora
bidaltzenetataxuziritsidenjakitenlagundukodiguna.
Arduinoaren13.pineankonektaturikoLedbatekdir-dir(piztu-itzali)egingodupraktikahonetan.Ezdago
Led-azertanpinarikonektatu,baibaituArduinoakberaktxarteleanintegraturiketa13.pinariloturikdagoenLedbat.
Beharrezkomateriala
ArduinoUno-a
Led-a
220Ohm-ekoerresistentzia
USBkablea,konektoreaketaBoardplaka (Azkenhauekbetibeharkoditugu;beraz,eznaizbeti
listatzenarituko)
Konexioak(Hardwarea)
Ledbatpiztekokontuanizanbehardugungauzabakarrada 5mAeta30mAarteko korronteak
soilikonartzendituela.Hortikgoraerreegingozaigu,etahortikbeheraezduargirikegingo.Bestealde
batetik,Led-akjasatenduententsio-erortzea2V-ekoaizangoda.
Arduinoarenirteerek40mA-kokorronteaematendigute,gehienez.Led-aserieanerresistentziarik
gabekonektatzenbadugu,bigauzalortukoditugu:Led-aerretzeaedoArduinoarenirteeraerretzea.Etaez,ez
zaigusegituanerreko;beredenborahartukodu,baina,azkenean,bietatikbaterreegingozaigu.Argigeratu
da,beraz,Led-ariserieanbereerresistentziakonektatukodiogula.
Konexioaegitekogaraian,220Ohm-ekoerresistentziaaukeratudut,nahizfabrikatzaileek20mA-ko
korronteagomendatzenduteneta220Ohm-ekoarekin13mA-kokorronteaezartzendugun.Eskolaargitzeko
ezdugu Fukushima-kozentralarenbeharrik,eta,agian,gainera,urtebukaeranPapua-rabidaiabategiteko
lainaurreztukodugu.
54
6. Praktikak Arduinoarekin
Ohikoakatsak
Komunikazioa.Portuegokia ezaukeratzea,programaegokiezkonpilatzeaetaplakaegokiaez
aukeratzeadiraohikoakatsak..Noski,hirupausohoriekezinbestekoakdiraprogramaongibidalieta
funtzionamenduanjartzeko.
Ziurtatu Led-aegokipolarizatuduzuela.Hankamotxaklurrera(Gnd)konektatutabeharduegon.
Blink
55
6. Praktikak Arduinoarekin
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
AldatuLed-arenkeinukatze-maiztasuna,delay()funtzioarenkonstanteaaldatuz.
KonektatuhiruLedirteeraberdinera,etahandituargi-kantitatea.
KonektatuhiruLedirteeradesberdinetan,etaprogramatumaiztasundesberdinetankeinuegin
dezaten.
56
6. Praktikak Arduinoarekin
2.Alarma bisuala
Pultsagailubatsakatzean,alarmabisualbataktibatukoda,nonLedbatdirdirkajarrikozaigun.Ezda
geratuko,hariketaplakandugunResetbotoiasakatzendugunarte.
Beharrezkomateriala
ArduinoUno-a
Led-a
220Ohm-ekoerresistentzia
470Ohm-ekoerresistentzia
Pultsagailua
Konexioak(Hardwarea)
PultsagailuaPullDownerresistentziabitartezkonektatubeharda.Eznaizhemengaiaerrepikatzen
hasiko;aurkitukoduzue,atzerabegiratuzgero.
. PullDownerresistentziarikkonektatuezean,pultsagailua sakatuadagoenalaezdagoenadierazteko
irakurketakosonahasiakizangodira.
Zailtasunak
Gainontzean,etaaurrekopraktikanezbezala,praktikahonetanLed-akpiztutajarraitubehardu,guk
pultsagailuaaskatutaere.Beraz,programazmemoriabatinplementatubeharkodugu,behinpultsagailua
sakatuetaalarmamartxanjartzeanalarmakmartxanjarraidezan,nahizpultsagailuaaskatu.
Horretarako,lehenengo,pultsagailuakonektaturikdaukagunsarreradigitalairakurribeharkodugu,
etaaldagaibateangorde(buttonState).Kasuhonetan,gogoratupultsagailua2.sarrerankonektatzea.
57
6. Praktikak Arduinoarekin
Pultsagailuasakatuizanarenmemoriainplementatzeko,lehenengo,pultsagailuarenbalioaaldagai
bateangordekodugu(buttonState),eta,ondoren,pultsagailuarenbalioaaltuadeneanbestealdagaibataltu
bihurdezalaesangodiogu(buttonPushed).Horrekpultsagailuasakatutakoan,etanahizetageroaskatu,
memoria-aldagaibatsortukodigu.
Ohikoakatsak
Pultsagailuaaurrezsakatuizanarenmemoria programatzekogaraianakatsak. Bialdagaiakezdira
askotanongikudeatzen. Erabiliserie-portuaaldagaienbalioakziurtatzeko,etaargiizanbietatik zeinden
pultsagailuarekinbateraaldatukodenaetazeinpultsagailuasakatuizanarenmemoriamantendukoduena.
Alarma
58
6. Praktikak Arduinoarekin
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
Eginberdina,pultsagailuaPullUpgisakonektatuta.
Jarriproiektuarialarmaitzaltzekobestepultsagailubat.
OsatualarmaunebereanbainakontrakozentzuandirdiraegingodutenbiLed-ez.
59
6. Praktikak Arduinoarekin
3. Inklinazio-detektorea
Arduinoak inklinazioakontrolatukodu,inklinazio-detektorebatenbitartez.Inklinaziojakinbatetikaurrera,
alarmabisualbataktibatukoda,etaLedbatdirdirakajarrikoda,hariketaberrizeredetektorea horizontalera
bueltatzendugunarte.
Beharrezkomateriala
ArduinoUno-a
Led-a
10kOhm-ekoerresistentzia
Inklinazio-detektorea(“tiltswitch”)
Konexioa(hardwarea)
“Tilt”inklinazio-detektoreaPullUperresistentziabitartezkonektatubeharda.Honezkero,
badakizuePullDownerresistentziabitartezkonektatzen.ErrazaurkitukoduzuePullUpkonexioanolaegin
ere.
Gogoratukonexiomotahoneklogikanegatiboaemangodigula;pultsagailuaedodetektoreaitxita
dagoenean,0baliologikoa,eta,pultsatuedoaktibatugabedagoenean,1baliologikoa.
Zailtasunak
Praktikahauaurrekoabainoerrazagoada,izatez.Zuenlehenengodetektoredigitalaren
funtzionamenduaulertzeandagozailtasuna.Behindetektoreaknolalanegitenduenjakinda,moldatu
programa,lortunahidenalortuarte.
Tiltedoinklinazio-detektoreek“itxita”edo“aktibatuta”balioaemangodigutehorizontalean
ditugunean,eta“irekita”edo“desaktibatuta”balioa,aldiz,10ºbainogehiagoinklinatzenditugunean.
60
6. Praktikak Arduinoarekin
Bai,horreklogikanegatiboadelaadieraztendigu,berrizere.
Hala,aprobetxatuegingoduguinklinazio-detektoreaklogikanegatiboaduelaetaPullUpkonexioak
logikanegatibokoirakurketaemangodigula,etabiakerabilikoditugu.
Voila!! Orain,horizontaleandagoenean,1logikobatjasokoduguArduinoan,etainklinaturik
dagoenean,berriz,0logikobat.
Horrekprogramazioaaskoerraztukodigu.
Ohikoakatsak
Errazaematenduenpraktikabatezinmartxanjarriizateagatikpazientziagaltzea.Horreksoluziorik
ezdauka.Komunerajoan,bueltatu,eseri,begiakitxi,eskuakondozabaldu,egurraukituetapentsatu:“Ni
bainohobetobizidena…”
Begiakireki,arnasahartuetasaiatuberriz.Orainaterakozaizu,edoez,bainaberdintsudio.
Inklinazio-detektorea
61
6. Praktikak Arduinoarekin
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
Saiatuetengailubatkonektatzeninklinazio-detektorearentokian.
Zeinbestedetektorekonektazeniezaiokeenpentsatu,edokonektatu(karrera-amaierak,pieza
detektoreak..)
KonektatudetektoreaPullDowneran,etaprogramaneginlogika-aldaketa.
62
6. Praktikak Arduinoarekin
4. DYAko anbulantzia
Hurrenezhurrenkonektaturikdauden6Lederabiliz,DYAkoanbulantziarenargiaksimulatunahidira.
Horretarako,batpiztuetahurrengoapizteanaurrekoaitzalibeharkodugu.Horrek,aldebateraetabesteraegitean,argi-
jokobatosatukodigu.
Argi-jokoapultsagailubatenbitartezjarrikodugumartxan.
Beharrezkomateriala
ArduinoUno-a
6xLed
6x220Ohm-ekoerresistentzia
470Ohm-ekoerresistentzia
Pultsagailua
Konexioa(hardwarea)
Ezdagoezerberririk.Led-akserie-erresistentziabitartez,etapultsagailuaPullDownerresistentzia
erabiliz.
Zailtasunak
Praktikahonetanarray-enerabileradazailtasunaduengauzabakarra.Led-enkontrola banan-banan
eginbeharrean,array(lista)bateangordekodituguLedguztiak.
Ondoren, for aginduaerabiliz,listahorretakoelementubakoitzariegingodiogudei,bai
deklaratzekogaraian,baitaLed-akpiztuedoitzaltzekogaraian.
C edo Pascal lengoaiakikasidituzuenontzaterrazagosuertaliteke;besteokkodeabistanduzue,eta
sareanmilakatutorialgaiansakontzeko.
Ohikoakatsak
Konexioaskoeginbehardira“boardplakan”,etahorrekkonexio-akatsakugariakizateaekartzen
du.Ziurtatu,ezbistazsoilik,elementuguztiakondokonektaturikdituzuela,eta,horretarako,POLIMETROA
edoimajinazioaerabili.Bestegauzabatikasteko!!
63
6. Praktikak Arduinoarekin
DYA
64
6. Praktikak Arduinoarekin
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
KoloretakoLed-akjarriz,argi-jokoahobetudezakezue.
Ledbikoitiakedoezbikoitiakdesberdinduz,eginargi-jokobera.
65
6. Praktikak Arduinoarekin
5.Kandela
Praktikahonenbidez,kandelabatsimulatukodugu,Ledbaterabiliz.Irteeraanalogikoarenpotentziala
erabiliz,Led-aargikantitatealeatoriozetadirdira-maiztasunaleatoriozpiztukodugu.Horrekkandelabaten
iluminazioasimulatukodigu.
Giroberezibatsortzendu.Beno,bereziberezia,agian,ez. Eguneuritsubaterakomodukoa,bainaezdu
askorikbalio,eztartarengaineanjartzeko,ezetaamonariazterketagaraianematekoere.
Beharrezkomateriala
ArduinoUno-a
Led-a
220Ohm-ekoerresistentzia
470Ohm-ekoerresistentzia
Pultsagailua
Konexioa(hardwarea)
Ezdaezzaidalakolanegiteagustatzen.Ezzaitgustatzen.Bainaezdagokonexiomotaberririk.Led-
akserie-erresistentziabitartezetapultsagailuaPullDownerresistentziaerabilizkonektatu.Ezdutberriz
jarrikohurrengoan.
Dudarikizanezgero,erreparatukonexioensailari.
Zailtasunak
Zenbakialeatorioenerabilera nolaeginadagoenantzemateak ezdutustebestemundukozailtasunik
duenikorainartekopraktikakegindituenarentzat.
Delay()eta,batezere,analogWrite()funtzioenbalioarekinjokatu,kandelaahaldenhobekien
simulatzea lortzenduzuenarte.
IkusilehenaldiadelairteeraanalogikobatetaPWMpultsu-modulazioaerabiltzenduzuena.Led-ak
intentsitatedesberdinakhartukoditu,pasatzendiogunbalioarenarabera,etakontzeptuhaubarneratzea
izugarriondoetorrikozaiguaurreragokopraktiketarako.
Errepasatuirteeraanalogikoarensaila,etaulertuzeregitenarizareten;ondoren,saiatuahaliketa
kandelarenitxurahandienaematen.Baina,batezere,zeregitenduzuenjakin.
Ohikoakatsak
Praktikaondoeginetaarrastorikezizateairteeraanalogikobatekzelanjardutenduen.
66
6. Praktikak Arduinoarekin
Kandela
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
Saiatukandelaindardesberdinezpizten,baina5Hz-komaiztasunarekin.
67
6. Praktikak Arduinoarekin
6. Potentziometro batenirakurketa
Potentziometrobatenerresistentziairakurrikoduenprogramaegingodugu.Ondoren,irakurritakoaOhm-
etarapasa,etabalioaordenagailurabidalikoduserie-portutik, pantailanbistaratzeko.
Beharrezkomateriala
ArduinoUno-a
Potentziometroa10K
Konexioa(hardwarea)
Potentziometroa eta,bidebatez,hiruharikosentsoreanalogikogehienakerahonetankonektatuko
ditugusarreraanalogikora.
Alboetakobipinaksentsoreaelikatzekoerabilikoditugu(5VetaGnd),etaerdikopina,seinalea
emangodiguna,sarreraanalogikorakonektatukodugu.
Gurekasuan,A0sarreraizangoda,bainaalferrikidatzikodut,ondorenmarrazkiaribegiratuetaA1-
eankonektatukobaituteaskok.Horixeizangodaondorendatorrenakatsikohikoenetakobat.
Zailtasunak
Serie-komunikaziozbidalibeharradaukagupotentziometroarenirakurketaordenagailuko
pantailara,eta,han,potentziometroakzenbatOhmdituenmasarekikoazaldubehardugu.Beraz,biurrats
horiekongietaargieginbeharditugu:
Serie-komunikazioaongiabiatu;serie-komunikazioaginduakongiemandirelaziurtatu.
Irakurridugunbalioa(0-1023)bitartekozenbakibatda,etaOhm-etarabihurtubehardugu.
Horretarako,sentsoreadoitubehardugu,etairakurtzendugunbalioakneurtunahidugunarekinduenerlazio
matematikoabehardugu.Suertekobagara,etairakurrinahidugunarenbaliomaximoetaminimoakbaldin
badakizkigu,etaerlazioaprogresiboabada, map() funtzioaerabildezakegu.Gurekasuan,jakinda
potentziometroa(0-10K)koadelaetasarrerak(0-1023)bitartekobalioaemangodigula,“Jaitxiki”-ko ura
bezaingardengeratzendasoluzioa.
68
6. Praktikak Arduinoarekin
Nahikokonplikatuadakonbertsioetadoikuntzahoriekegitea.Hala,bada,ezarduratuhasieran
zipitzik ereulertzenezbaldinbaduzue.Biharereargitukodueguna.
Ohikoakatsak
Okerrekosarrerairakurri.Honek,orain,soluziorikezdauka.Punto!
Sentsorearendoikuntzagaizkieginedomappeoan akatsenbategin.Adibideandaukazuenkodea
aztertu,etagaldetuzuenburuarizenbatbalio-aldaketaizandituenirakurrinahidenak,berebenetakoizatetik
ordenagailuarenpantailanagertudenarte.
Balio-aldaketahauekdenekbereerlaziomatematikoadute,etaerrespetatueginbeharditugu,
irakurketaerrealaetaegokiaizandadin.
Potentziometroa
69
6. Praktikak Arduinoarekin
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
PotentziometroarenaraberapiztendenLedbatgehituproiektuari.
Potentziometroaeta“Processing”softwareaerabiliz,bolabattxikiagotuedohandiagotupantailan.
70
6. Praktikak Arduinoarekin
7. Kontatzailea
Programahonekpultsagailubateanemandakokolpeakkontatu,haienmaiztasunaneurtu,eta,ondoren,
bozgorailubatetikerreproduzitukoditu.
Beharrezkomateriala
ArduinoUno-a
100Ohm-ekoerresistentzia
10kOhm-eko erresistentzia
Pultsagailua
Bozgorailua(buzzer)
Konexioa(hardwarea)
Bozgorailuakonektatzean,ongibegiratupositiboaetanegatiboanondituen,“buzzer”bozgorailuek,
bozgorailupotenteagoekezbezala,ezdutesoinurikegitenalderantzizkonektatzean.
Bozgorailua seriean100Ohm-ekoerresistentziabatekinkonektatukodugu.
Zailtasunak
Kontatzaileadiseinatzekogaraian,kodeakgarrantzihandiadu.EzdanirehelburuaCkodeari
buruzkoesplikaziolehorbatematea.Ulertukoduzue,kodeatentuzaztertzenbaduzue.Kontuanizan
programakbiatalzeharodesberdinakdituela.
Irakurketa.Pultsuakirakurtzekogaraian,pultsagailuarenegoera-aldaketakirakurtzendira,eta
aldagaibateangorde,hariketaprogramahasidenetik10sigarodirenarte.Denborahoripasaondoren,
kontatzaileakbestepultsubakarraonartukodu,etahurrengoatalerapasakodaprograma.
71
6. Praktikak Arduinoarekin
Kantatzea. Pultsagailuasakatuadinaaldizbozgorailuaaktibatzeko,berriz, for() aginduaerabiliko
dugu.
Berezitasunbatsoilik.Tone()funtzioaberriadaguretzat,etanahikoerabiliaArduinoaren
programetan.Hirualdagaisartukodizkioguelkarrenjarraian: bozgorailuakonektaturikdugunpina
(speaker),erreproduzitunahidugunsoinuarenmaiztasuna(frecuency)eta,azkenik,zerluzeratakotonua
nahidugun(duration).
Ohikoakatsak
Kontatzaileakgaizkikontatzeaedoprogramamartxanondoezjartzeaosogauzanormalada
praktika honetan.Lehenengoangauzakongiegitendituenikezdago,etahonekingutxiago.
Akatsakaurkitzenjakiteada,ordea,trebatubeharduguna. Horretarako,kodeaongiirakurri,eta
kodearenbarruan–adibidehonetantxertatutadituzue–aldagaienbalioakserie-monitorerabidalikodituen
aginduakjargenitzake.
Metodohonekinkodeanolaexekutatzendenulertukoduzue,etaakatsaaurkitzekopistabatbaino
gehiagolortukoduzue.Informaziohorigabe,programazertandabilenjakitensaiatzeaitsubatierdiko
hatzaerakusteabezalakoada,alferrikakoa.
72
6. Praktikak Arduinoarekin
Kontatzailea
73
6. Praktikak Arduinoarekin
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
Erreproduzitusoinu-eskalakotonuakbuzzerrean,horretarakotonoaren maiztasunaaldatuz..
.
74
6. Praktikak Arduinoarekin
8. SolfeodeMorfeo
Serie-monitoretikbidalitakonotamusikalakkantatzekogaiizangodamuntaiahau.Horretarako, c (Do), d
(Re), e (Mi), f (Fa), g (Sol), a (La), b (Si)eta C (Do) hizkiakbidalikodizkioguArduinoari,etahonekdagokion
tonuaerreproduzitukodubozgorailutik.
Beharrezkomateriala
ArduinoUno-a
100Ohm-ekoerresistentzia
Bozgorailua(buzzer)
PCa
Konexioa(hardwarea)
Berezitasunikez,aurrekoekinalderatuta.Kontuanizan13.irteeranprogramatudugunLed-a
Arduinoanintegraturikdugula.Hanbegiratu,beraz.
Zailtasunak
Praktikahonetanzailtasunnagusiamusikaberada.Dakizuenokerrazulertukoduzuetonuak,
maiztasunak,periodoaketaluzapenakmusikaneragitendutenaldaketa,etaelkarrenarteandutenerlazioa.
Besteontzathemenduzuenolabaitekolaburpena.
Tonubatberasortzenduenpultsuarenmaiztasunakdefinitzendu.Periodoatonuarenalderantzizkoa
da,etapultsuarenluzeraemangodigumilisegundotan.
Azkenik–etahauda “lamamanmouton”–,PWMmodulazioaerabiltzendugunez,pultsuaren
periodoarenerdiaizangodapultsuaaltumantendubeharrekotartea,etabesteerdia,baxu.Horihorrela,
irteeraanalogikoanidatzikodugunPWMbalioapultsu_altuabalioaizangoda.
periodoa=1/maiztasuna
pultsu_altua=periodoa/2
tekla maiztasuna periodoa pultsu_altua
c 261Hz 3830ms 1915ms
d 294Hz 3400ms 1700ms
e 329Hz 3038ms 1519ms
f 349Hz 2864ms 1432ms
g 392Hz 2550ms 1275ms
a 440Hz 2272ms 1136ms
b 493Hz 2028ms 1014ms
C 523Hz 1912ms 956ms
75
6. Praktikak Arduinoarekin
Behin oinarrihoriekhartuta,zailenadateklatutikdatorreninformazioairakurrietazeinteklazapaldu
denjakitea,ondorentonuegokiaerreproduzitzeko.
Konparaziohoriekegitekokodeahurrengoada.Erasinplean,banan-banankonparatzenditu
tonuenizenenarray-aetateklatutikdatorren val balioa.Ondoren,zenbatgarrenadenesangodigun count
aldagaiaerabiliz,tonuhorierreproduzitukodu.
.
Ohikoakatsak
Ohikoakatsaizatendakonparaketaegokiegitekokodeasortuezinizatea.Horretarakoduzue
hemenpraktika,etakodeadagoenbezalakopiatzeakaskolagundukodizue.
SolfeodeMorfeo
76
6. Praktikak Arduinoarekin
77
6. Praktikak Arduinoarekin
9.Led-aordenagailutikagindu
Serie-monitoretikagintzendiogunhainbatalditanpiztukoduLed-a Arduinoak.
Beharrezkomateriala
ArduinoUno-a
PCa
Konexioa(hardwarea)
Arduinoazetaordenagailuazbakarrikegindaitekeenpraktikaizaki,ezdukonexioberezirikbehar.
Zailtasunak
Ezinesangodutzailtasunikezduenik,bainaez,behintzat,berezikinabarmendubeharrekorik.Orain
arteserie-komunikazioalanduduzuenokerrazlortubeharkozenuketezuenhelburua.
Ohikoakatsak
Serie-komunikaziorakokodeaezulertzeakzeraekardiezaguke:idazteanzereginezjakiteaeta,
ondorioz,konpilatudaitekeenbainaokerrekosekuentziaosatukoduenkodeaidaztea.Gainontzean,akatsgutxi.
Led-aordenagailutikagindu
78
6. Praktikak Arduinoarekin
10. Errelea
.
Arduinoaetaerrelebaterabiliz,230V-ekokargabatenpizteaetaitzaltzeakontrolatukodugu.Kanpoko
etengailubatenbitartez,230V-ekokarga“piztu”egingodugu,etabestepultsagailubatenbitartez,“itzali”.
Beraz,sistemabiegonkorraizangoda. Piztu eta itzali biegoeraegonkorizangoditu, bipultsagailuz
gobernatuak.
Beharrezkomateriala
ArduinoUno-a
1kOhm-ekoerresistentzia
2x470Ohm-ekoerresistentzia
2xPultsagailu
NPNtransistorea (BD137)
12V-ekoerrelea
Diodoa (IN1004)
Elikatze-iturria 12V
Bonbilla 230V
Konexioa(hardwarea)
Erreleairteeraanalogikorakonektatzekotransistorebaterabilibehardugu.Errelearenbobinak
40mAbainogehiagokontsumitzendu,etaArduinoaezdagaihainbesteemateko.
Ondorioz,Arduinoarenirteeran1kOhmeta10kOhmartekoerresistentziabatjarrikodugu,eta,
ondoren,transistorearenkolektoreankokatukoduguerrelearenbobina.
Diodoaridiodobolanteaderitzo,etabobinadeskonektatzeansortzendententsio-pikoaribidebat
ematendiodeskargatzeko.Bestela,denborarekin,transistoreaerrekolitzaiguke.
79
6. Praktikak Arduinoarekin
Zailtasunak
Praktikahonenzailtasunatransistorearenbeharrazohartzeandago.Elektronikarengarrantzia
izugarriadagauregungogailuguztietan,etaArduinoarenpraktiketanaskolandubeharkoditugukontzeptu
horiek.
Programazioaridagokionez,sistemabiegonkoregitekobialdagailotuditugubipultsagailuen
egoeretara.Alarmarenpraktikanerabiligenuenkontzeptuberaerabilidugu,pultsagailuasakatuizanaren
memoriagordetzeko.
Ohikoakatsak
Transistorearenetadiodoaren“datasheet”-akongimamitubeharkoditugu,konexioakegiteko
garaian,pinbakoitzanondagoenjakinnahidugunbakoitzean.Konexioetan,akatsakugariizatendira.
Gogoratu12V-ekoelikatze-iturriarenetaArduinoarenmasakelkarrekinkonektatzea.
Erreleak
80
6. Praktikak Arduinoarekin
Garatuz
Lanparabatenkontrolaeginbeharrean,etxeanduzuenedozeingailurenkontrolaegin.Amarengauzak
bakeanutzi, etazuenzerbaithartu.
81
6. Praktikak Arduinoarekin
11.Motorraren kontroldigitala
Motorbatmartxanjarrikodugu,ordenagailukoteklatubitartez.“m”edo“M”sakatzean,motorramartxan
jarrikoda,eta“g”edo“G”sakatzean,berriz,geratu.
Kontsumotxikikomotorrentzatdagodiseinatua.
Beharrezkomateriala
ArduinoUno-a
DCmotorra (Kontsumotxikia<40mA)
Konexioa(hardwarea)
Kontsumotxikikomotorraizanik,zuzeneankonektatukoduguirteeraanalogikora.
Zailtasunak
Praktikahaugutxitaneginbeharrekoada.Motorrak,nahizetakontsumotxikikoaizan,itzaltzen
dugunbakoitzeantentsio-mailahandibatematendigu,berebarruandituenbobinatuekmetatutaduten
energiamedio.Horihorrela,korrontehoriArduinoarenirteeraraderibatzenda,etadenborarekinerreegin
genezake.
Motorrenfuntzionamenduaulertzekoerabildezakezue,bainaezibiliitzaltzen etapizten.
Ohikoakatsak
Motorragobernatzekoaginduakteklatutikdatozelakontuanizanda,serie-konexiokokontzeptuak
berreskuratubeharkoditugu.Ohikoada“m”eta“g”balioenirakurketanzailtasunakizatea.
Motorra,kontroldigitala
82
6. Praktikak Arduinoarekin
Garatuz
Konektatu motorratransistorebatenbitartez.Ezahaztudiodobolantea
83
6. Praktikak Arduinoarekin
12.Motorraren kontrol analogikoa
Potentziometrobaterabiliz,motorbatenabiadurakontrolatukodugu.Potentziometroasarreraanalogiko
bateanirakurrikodugu,etaberarenbalioproportzionalabidalikodiogumotorrari,PWMirteerabatenbitartez.
Beharrezkomateriala
ArduinoUno-a
DCmotorra (Kontsumotxikia<40mA)
4k7Ohm-ekoerresistentzia
NPNtransistorea (TIP120)
Diodoa (1N4004)
Potentziometroa10K
Konexioa(hardwarea)
Motorratransistorebitartezelikatukodugu.Horrela,Arduinoarenirteerakezdugehiegizko
kontsumoriksufrituko.Halere,ezdugukanpokoelikatze-iturririkerabiliko,etamotorramartxanjartzeko
beharrezkotentsioaArduinoaren3,3V-ekoelikatze-iturritikhartukodugu.
3V-ekomotortxikietanezdaarazorikizaten.12 Vedo24V-eraelikatubeharizanezgero,kanpoko
elikatze-iturribatbeharkogenuke.
84
6. Praktikak Arduinoarekin
Zailtasunak
Motorrarenkonexioaegokiegitenizangodituguarazonagusiak.
Elektronika-jakintzazenbaitizanbehardiratransistoreamuntatzekogaraian,batezerebaseko
erresistentziaegokiaaukeratuetadiodobolanteaegokikonektatzeko.
Gogoratubasekokorronteakolektorekoabaino100aldiztxikiagoaizangodela.Ondoren,kontuan
izandaDCmotorohikoenek200mA ingurukontsumitzendituztelaetaArduinoaren3,3V-ekoelikatze-
iturriak150mA ematendituela,nahikoaduguerresistentziakolektorean100mA-kokorronteaizateko
diseinatzea.
Rb= (5-0,7)/1mA= 4K3Ohm=4K7Ohm Voila!! Matematika!!
Ohikoakatsak
Konexioetanakatsakegiteadaohikoena. Honezkero,ezzenuketearazorikizanbehar
potentziometroarenbaloreakirakurrietaPWMirteerarabidaltzekomappeoaegiteko.
85
6. Praktikak Arduinoarekin
Motorra,kontrolanalogikoa
Garatuz
Aurkitu12V-ekomotorbat–ordenagailuzaharbatenhaizegailubatekbaliokoluke–,etamuntatu
zirkuituberdina,bainakanpokoelikatze-iturribatekin.
86
6. Praktikak Arduinoarekin
13.Serbomotorbatenkontrola2argi-detektore(LDR)bitartez
SerbomotorbatkontrolatunahidaArduinobitartez,etabiLCDri(argi-sentsore)kasuegindiezaien.
Bisentsoreakelkarrenparekobiespaziotankokatutaegongodira,etaespaziohorienargi-kantitateaemangodigute.
Serboabetibietatikespazioiluneneramugitukoda.
Beharrezkomateriala
ArduinoUno-a
2x220Ohm-ekoerresistentzia
2xLDR
Serboa
Konexioa(hardwarea)
LDRerresistentziak220Ohm-ekoPullUperresistentzienbidezkonektatukoditugu.
Serboakonektatzerakoan,harenizkinetakopinetaraelikaduraeramangodugu,5V,etaerdikopinetik
seinaleanalogikoasartukodiogu,serboagidatzeko.
Zailtasunak
Arduinoakberezikiserboakkontrolatzekoliburutegibatdauka.
Serboa angelujakinbateragidadaitekeenmotorbatda.0eta180angeluenarteankokatudaiteke,
etabereseinaleeroaletiksartzendigunPWMpultsuarenarabera,zeinangelutarajoanesangodiogu.
0,5eta1,4msartekopultsu-modulazioasartuzgero,serboa0º-tik90º-rabitartekoangeluenartean
mugitukoda,ezkerrera;1,6eta2msartekopultsuaksartuzgero,aldiz,serboa90º-tik180º-rabitartean
mugitukoda,eskuinera.
87
6. Praktikak Arduinoarekin
UniversidaddeCastillaLaMancha
© Departamento de Sistemas Informáticos
Horikontuanizanik,nahikoada PWMseinalearenkalkobategitea,zeinpultsurizeinangelu
dagokionjakiteko.Baina,noski,pultsu-luzerakkalkulatzenaritzeaezzaioinorigustatzen,etahorixeariko
zenpentsatzen#include<Servo.h>liburutegiaeginzuenaere.
Liburutegihorriesker,nahikoadaserboariangeluarenbalioaematea etaberakkalkulatukodubehar
duenPWMpultsu-zabalera.
Bestalde,LDRargi-sentsoreakdoitzeaezdabateregauzaerrazapraktikan.Zirkuituakegoki
funtzionadiezazuen,behinbainogehiagotaneginbeharkodituzuesarreraanalogikoenirakurketak,etadoitu,
benetanlortunahiduzuenerantzunaizanarte.
Nirinahikokostatuzitzaidanargi-sarreraongineurtuetabaliofidagarriaklortzea.Horduzueserie-
monitorea,irakurketakegokiakdirenjakiteko,etaerabili,sentsorearenirakurketadoitzerakoan.
Ohikoakatsak
LDRerresistentzien baliodesberdinakdirelaeta,sentsoreenkalibraziotxarra.
Serboaetaargia
88
6. Praktikak Arduinoarekin
89
6. Praktikak Arduinoarekin
14. Stepper-a
Urratsezurratseko motorunipolarbatenkontrolaegingodugu, ULN2003 kontrolagailu bitartez.Gure
urratsezurratsekomotorrak"urratsosoko"sekuentzianbiraegingodu,betieskuinaldera,eta3segundokobirabat
osatuz.
Beharrezkomateriala
ArduinoUno-a
Urratsezurratseko motorra
ULN2003kontrolagailua
Konexioa(hardwarea)
Urratsezurratseko motorunipolarraklaukonexioekartzenditubereerregulaziorako,etabibere
elikadurarako.Seihari,beraz,hurrengoerankonektatubeharkoditugunak.
Zailtasunak
Urratsezurratseko motorbatek,izenakdioenbezala,urratsezurrats egitendubiramotorraren
barruan.Estatorean,biharilkatudauzkaeta,errotorean,berriz,imaniraunkorbat, zeinakharilkatuen
magnetizazioarijarraitzendion.
Estatorekoharilkatuhorienmagnetizazio-sekuentziaegokiaknahizmagnetizazio-maiztasun
egokiak motorrarenkontrolosoaemangodigu.Erahorretan,birakadabilenmotorraguknahidugun
posizioetangeragenezake,osogauzasinesgaitzaDCmotornormaletan.
Steppermotorhauenabio-sekuentziaohikobathurrengoada.Urratsosokoabio-sekuentziaizena
90
6. Praktikak Arduinoarekin
du,eta,motorrarenbirabakoitzekolauurratsetakobakoitzeanbisarreraaktibatzendira.Horrela,biharilkatuk
erakarrikoduteimana, etaindarparehandiaizangodu.
Ohikoakatsak
Abio-sekuentziaongiprogramatzeaezinbestekoada,motorramartxanikusinahibaldinbadugu.
Kontu izanhorretan.Bestalde,pausoenartekotarteaeregarrantzitsubihurtzenda,tartetxikiegiakdenborarik
ezdiolakoematenimanaribobinaturairisteko,etatartehandiegiak,berriz,inertziazpausoaksaltatzea
ekartzenduelako.
Programandauzkazue urrats-tarteegokienbalioak.
Stepper-a
91
6. Praktikak Arduinoarekin
92
6. Praktikak Arduinoarekin
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
Gehituproiektuarimotorrarenabiaduraren nahizbiraketa-noranzkoarenkontrola.
93
6. Praktikak Arduinoarekin
15.LCDpantaila
ArduinorakonektaturikoLCDpantailabatean,“IjustwannabeaPoem”esaldiabistaratukodugu.
Beharrezkomateriala
ArduinoUno-a
Potentziometroa10K
LCDpantaila(QY-1602A)
Konexioa(hardwarea)
LCDpantailakonektatzekogaraian,hurrengokonexioakerrespetatubehardira.
94
6. Praktikak Arduinoarekin
Zailtasunak
Praktikahonekpinaksoldatzeaeskatzendu,etakonexio-borneak ongiidentifikatzea,gauzaknon
konektatuongiasmatzeko.
Potentziometroapantailarendistiraerregulatzekoerabiltzenda.
Ohikoakatsak
Pinenkonfigurazio-taulaikusiarren,bakoitzazerdenidentifikatzenezjakitea.Praktikan,ematen
denkonexioarijarraituetapinbakoitzarenfuntzioaidentifikatukoduzue.
LCDpantaila
95
6. Praktikak Arduinoarekin
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
Saiatuedozeinsarreraanalogikotanduzuenbaliorenbatpantailaratzen,halanola sentsorerenbaten
balioaedoeskemakopotentziometroarenbalioabera.
96
6. Praktikak Arduinoarekin
16. FSRpresio-sentsorea irakurtzen
Presio-sentsorebaterabiliz,gurehatzekinzenbatkilotakoindarraegitekogaigarenpantailaratukodugu.
Pantailan,hurrengodatuakbistaratukoditugu:
Sarrerakobalioa(0-1023)artean
Sarrerakotentsioa(mV)
FSRsentsorearenerresistentzia(Ohm-etan)
FSRsentsorearenkonduktantzia
Indarra(Newtonetan)
Masa(kg-tan)
Beharrezkomateriala
ArduinoUno-a
10kOhm-ekoerresistentzia
FSRpresio-sentsorea
Konexioa(hardwarea)
FSRsentsorearitentsio-zatitzailebatosatukodiogu,10kOhm-ekoerresistentziabatekin.
97
6. Praktikak Arduinoarekin
Zailtasunak
Sentsoreenirakurketatikdatuakateratzearengauzarikzailenabalioakelkarlotzendituzten
berdinketamatematikoakaurkitzeada.
Horretarako,sentsorearendatu-orritikharensentsibilitatearentaulajaitsidaiteke,etaerresistentzia
duenaldaketabakoitzazerpresio-aldaketaridagokionatera.
Ondoren,matematikakaplikatzeabesterikezdageratzen.
Sarrerakotentsioakalkulatzeko,tentsio-zatitzaileaaskatu:
, nonVCC=5vdenetaR=10kOhm
Beraz,
FSR=((Vcc-Vo)*R)/Vo , VoetafsrVoltageberdinakdira.
Orain,kontuanizanVobalioasarreraanalogikoandugunbalioamappeatutalortukodugula.
Prozeduramatematikohauprogramanaplikatuzgero,sentsorearenerresistentziakalkulatuko dugu
98
6. Praktikak Arduinoarekin
Behinerresistentziaizanik,indarragoikografikoaaplikatuzlortukodugu,zeinakkonduktantziaeta
indarrarenartekoerlazioaemangodigun.
Aplikatuz:
FSRpresio-detektorea
Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute)
Saiatuirakurketaberdinaegitentenperatura-detektorebatekin.
99
6. Praktikak Arduinoarekin
100
6. Praktikak Arduinoarekin
17.Termometro digitala
TMP36 tenperatura-sentsoretiktenperaturairakurrietauneko tenperatura(ºC,ºF)LCDpantailabatean
idatzikodiguntermometrodigitalbatmuntatukodugu.
Beharrezkomateriala
ArduinoUno-a
Potentziometroa,10K
LCDpantaila(QY-1602A)
TMP36tenperatura-sentsorea
Konexioa(hardwarea)
TMP36 tenperatura-sentsoreakonektatzekogaraian,potentziometrobatkonektatzean jarraitu
dugunprozesuberajarraitukodugu.Izkinetakobipinakelikaduraraeraman,5V,etaerdikopinetikirtengo
zaigunseinaleaArduinoarensarreraanalogikoralotu.
Zailtasunak
Sentsorehonenirakurketanahikoerrazada,bereezaugarri-orriaksentsibilitateakonstanteadelaesatenbaitu.
Hori delamedio,badakigusarreranirakurtzendugun
milivoltiobakoitzekogradubatekotenperaturadugula.
Beraz:
25ºC-ra=250mV irakurribeharditugu.
101
6. Praktikak Arduinoarekin
Ohikoakatsak
Azkenbigarrenpraktikaizanik,akatsak ongileundutaizangoditugudagoeneko.
Termometrodigitala
102
6. Praktikak Arduinoarekin
103
6. Praktikak Arduinoarekin
18.Proiektua:Joysticbatekin biserboetalaserrakontrolatu.
Proiektuhonetan,joysticanalogikobaterabilikoduguetaberarekinelkarriloturikobiserbomotore
kontrolatukoditugu.Joysticapultsatzean,bigarrenserbomotorrarilotutadagoenLed-apiztukoda.
Horrekin biardatzetankontrolaturikoargibatlortukodugu.
Beharrezkomateriala
ArduinoUno-a
Joystica
Led-a
220Ohm-ekoerresistentzia
2xSerbo
Proiektuarenitxura
Gogoanizanjoysticabipotentziometrozosaturikoelementubatdela.Potentziometroaknola
konektatzenzirenhalakonektatukodajoysticaere.
Zailtasunak
Proiektuaosatzeko beharrezkoinformazioaetadatuorriakaurkitzeadazailtasunikhandiena.
Ondorengo praktiketan aurkituko dituzue bai serboaren kontrola nola egin jakiteko informazioa,
baitaargiapultsagailuzkontrolatzekoaere.
Zailtasun handiena joystica erdian geldirik dagoenean serboa erdian egotea lortzea da; ondoren,
ezkerrera mugitzean ezkerrera mugitzea eta eskuinera mugitzean eskuinera mugitzea. Proiektu honetan
map() funtzioaerabilizlortudugu.
104
6. Praktikak Arduinoarekin
Joysticbatekinbiserboetalaserrakontrolatu
105
6. Praktikak Arduinoarekin
106
7. Eranskina
7.KAPITULUA:ERANSKINA
107
8. Bibliografia
8.BIBLIOGRAFIA
www.Arduino.cc web-orrialdetikhartudutArduinoarenliburuhauegitekogidagisaerabilidudan
informaziorikgehiena.
www.fritzing.org
EVANS,Brian:Arduino Programming Notebook, 2007.
DURFEE,W.: ArduinoMicrocontrollerGuide, UniversityofMinnesota,2011.
Prof.BORCHERS, Jan:Arduino in a Nutshell, August 17, 2012.
UIZ, Jose Manuel: Practicas con Arduino
www.oomlout.com: Arduino Experimenter’s Guide
REGALADO, Juan Gregorio: Curso de supervivencia con ARDUINO
108
Esker ona
Eskerrak eman nahi dizkiet gurasoei eta familiari, ni egunero pozik aguantatzeagatik. Eskerrak
Sarari eta Luciari, nire bi sekretaria txikiei, egunero-egunero jolastera gonbidatzeagatik. Eskerrak lagunei
lagunak izateagatik, Manexi 310 aholkuengatik, eta yogiei lebitatuz idazten erakusteagatik. Eskerrik asko
deabrutxo honi, nire barruan bizitzeagatik, eta, noski, mila esker zuri, Pocahontas, liburua jantzi, apaindu
eta begi atxinatuak jarri dizkiozulako.
109
110
Arduinoa ikastetxean

More Related Content

Similar to Arduinoa ikastetxean (20)

Informatika eta ordenagailua
Informatika eta ordenagailuaInformatika eta ordenagailua
Informatika eta ordenagailua
 
6 saioa scratch-garatu
6 saioa scratch-garatu6 saioa scratch-garatu
6 saioa scratch-garatu
 
Ikt eta Matematika
Ikt eta MatematikaIkt eta Matematika
Ikt eta Matematika
 
Mem montaje ordenador.doc
Mem montaje ordenador.doc Mem montaje ordenador.doc
Mem montaje ordenador.doc
 
Ordenagailuak
OrdenagailuakOrdenagailuak
Ordenagailuak
 
Ordenagailuak
OrdenagailuakOrdenagailuak
Ordenagailuak
 
Mem montaje ordenador
Mem montaje ordenadorMem montaje ordenador
Mem montaje ordenador
 
Leire R.
Leire R.Leire R.
Leire R.
 
Iñakibatx1
Iñakibatx1Iñakibatx1
Iñakibatx1
 
Iñaki
IñakiIñaki
Iñaki
 
Arbela digitala erabiltzen
Arbela digitala erabiltzenArbela digitala erabiltzen
Arbela digitala erabiltzen
 
Teoria 4dbh
Teoria 4dbhTeoria 4dbh
Teoria 4dbh
 
Arbela digitala erabiltzen
Arbela digitala erabiltzenArbela digitala erabiltzen
Arbela digitala erabiltzen
 
ikastetxe ezberdinen konparaketa
ikastetxe ezberdinen konparaketaikastetxe ezberdinen konparaketa
ikastetxe ezberdinen konparaketa
 
Inf. 4. oinarrizko inf.
Inf. 4. oinarrizko inf.Inf. 4. oinarrizko inf.
Inf. 4. oinarrizko inf.
 
Informatika eta ordenagailua
Informatika eta ordenagailuaInformatika eta ordenagailua
Informatika eta ordenagailua
 
Informatika eta ordenagailua
Informatika eta ordenagailua Informatika eta ordenagailua
Informatika eta ordenagailua
 
Ordenagailua.
Ordenagailua.Ordenagailua.
Ordenagailua.
 
Ordenagailua.
Ordenagailua.Ordenagailua.
Ordenagailua.
 
Programaeramangarriak
ProgramaeramangarriakProgramaeramangarriak
Programaeramangarriak
 

Arduinoa ikastetxean

  • 2.
  • 3. “Can't buy what I want because it's free”- Pearl Jam
  • 4.
  • 5. ARDUINOA IKASTETXEAN 0. HITZAURREA 1 1. KAPITULUA: ARDUINO FENOMENOA 2 1.1. Zer da Arduinoa? 2 1.2. Arduinoa ikastetxean 3 1.3. ZergatikArduinoa? 5 2. KAPITULUA: HARDWAREA 6 2.1. Arduino Uno-a 7 2.2. Sumarioa 8 2.3. Eskemak eta planoak 8 2.4. Elikadura 9 2.5. Sarrera-irteerak 9 2.5.1. I/O digitalak (eta PWM irteera analogikoa) 9 2.5.2. Sarrera analogikoak 11 2.5.3. Beste konexio-pinak 12 2.6. Komunikazioa 13 3. KAPITULUA: SOFTWAREA 14 3.1. Arduinoa instalatu 14 3.2. Arduino IDEa 19 3.2.1. Erreminta-barra 19 3.2.2. Menuak 20 4. KAPITULUA: PROGRAMAZIOA 26 4.1. Egitura 26 4.1.1. setup() 26 4.1.2. loop() 27 4.1.3. Funtzioak () 27 4.1.4. Giltzak {} 28 4.1.5. Puntu eta koma ; 28 4.1.6. Iruzkinak // 29 4.2. Aldagaiak 29 4.2.1. Aldagaien erabilera-eremua 29 4.2.1.1. Aldagai lokalak 4.2.1.2. Aldagai globalak 4.2.2. Aldagai motak 30 4.2.2.1. Char 4.2.2.2. Byte
  • 6. 4.2.2.3. Integer 4.2.2.4. Long 4.2.2.5. Float 4.2.2.6. Array 4.2.3. Konstanteak 33 4.2.3.1. True/flase 4.2.3.2. High/low 4.2.3.3. Input/output 4.2.4. Eragiketak 34 4.2.4.1. Konposizio-eragiketak 4.2.4.2. Konparaketa-eragiketak 4.2.4.3. Eragiketa logikoak 4.2.4.4. Eragiketa matematikoak 4.2.5. Zenbaki aleatorioak 38 4.2.5.1. randomSeed() 4.2.5.2. random() 4.2.6. Denbora-funtzioak 39 4.2.6.1. delay() 4.2.6.2. millis() 4.2.7. Fluxu-kontrola 39 4.2.7.1. if(){} else {} 4.2.7.2. for(){} 4.2.7.3. while(){} 4.2.7.4. do...while(){} 4.2.8. I/O digitalak 42 4.2.8.1. pinMode() 4.2.8.2. digitalRead() 4.2.8.3. digitalWrite() 4.2.9. I/O analogikoak 43 4.2.9.1. analogRead() 4.2.9.2. analogWrite() 4.2.10. Serie-funtzioak 44 4.2.10.1. Serial.Begin() 4.2.10.2. Serial.Print() 5. KAPITULUA: ARDUINOA KONEKTATU 47 5.1. Sarrera digitalak 47 5.1.1. Pull Up konexioa 48 5.1.2. Pull Down konexioa 48 5.2. Sarrera analogikoak 49 5.2.1. Hiru hariko sentsoreak 49 5.2.2. Bi hariko sentsoreak 49 5.3. Irteera digitalak 50 5.4. Irteera analogikoak 51 5.4.1.1. Kontsumo txikikoak < 40mA 51 5.4.1.2. Kontsumo handiagokoak > 40 mA 51 5.5. Kontrolagailuak 52
  • 7. 6. KAPITULUA: ARDUINOAREKIN PRAKTIKAK 54 6.1. Blink 55 6.2. Alarma bisuala 58 6.3. Inklinazio-detektorea 61 6.4. DYAko anbulantzia 64 6.5. Kandela 67 6.6. Potentziometro baten irakurketa 69 6.7. Kontatzailea 72 6.8. Solfeo de Morfeo 76 6.9. Led-a ordenagailutik agindu 79 6.10. Errelea 80 6.11. Motorraren kontrol digitala 83 6.12. Motorraren kontrol analogikoa 85 6.13. Serbomotor baten kontrola 88 6.14. Stepper-a 91 6.15. LCD pantaila 95 6.16. FSR presio sentsorea irakurtzen 98 6.17. Termometro digitala 102 6.18. Proiektua: Joystic batekin bi serbo eta laserra kontrolatu. 105 7. ERANSKINA 109 8. BIBLIOGRAFIA 110
  • 8. 1. Arduino fenomenoa HITZAURREA Eta guztiek jartzen didate aurpegi bera. “Arduinoa?” Eta, noski, pixka bat desanimatzen nau zer den sinple esaten ez jakiteak. Hala, bada, kontu sakonagoetan sartu aurretik, arnasa firme hartzen dut, tartetxo bat egin, eta “ezer ez” diot ahopean, “honelako gauza bat baino ez da”, eskuarekin parafina pusketa baten tamainako karratutxo bat marraztuz. Liburu honek irakurlea Arduinoaren erabilerara hurbiltzea du helburu. Elektronikaren nahiz programazioaren oinarrizko ezagutzak dituenarentzako gida gisa sortu da, prototipoak diseinatu eta eraikitzeko garaian lagungarri izango zaiona. Funtsean, hardware libreak niregan sortu duen esperimentatzen jarraitzeko gogoa azaleratzen du, baliabide gutxi dituztenei ere zientzia eta teknologia eskuragarri egiteko Arduinoak sortu duen bideari euskaraz adar txiki bat irekitzeko ilusioa. Arduinoa ikastetxean erabiltzeko gida hau osatzeko garaian, Interneten aurki daitekeen informazio amaigabea antolatu, funtzionalena hartu, eta sinple eta labur azaltzen saiatu naiz zer den Arduinoa eta zertarako erabil litekeen azaltzeko. Ia informazio guztia http:/www.arduino.cc webgunetik edo bertan inspiraturiko manualetatik aterea dago, eta, Creative Commons Attribution-ShareAlike 3.0 License. lizentziapekoa izaki, berriz ere lizentzia horrekin argitaratua izan da. 1
  • 9. 1. Arduino fenomenoa 1. KAPITULUA: ARDUINO FENOMENOA 1. Zer da Arduinoa Arduinoa prototipo elektronikoen oinarri izango den kode irekiko hardware- eta software- plataforma bat da. Artista, diseinatzaile eta ikasle-irakasleentzat pentsatua dago, baita hobby gisa objektu nahiz ingurune interaktiboak sortzea helburu duen edozeinentzat ere. Nolabait esatearren, Arduinoa ingurunea senti dezakeen elementua da. Alde batetik, sentsoreak eta hartzaileak erabiltzen ditu horretarako. Bestetik, erabiltzaileak bertan irauliriko programaren aginduak jarraituko ditu; eta horren ondorioz, ingurunean eragingo du, bere kontrolpean dituen argi, motor edo beste edozein eragile elektriko martxan jarriz. Beste era batera esanda, Arduinoa gure begiak kontrolatzen dituen burmuina izan liteke; ikusteko gaitasuna du, eta edonora begiratzeko ahalmena ematen digu. Oinarrian, ATMEGA etxeko xx8 mikrokontrolagailua du. Hori plataformaren burmuina litzateke, eta Arduino Programing Language (Wiring-en oinarritua) nahiz Arduino Development Enviroment (Processing-en oinarritua) erabiliz programatzen da. Arduinoan oinarrituriko proiektuak nahiz prototipoak guztiz autonomoak izan litezke, edota PC edo memoriaren batean ejekuzioan dagoen edozein sofwarerekin komunika litezke (Flash, Processing, MaxMSP, edo baita OpenOffice-ekin ere). Horrek prototipo ibiltariak, estatikoak edo adierazleak osatzeko aukera eskaintzen du. Zirkuitu inpresoa osatzen duten plakak aurrez fabrikan mihiztatuak eska daitezke, edo, sarean zintzilikatua dagoen informazioa erabiliz, norberak ere mihizta ditzake. Erreferentziako hardware-diseinua (CAD artxiboak) eskuragarri dago sarean; beraz, edonork du aukera hardwarea bere kabuz eraikitzeko, baita dagoenaren gainean nahi dituen berrikuntzak garatzeko ere. Software eta hardware libreko plataforma honek mundu oso bat ireki dio prototipoak laborategitik nahiz enpresetatik kanpo eraikitzeari. 2
  • 10. 1. Arduino fenomenoa 2. Arduinoa ikastetxean Ikastetxeetan prototipo elektronikoen eraikuntza aurrera eramateko zegoen hardware askearen gabezia zela medio sortu zen Arduinoa. Bereziki Hezkuntzan erabiltzeko sortu zela esan liteke, nahiz eta urte gutxian bilakaera askoz ere zabalagoa izan duen. Gida honek Arduinoa ikastetxeetan erabiltzeko baliagarri nahi luke izan, eta, bide batez, irakaslea PBLra (Project Based Learning proiektuetan oinarrituriko irakaskuntza) hurbildu. Liburuari jarraiki, ikasleak proiektu praktikoak gauzatuz garatuko du bere ikasketa, eta irakaslearen lana proiektu horiek proposatzen, ebazten eta muntatzen laguntzea izango da. Horretarako, Arduinoa erabiltzeko beharrezkoak izango ditugun kontzeptu teorikoez aparte, liburuak Arduinoarekin eginiko oinarrizko muntaia sorta bat aurkezten du. Horien laguntzaz, ikasleak nahiz irakasleak, muntaia horiek edo antzekoak eginez, ikasketa eta proiektu berriak gara ditzakete. Arduinoa hardware irekiko plataforma izaki, 300 pertsonatik gorako garatzaile taldea du, eta milioika erabiltzaile mundu guztian zehar. Gida hau ikasgelarako erreminta bat baino ez da, bere baitan Arduinoak duen potentzialaren argazki bat baino gordetzen ez duen gidaliburua. Erabiltzeko interesa duenari bide bat eskaintzen dio, hasierako pausoetan sortuko zaizkion arazoak konpontzeko. Ondoren, mundua zabala da, proposamenak amaigabeak, eta sarean informazio preziatua aurki daiteke, automatikoa den ia edozer Arduino bitartez muntatzeko. Aztertzea eta imajinatzea norberaren esku geratzen da, eta baita sortutakoa berriz sarean banatzea ere. Liburuak PBL irakaskuntza-metodologia hiru puntu hauetan garatzen du: Arduinoa. Ikasle bakoitzak Arduino erreminta eskuragarri izango du. Horretarako, ikastetxeak aurrez mihiztatuta saltzen diren prezio baxuko Arduinoak eskuratu beharko ditu, edo, liburuan agertzen den informazioari jarraituz, Arduino propioak muntatu. Horrela, ikasleak, ardura bere gain hartuta, ekipoa etxera eraman ahal izango du, eta, ordenagailura duen konexioa erraza izaki, auto-ikasketa indartu. Esperimentazioa. Ikaskuntza esperimentazioan oinarritzen da, non ikasleak nahiz irakasleak akatsak izatea ia ezinbestekoa bilakatzen den eta akats horietatik denek ikasten duten. Ez da azterketa baterako lan egiten –nahiz ebaluazioa ikastetxe bakoitzaren esku geratzen den–, proiektu, maketa edo prototipo funtzional bat eraikitzeko baizik. Eginez ikasten da – Asthangaren sortzaile Pathavi-k dioen bezalaxe–. Ikastean, % 1 teoria da, eta % 99 praktika eta mugimendua. Librea, forman eta funtzioan. Erreminta digitaletako hardwarea eta softwarea gure orainaren eta geroaren parte dira, eta, neurri handi batean, horien erabilerak pertsona nahiz gizarte moduan izango dugun bilakaera markatuko digu. 3
  • 11. 1. Arduino fenomenoa Softwarea nahiz hardwarea erabiltzeak gure bizitzan zehar egunero aurkituko ditugun elementu horiek hobeto ulertzen lagunduko digu, baina, guztiaren gainetik, hardware eta software libreak erabiltzeak guztioi luzatuko digu hori egiteko aukera, eta ahalbideratuko gure ideiak prototipatzea inongo traba legalik gabe. Amaitzeko, esan beharrekoa da Arduinoa ez dela irakaskuntzan hardware- edo software-plataforma soil gisa txertatzen. Hainbat irakasgaitan (teknologia, diseinua, matematika, fisika eta arte digitala) kontzeptu konplexuak aztertu eta praktikara eramango dituen irakaskuntza-metodologia gisa ere agertuko zaigu. 4
  • 12. 1. Arduino fenomenoa 3. Zergatik arduinoa Merkatuan, beste mikrokontrolagailu-plataforma ugari daude, eta antzeko funtzionalitatea eskain dezakete gehienek. Aukerak anitzak direla jakinda, ordea, hauek dira nire arrazoiak ikastetxean erabiltzeko aukera egokiena Arduinoa dela pentsatzeko. Merkea da. Beste mikrokontrolagailuekin alderatuta, prezio xumeagoa du. Aurrez mihiztatua, Arduinorik erabilienak (Uno) 25 eurotik beherako kostua du, eta norberak muntatutako Arduinoaren prezioa are merkeagoa da. Merkatua. Taxuzko lan-baldintzetan muntatua izan da. Lizentzia librekoa izanik, lizentzia-gasturik ez du, eta irabaziak lan egiten duenarentzat bideratzen dira, eta ez, elektronikan askotan pasatzen den moduan, lizentziaren jabe diren enpresentzat. Arduinoan egiten den edozein aldaketa merkaturatu daiteke, eta onura ekonomikoa lortu, baldin eta berriz ere lizentzia irekian saltzen bada. Multiplataforma da. Arduino softwarea Windows, Mac, OSX eta Linux sistema eragileetan ejekutatzen da. Beste mikroprosezagailu-plataforma gehienak Windows edo DOS sistema eragileetara mugatuta daude. Programazio-ingurune sinple eta argia dauka. Arduino programazio-ingurunea hasiberrientzat oso erabilerraza da, eta, aldi berean, ahalmentsua, erabiltzaile aurreratuek zukua atera diezaioten. Kode irekiko software garagarria du. Arduino softwarea edozein programatzailek garatzeko irekia da. C++ lengoaian oinarrituriko liburutegiak garatuz, Arduinoaren kapazitateak muga gutxi ditu. Kode irekiko hardware garagarria du. Arduinoa ATMEGA xx8 mikrokontrolagailuetan oinarritua dago, eta gainerako modulu guztien CAD planuak, Creative Commons Attribution-ShareAlike 3.0 License lizentziapean, sarean argitaratuak daude. Diseinatzaile ausartenek Arduinoaren bertsio propioa diseina dezakete, eta baita, betiere lizentzia irekian, saldu ere; honela, Arduinoaren prestazioak nahiz garapena bultzatuko dituzte. Arduinoaren plataformari hamaika funtzionalitate gehitu dizkio erabiltzaileen komunitateak oraingoz (wifia, GPSa, GRSMa, Irudi detekzioa, Android konexioa...), eta kontaezinak dira oraindik garatu dakizkiokeenak. 5
  • 13. 2. Hardwarea 2. KAPITULUA: HARDWAREA Arduino asko aurki ditzakegu merkatuan. Gure Arduino propioa ere munta dezakegu, horretarako jakintza nahikoa badugu. Baina badaude Arduino guztiak antzeko egiten dituen zenbait ezaugarri, eta horiek aipatuko ditugu, nola eginda dauden ikustean. 6
  • 14. 2. Hardwarea Arduinoaren hardwarea aztertzeko, Arduino Uno-a aztertuko dugu. Hau da azkena atera duten modeloa, eta oraingoz prezio baxuan prestaziorik onena ematen duena. Ondoren, erabiltzailearen esku geratzen da erabakitzea zein Arduino datorkion ondoen bere proiekturako, tamaina, konplexutasuna, memoria edo diseinua kontuan izanda. 1. Arduino Uno-a Arduino Uno-a Atmega 328(datasheet) mikrokontrolagailuan oinarrituriko sarrera-irteera plaka programagarri bat da. Uno-a Arduinoetan azkenekoa da, eta Arduino plataformaren erreferentzia bihurtu da, Arduino softwarearen 1.0 bertsioarekin batera. 14 sarrera-irteera digital ditu (horietako 6 PWM irteera analogiko gisa erabil daitezkeenak), 6 sarrera analogiko, 16 MHz-eko maiztasuna duen kristal oszilatzailea, USB konexioa, jack elikadura, ICSP header-a, eta Reset pultsagailu bat. Funtsean, mikroa kontrolatu, elikatu eta 7
  • 15. 2. Hardwarea ordenagailura erraz konektatzeko beharrezko guztia dauka. 2. Sumarioa Mikrokontrolagailua ATmega328(datasheet) Lan-tentsioa 5V Elikadura-tentsioa 7-12 V Elikadura-tentsioa (onargarriak) 6-20 V I/O (sarrera-irteera) pin digitalak 14 (horietariko 6k PWM irteera ematen dute) Sarrera analogikoak 6 I/O (sarrera-irteera) korronteak 40 mA 3.3V-eko pinaren korrontea 50 mA Flash memoria 32 kB (horietatik 2 kB, bootloaderrak erabiliak) SRAM 2 kB EEPROM 1 kB Erloju-maiztasuna 16 MHz Tamaina 2,7 eta 2,7 hazbete 3. Eskemak eta planuak EAGLE artxiboak Eagle_Desing.zip Arduino UNO REV3 plakaren eskema 8
  • 16. 2. Hardwarea 4. Elikadura Arduinoa USB bitartez edo kanpoko elikadura-iturri bitartez elika daiteke, eta berak igartzen du automatikoki zein duen konektatua. Kanpo-elikadura bitartez konektatzean, bi aukera ditugu. Plakak bistan duen 2.2 mm-ko jack elikadura erabili, AC/DC (220v/9V) bihurgailu batez, edo bateria sorta bat erabili, horren konexioak plakan dauden GND eta Vin pinetara konektatuta. Kontuan izan plaka gehienez 6-20 V-era elika daitekeela, baina egokiena 7-12 V bitartean elikatzea dela. Elikadura-pinak hurrengoak dira: VIN. Arduinora kanpo-elikadura bat konektatzeko pina da. Arduinoa pin honetatik edo jack konexiotik elika daiteke, eta, azken horretatik elikatuz gero, Vin pina elikadura gisa balia daiteke. Berezitasun bat besterik ez da, baina erabilgarri suerta liteke zenbaitetan. 5V. Plakak berak erregulaturiko 5V-eko irteera bat ematen digu. Tentsio- irteera hau oso erabilia da plakara konektatuko ditugun sentsoreak elikatzeko garaian. Eroalea gorriz kableatzea gomendatzen dut beti. Pin hau elikadura-sarrera gisa erabiltzeak plakaren erregulatzailea by-passeatzen du, eta plaka erre dezake. Ez esan, gero, abisatu ez nuenik! 3V3. Plakak berak erregulaturiko 3.3 V-eko tentsioa ematen digu. Gehienez, 50 mA-ko korrontea hornitzen du. 5. Sarrera-irteerak 1. I/O Digitalak (nahiz PWM irteera analogikoa) 14 pin digitalak irteera nahiz sarrera digital gisa erabil daitezke, aurrez nola deklaratzen ditugun. 5 V-ean lan egiten dute guztiek, eta pin bakoitzak GEHIENEZ 40 mA- ko korrontea jaso nahiz eman dezake. Oso ideia ona da IRTEERA gisa erabiltzen den edozein pinetan seriean 470 Ohm edo 1 kΩ -eko erresistentzia bat jartzea. Pin bakoitzak 20-50 kΩ bitarteko Pull Up erresistentzia bat dauka, baina berez deskonektatua dago. Sarrera guztiak Pull Up erresistentzia bitartez kableatzea gomendatzen 9
  • 17. 2. Hardwarea da. Aurrerago, liburuan zehar, kableatze modu hori ikusiko duzue. Ezaugarri horiek komunak dira pin guztientzat, baina, horietaz aparte, pin batzuek ezaugarri bereziak dituzte, eta ondoren zerrendatzen dizkizuet: Serial: 0(RX) eta 1(TX). TTL serie-datuak hartzeko (RX) nahiz bidaltzeko (TX) erabil daitezke pin hauek, Arduinoa edozein serie-dispositiborekin komunikatu nahi denean. Kanpo-interrupzioak: 2 eta 3. Pin hauek, trigger pultsu batez, interrupzio bat programatzeko konfigura daitezke. PWM: 3, 5, 6, 9, 10 eta 11. Pin hauek 8 biteko PWM irteera analogiko bat programatzeko aukera ematen digute, analogWrite() funtzioa erabiliz. OHARRA: PWM (pulse-width modulation) PWMren funtzioa seinale periodiko baten pultsuen zabalera modulatzea da, hau da, seinale horren lan-zikloa aldatzea. Oso baliagarria da, adibidez, DC motore baten abiadura-kontrola egiteko. Seinale periodiko baten lan-zikloa edo Duty Cycle-a seinale horren parte positiboak periodo osoarekiko duenzabalera-erlazioada. analogWrite() funtzioak, 8 bit izaki, 0 eta 255 bitarteko zenbakiak onartzen ditu sarrera- aldagai gisa. Arduinoak guk analogWrite() aginduan emaniko zenbakiaren proportzionala den 5V- eko seinale karratu bat emango digu. Hurrengo taulan aurki dezakezue analogWrite() funtzioaren aldagaia eta irteerako tentsioaren batez bestekoaren arteko erlazioa. analogWrite(pin,0) -> Duty Cycle 0 (Bat ere ez) -> 0V (Irteerakobatezbestekoa) analogWrite(pin,64) -> DutyCycle 0,25 (Laurdena) -> 1,25V (Irteerakobatezbestekoa) analogWrite(pin,128)-> Duty Cycle 0,5 (Erdia) -> 2,5 V (Irteerakobatezbestekoa) analogWrite(pin,256)-> Duty Cycle 1 (Osoa) -> 5 V (Irteerakobatezbestekoa) 10
  • 18. 2. Hardwarea Honahemenadibidebat,seinalekarratubatentzat: Duty Cycle=Ton/TonToff  x100 -> 0V(Irteerakobatezbestekoa) ->1,25V (Irteerakobatez bestekoa) -> 2,.5V(Irteerakobatezbestekoa) ->3,75V(Irteerakobatezbestekoa) -> 5V(Irteerakobatezbestekoa) LED: 13. pina. Plakan bertan txertaturiko led bat 13. pin digitalera konektaturik dago. Pin horren balioa altua (HIGH) denean, led-a piztuta ikusiko dugu, eta balioa baxua (LOW) denean,aldiz,itzalita. Aurrerago ikusiko dugun bezala, oso erabilgarria egingo zaigu, Arduinoa ongi konektaturik dagoenjakiteko. 2. Sarrera analogikoak Arduinoak 6 sarrera analogiko ditu, A0 eta A5 artean izendatuak, eta bakoitzak 10 biteko bereizmena ematen digu. A0-A5 pinetan sartzen dugun balio analogikoa balio digital bihurtzen dute. Normalki, sarrerako tentsio maximoa 5 V-era erreferentziatua dute, eta horretan oinarrituta egiten dute digitalerakobarne-konbertsioa, analogRead() komandoaerabiliz. 10 biteko bereizmenak 1024 digituko irakurketa ahalbideratzendiosarreraanalogikobakoitzari. analogRead() komandoak, automatikoki, sartzen zaion tentsio-mailabakoitzari0tik1023rabitarteandagoenbaliobat bueltatuko dio, eta zenbaki hori erabiliko dugu programatzaileoksarrerandagoententsioainterpretatzeko. 11 Ton Toff Ton Ton Toff Toff Ton Toff 5 V -> 1023 3,75 V -> 918 2,5 V -> 612 1,25 V -> 306 0 V -> 0
  • 19. 2. Hardwarea Esatebaterako, analogRead(3) komandoakhirugarrenpinairakurriondoren,611balioabueltatzen baldinbadigu,badakigu2,5Vdauzkagulalehenengopinean. OHARRA.Sarreraanalogikoarenerreferentziako tentsio maximoa 5 V da normalean, baina, zenbait kasutan, tentsio-mailadesberdinaemangodiguten sentsoreak konektatuko ditugu, eta erreferentziako tentsio maximoatxikiagoaizangoda.. Kasuhorietan,etaAREFpinaeta analogReference() funtzioaerabiliz,aldatuegindaitekebalio-mailahori. 3. Beste konexio-pinak AREF: Sarrera analogikoetarako erreferentzia-tentsioa konektatzeko pina, erreferentzia 5 V EZ denguztietan. Reset: Pin hau LOW baliora eraman behar da mikrokontrolagailua erreseteatzeko. Normalki, berez duen Reset botoia tapatzen duen Shield-en bat konektatzen baldin badiogu soilik erabiltzenda.. OHARRA: Atmega328-aren pinen mappeoa begiratzea ondo etorriko litzaioke bereArduinoa muntatunahiduenariedotaemanikoarizukugehixeagoateranahidionari. 12
  • 20. 2. Hardwarea 6. Komunikazioa ATmega328-ak UARTTTL (5 V) komunikazioa ahalbidetzen du bere 0 (RX) eta 1 (TX) pinetan, baina Arduinoak integratua duen ATmega16U2 txipak serie-komunikazio hori USB komunikazio gisa bideratzen du, eta Arduinoa COM portuestandarrerakonektatzeaahalbideratzen. Hau da funtseanArduinoaren eta beste mikrokontrolagailuen arteko desberdintasun nabarmenena:Arduinoa edozeinordenagailutakoUSBportutikprogramatudaitekeela. Birtute horretan sakonduz, Arduino softwareak serie-monitore bat dakar integraturik, eta, bertan, denbora errealean,Arduinoarekinkomunikazioabideradaiteke,halanola Arduinoarensarrera-irteeren balioa PCan ikusi edotaPCtikArduinorainformazioaedoaginduakbidali. OHARRA: Arduinoak USB portua babesteko fusible bat dauka plakan integraturik.500mA-tik gorako kontsumoaduenean,etaUSBportuababestealdera,ArduinoadeskonektatuegingodaPCtik. 13
  • 21. 3. Softwarea 3.KAPITULUA:SOFTWAREA 1.Softwarea instalatu Arduino programazio-inguruneak (IDE) erraza egiten du kodea idaztea eta, ondoren, I/O plakara bidaltzea. Windows, Mac OS X eta Linux-pean egiten du lan. Java lenguaian garatua dago, eta Proccessing software irekian oinarritua. Saretik jaitsi daiteke, beti bezala eskuragarri www.arduino.cc webgunean.. Uneko azken bertsioa erabiliz egindutondorengoinstalazioa.. Jarraian, azalduko dut Arduino programa nola instalatu, ondoren zuen Arduino plaka nola konektatu eta lehen programa nola jarri funtzionamenduan. Gida hau Arduino Uno-a Windows XP-pean instalatzeko dago prestatua. Barianteak asko izan daitezke sistema eragileetan; hala, bada, instalatzeko garaian beste sistema-eragile batenaurreanaurkitzenbazarete,informazioahurrengoesteketanduzue: Linux-eninstalatu -> http://www.arduino.cc/playground/Learning/Linux MacOSX-eninstalatu -> http://arduino.cc/en/Guide/MacOSX Windows-eninstalatu -> http://arduino.cc/en/Guide/Windows a)LortuArduinoplakabatetaUSBkablea(begiratukonektoreak!) b) Jaitsi Arduinosoftwarearenazkenbertsioa,etainstalatu. Softwareajaitsiostean,deskonprimatuartxiboa. 14
  • 22. 3. Softwarea Ondoren,eramanArduinox.x karpetaosoa C:/Archivosdeprograma/ karpetara. Azkenik,eginArduinoexekutagarriarilasterbidebatmahaigainean. d) Konektatu Arduino plaka, eta instalatu Driverrak. Arduino plakaren funtzionamendua egokia izan dadin, Driverrak instalatu beharra dago. Ondoren, irudi bidez,Driverhoriekinstalatzekopausoaklistatukoditut. d) Ireki Arduino IDEa, eta kargatu Blink programa. Arduinoa USB portura konektatzean, hardware berriaren morroia abiatuko zaigu. Driverrak eskuz instalatuko ditugunez, esan “ez” windows updatera konektatzeari. Aukeratu, ondoren, instalazioa kokalekujakinbatetik egitea. 15
  • 23. 3. Softwarea Arakatu Arduinoa instalatu dugun karpeta, eta aurkitu haren barruan Drivers karpeta. Kontuan izan EZ dudala FTDI USB Drivers karpeta aukeratu. Hori bertsio zaharragoentzat erabiltzen da. “Ezikusiarena egin” zertifikatua eskatzen duen leihoari, eta instalatu Driverrak. 16
  • 24. 3. Softwarea Azkenik, kontuan izan Arduino softwareak ez duela COM portua automatikoki aurkitzen eta, beraz, eskuz sartu behar diogula Arduinoa konektaturik dagoen portuaren zenbakia. Bestela, komunikazio-errore oso ohiko bat emango digu. Arduinoa zein COM portutan dagoen konektaturik jakiteko, aurkitu gailu- kudeatzaile menuan COM/LPT portuen lista, eta begiratu zein den gure Arduinoaren portua. 17
  • 25. 3. Softwarea Behin jakinda gure Arduinoari COM4 portua egokitu zaiola, joan Arduino IDEra, eta aukeratu portu hori Tools / Serial Port sailean. Orain, ongi konpilaturiko edozein programa karga genezake Arduinoan. Nik BLINK (dir-dir) programa kargatzea aholkatzen dut. Aurrerago, sakonago azalduko dut programa hori. Programa Arduinora ondo kargatu den edo ez jakiteko, nahikoa da hurrengo pausoak jarraitzea. Plakako Led-ak dir-dir egin behar du 1000 milisegundoko maiztasunaz. Programan delay(100) konstantea 100era jaitsi, eta, kargatu ondoren, plakako Led- ak dir-dir egin behar du 100 milisegundoko maiztasunarekin. Azkarrago, alegia. 18
  • 26. 3. Softwarea 2. Arduino IDEa Arduino IDEa (Integrated development environment) programazio-software bat da. Programazio-software gehienak bezala, argia izatea du helburu, eta bertan idatziko diren Arduinorako programek duten zailtasuna ez areagotzea. Hori horrela, nahiko azkar egingo dugu software hau erabiltzeko gida labur bat. 1. Erreminta-barra Verify/Compile Idatziriko kodea aztertzen du, akats bila. Konpilatzaileak erroreren bat aurkitzen badu, ezin izango da kodea Arduinora igo. 19
  • 27. 3. Softwarea Upload to I/O Board Idatziriko kodea Arduino plakara igotzen du. Gogoratu igo aurretik gordetzea. OHARRA: Arduinora programak igotzea erraza bada ere, behin Arduinoan dagoen programa ordenagailura jaistea EZINEZKOA da. Horrek kargatzen ditugun programa guztiak aurrez gordetzea zein garrantzitsua den erakutsi beharko liguke. Ez esan, berriz ere, abixatu ez nuenik! New Errutina edo programa berri bat kargatzen du. Sketchbook (programa lista) bistaratzen du, han dagoen adibideren bat kargatu nahi izanez gero. Save Uneko programa gordetzen du. Serial Monitor Arduino plakatik USB bitartez ordenagailura bidaliriko datuak bistaratzen ditu. Aldiz, ordenagailutik Arduinora datuak bidali nahi izanez gero, testua idatzi, eta SEND botoia sakatu behar da. 2. Menuak Import Library. Idazten ari garen programari liburutegi bat gehitzeko erabiltzen dugun komandoa da. Programa-errutinari funtzionalitate berriak ematen dizkio, baina, aldi berean, haren tamaina handiagotzen du. Liburutegia inportatu ondoren, kodearen hasieran #include gehitu behar da. OHARRA: Liburutegi-kode bat programa nagusiago bat garatzeko erabiliko den azpiprograma talde bat da. Liburutegiek programaren atal edo egiteko berezi baten kodea eta datuak gordetzen dituzte. Horrek programa nagusitik liburutegiek duten kodeari deiak egitea ahalmentzen du, programa nagusian guztia programatzen ibiltzen jardun beharrean. Adibide nabarmena dira aparailu desberdinekin komunikatzeko sortzen diren kode- liburutegiak. Demagun GPS berezi batekin komunikatzeko protokoloa nahiz kodea liburutegi batean gordeta dugula. Norbaitek GPS horrekin komunikazio-errutina bat osatu nahi badu, ez dauka kode guztia idazten hasi beharrik. Nahikoa luke liburutegia inportatu eta 20
  • 28. 3. Softwarea haren funtzioak erabiltzearekin. http://www.ladyada.net/library/arduino/libraries.html Show Sketch Folder. Programa edo errutina direktorioa bistaratzen du. Hor gordetzen dira guk aurrez eginak ditugun programa guztiak. Add File. Gure programa nagusiari errutina bat gehitzen dio. Horrek proiektuei artxiboak gehitzea ahalbideratzen du. Errutina berria fitxa berri batean irekitzen da. Hurrengo adibidean, lau artxiboko programa nagusi bat duzue. 21
  • 29. 3. Softwarea Auto Format. Honek gure kodea formateatzen du. OHARRA: Zer da kodea formatu onean mantentzea? Beharrezko oharrak jartzea, edo gehiegi ez jartzea, eta funtzio edo atal desberdinak egoki tartekaturik edukitzea da. Denboran atzera egindako kodea edo beste norbaitek eginikoa egoki formateaturik ez izateak burukomin handiak sor liezazkiguke, eta sortzen dizkigu sarritan. Kodea formatu onean edukitzea azpiko arropa egokia izatea bezalakoa da; ez da ezinbestekoa, ezinbestekoa bihurtzen den arte. Archive Sketch. Kodea gorde, karpetaratu eta konprimatu egiten du; eta edozein foro, blog edo tutorialetan zintzilikatzeko modu egokian paketatzen du. Board. Erabiltzen ari garen Arduinoa aukeratu behar da lista honetan. Arduino softwareak ez du berak bakarrik ezagutzen plaka; hortaz, plaka desberdin bat konektatzen dugun bakoitzean, kontu izan behar da egokia aukeratzeko. Bestela, ez da komunikaziorik izango . 22
  • 30. 3. Softwarea Serial Port. Gure ordenagailuak dituen serie-konexioko Arduino guztiak bistaratzen ditu.Tools menua luzatzen dugun bakoitzean, bere kasa aktualizatzen da. Windows-en COM1 edo COM2 balioa hartzen du serie-konexioa duten gailuentzat, eta COM4, COM5, COM6 edo handiagoa USB konexioa duten gailuentzat. Kontuan izan programa kargatzeko garaian portu egokia aukeratu behar dela; horretarako, gailu-kudeatzailea erabili. Programmer. Gure Arduino plakaren bootloaderra grabatu nahi dugun kasuan bakarrik erabiliko dugu aukera-lista hau. Kasu oso aurreratua izaki, kontzeptu batzuk gainetik aipatuko ditut, eta kasu praktiko batera mugatuko dut azalpena. Gehiagorako, kontsultatu; http://www.ladyada.net/learn/avr/programmers.html Arduino mihiztatuak erabiltzen ari zaretenok ez duzue tarte honen beharrik. Mikro batekin komunikatu nahi dutenek beharrezko dute “programmer” bat. Beraz, oso garratntzitsua izango da mikroak eta Arduinoak izango duten konexio mota (Serie TTL, USB, portu pareloa, etab.). Programmer mordoa daude aukeran, baina nagusienen ezaugarriak aztertuko ditut. 23
  • 31. 3. Softwarea ISP (In sistem Programming) → Programazio mota honekin txipa zirkuitutik atera gabe programa daiteke. Sistema honetan oinarritzen dira Arduinoa programatzaile gisa erabiltzeko aukera guztiak; bai AVRa, bai USBtiny-a ere. Horiek komunikazio-protokoloan eta -bidean bakarrik desberdintzen dira; batean TTL seriea, eta bestean USB. Guk hau guztia ez dugu sumatuko; izan ere, plakak berak du USB-SerieTTL bihurgailu bat, eta, beraz, ez dugu Arduinoa programatzean programmer funtziorik erabiliko. Baina bada kasu bat, nahiko orokorra gainera, Arduinoa Txip programatzaile gisa erabiliko duguna. Hori Arduino berriak geuk egiterakoan da. Baldin eta Arduinoa geronek mihiztatu nahi badugu, bi aukera ditugu Atmega 168-a, adibidez, erosteko garaian: bootloaderra dakarrena erosi edo bootloader gabekoa erosi. OHARRA: Bootloaderra abio-gestore bat da, programa nagusia martxan jarri dadin baimentzen duena, eta guztiz aparte programatu eta grabatzen da. Gehienetan babes-neurriak izaten ditu, aparailuaren martxa desegokiak edo aldaketak ekiditeko. Baldin eta bootloader gabeko Atmega 168 txipa erosten badugu (kasurik orokorrena eta merkeena), abio-gestorea grabatu beharko diogu lehenengo, eta, horretarako, gure Arduino Uno-a erabil dezakegu. Arduino Uno-a erabili beharrean beste programatzaileren bat erabili nahi badugu, egoki aukeratu behar dugu. Arduinoa, gure kasuan, programatzaile gisa erabilita, gai izango gara guk sortu nahi dugun Arduino berriaren txipari bootloaderra grabatzeko. 24
  • 32. 3. Softwarea Burn bootloader. Aurreko kasuari jarraiki, guk mihiztatu beharreko arduinoaren txipari (Atmega 168 da orokorrena) bootloaderra grabatzeko agindua ematen dion komandoa da. Gogoratu kasu honetan board atalean plaka egokia aukeratu behar duzuela. Arduino Uno-a kasu honetan programatzaile gisa ariko da lan egiten, eta helburuko plaka Atmega 168-a izango da (Diecimila) gure kasuan. 25
  • 33. 4. Programazioa 4.KAPITULUA:PROGRAMAZIOA Arduinoaren programazioa ez da C lengoaiatik asko desberdintzen. Hortaz, lengoaia honetara ohituta zaudetenoi ezagunak egingo zaizkizue hurrengo kontzeptutatik asko; eta besteoi, berriz, animo. Programazioak ez du oinarrizkoezaguerahandirikbehar,logikanahizkuriositatepixkabatnahikoadiraiaedozeraparatumartxanjartzeko. Arduinoa programazio-jakintza gutxi duten erabiltzaileentzat egin zen bereziki, baina, C lengoaian oinarriturikoaizaki,garatzekobideakinfinituakdira. 1.Egitura Arduino programazioaren lengoaiaren egitura nahiko sinplea da. Bere barruan instrukzioak gordetzen dituztenbifuntzionagusitanbanatzenda: voidsetup() eta voidloop(). Adibidea 1.setup() Programanexekutatzendenlehenfuntzioada,etaBEHINbakarrikexekutatzenda.Hurrengolanak hartubehardirafuntziohonetan. Programanerabilikodiren aldagaiak deklaratu. pinMode()-a erabiliz, pinei beren egitekoa finkatu: edo sarrera (INPUT) edo irteera(OUTPUT). Serie-komunikazioakabiatu. Serial.begin(abiadurabaudio/s) Adibidea: Programa honek serie-komunikazioaren abiadura 9600 baudio/s-ra mugatzen du, eta 13. pina irteera-pinaizangodelaadieraztendu. 26
  • 34. 4. Programazioa OHARRA: Serie-komunikazioak abiatzeko garaian (Arduinoaren datuak ordenagailura pasatzeko ezinbestekoa),konstantebatpasatzenzaioabiaduragisa. Baudioak komunikazio-egoerabatenaldaketakopuruaadierazikodigu,eta,beraz,baudi/s-akezdirabit/s-en berdinak,komunikazio-saiobakoitzeanbitbatbainogehiagobidaliedoharbaitaiteke. Hori horrela, esan beharra dago 9600 baudio/s-ko abiadura dela ia beti erabiltzen dena, serie- komunikazio azkarnahizeraginkorbatbermatzenbaitu. 2.loop() Programan ondoren exekutatzen den funtzioa da. Funtzio honen kodea behin eta berriz exekutatzen da, bukaerarik gabe. Funtzio hau da Arduino programa guztien nukleoa, eta berak egiten du lanikhandiena.Hemenjoangodiraidazketa,irakurketa,konparazio,eragiketaetaantzekoakzioguztiak. Adibidea 3.funtzioak() Deiaegindakoan(void)exekutatzendirenkodeakdira.Programanerrepikatzenden kodea ez erabiltzeko sortzen dira. Funtzio bat deklaratzean, lehenengo, bueltatuko duen balioa deklaratzen da (int, foat,..);gero,funtzioarenizenadeklaratzenda,deitzeanpasabeharkodizkiogunparametroekinbatera. Adibidea Aurrerago,programanzeharfuntziohaunahiadinaaldizdeitudaiteke. 27
  • 35. 4. Programazioa Adibidea 4. Giltzak {} Giltzekfuntzio-blokearenhasieraetabukaeramarkatzendigute.Giltzaguztiekbikoteanetorribehar dute;irekierakogiltzaguztiek,beraz,itxierakobatbeharduteeduki. Arduino IDEak badu giltza-balantzea txekeatzeko modu berezi bat ere.Aukeratu irekierako giltza bat,etasoftwareakberakargitukodu nonduenitxierakoa. Adibidea 5.Puntuetakoma; . Deklarazio bakoitzaren ondoren jarri beharreko sintaxia da.. Programaren elementuak banatzeko erabiltzen da. Puntu eta koma bat ahazteak konpilazio-akatsa emango dizu, eta ezingo duzu programa Arduinoraigo. Ohartuiruzkinenondorenezdagoela(;)puntuetakomajarribeharrik. Adibidea 28
  • 36. 4. Programazioa 6.Iruzkinak// Programa guztiek behar dituzte iruzkinak. Horiek programaren nondik norakoak esplikatuko dituzte, eta nahiz eta ez izan kodea –ez, behintzat, ondoren konpilatuko den kodea – ezinbestekoa da programaongiestrukturatzekogaraian.Etorkizunerako,memoriagisaosobaliagarriaksuertatzendira. Zenbait programatzailek –gehienek esango nuke nik– iruzkinik gabeko kodea ilargirik gabeko eguzkia bezalakoa dela diote; argituko gaitu gehienetan, baina gehien behar dugunean, beste nonbaitera egingoduargia,etaezdugujakingonora,ilunpetanutzigaitueta. Iruzkinak beharrezko ikusten ditugun aginduetan bakarrik jarriko ditugu; programaren helburuaz ezer ez dakien baina kodea uler dezakeenak laguntzarako izango lituzkeen tokietan bakarrik. Iruzkin gehiegikiruzkinenbalioaezerezeanuztendute. Zentzuak,praktikaketabesteiruzkinakirakurtzeakerakustendute,azkenean,nolaegokituiruzkinak programari. Adibidea 2.Aldagaiak Aurrerago programak erabiliko duen balio numeriko bat gordetzeko forma bat da aldagaia. Izenak ongi adierazten duen moduan, balioz aldatuz doazen zenbakiak dira, konstanteak ez bezala, horien balioa ez baita inoiz aldatzen. Aldagaiak deklaratua izan behar du beti, eta, ondoren, programatzailearen esku geratzen da hasierako balio bat ematea. Aldagai bat deklaratzeak bere baitan gordeko duen balioa zein motatakoa izango den esatea dakar (int, long, float,...), lehenengo, eta aldagaiari izen bat ematea, ondoren. Deklarazio hori programa guztian zehar behin bakarrikeginbeharda,etaaldagaiarenbalio-aldaketa,aldiz,programannahiadinaaldizgertadaiteke. 1.Aldagaienerabilera-eremua Aldagaiak, non deklaratzen diren, bi motatakoak izan daitezke, globalak edo lokalak. Aldagaiadeklaratzekogaraian,kontuanizannonerabilikoduzuen,eta,horrenarabera,eraglobaleanedoera lokalean deklaratu. Dudak baldin badituzue, emaiozue pasaporte anitza; egin aldagai globala, eta arazo gutxiagoizangoduzue. 1.Aldagaiglobalak Programabatekoedozeintokitankontsultatunahizerabildaitezkeenaldagaiakdiraaldagai globalak.Programarenhasierandeklaratzendira, setup() funtzioarenaurretik. 29
  • 37. 4. Programazioa Adibidea 2.Aldagailokala Aldagai lokalak funtziobatenbarruanedo for lazobatenbarruandeklaratzendiren aldagaiakdira..Deklaratudirenfuntzioarenbarruanbakarrikirakuredoerabildaitezke.Horrek programa berean, funtzio desberdinen barruan, izen berdineko baina balio desberdineko bi aldagai izateaahalbidetzendigu. Adibidea 2.Aldagaimotak 1.char Karakterebatgordetzenduberebarnean.KarakterehoriASCII kodekokaraktere batizangoda(Adibidez: a, b,c, H, &, Ñ,....).Osoegokiadahitzakgordetzeko. AldagaiarenASCII karaktereabierataragordedaiteke:karaktereberaemanez 30
  • 38. 4. Programazioa kakotxarteanedotakarakterearidagokionbaliodezimalaemanez. char aldagaiakerabiltzerakoan,osobaliagarriaizangozaizueASCIItaula: 2.byte Komarikgabekoeta 8bitekobalionumerikobatgordetzendu.Beraz, 0 tik 255 artekozenbakiabeharduizan,ezhandiagoaeztxikiagoa. byte angelua =180; //angeluaaldagaiabytemotakoadeladeklaratzendu 3.int-OSOA- Komarikgabeko 16 biteko(2byte)balionumerikobatgordetzendute,zenbaki 31
  • 39. 4. Programazioa OSOA deiturikoa.Beraz, -32768 tik 32767 artekozenbakiabeharduizan,ezhandiagoaez txikiagoa. int luzera =1550; //luzeraaldagaiaint motakoadeladeklaratzendu OHARRA: Zenbaki osoek ez dute komarik. Sentsoreen irakurketak (int) batean gordetzean koma galtzea ekarrikodu. Demaguntenperatura-sentsorebatek 3,8V-ekobalioaematendigula.Baliohori int =tenperatura;aldagaian sartzenbaldinbadugu,automatikoki 3 bihurtukodelajakinbehardugu. Osoaldagaierabiliakdira,memorianespaziogutxierabiltzendutelako,etaberenartekoeragiketakosoazkar egitendirelako.Aldiz,sentsibilitatehandiagoabehardugunkasuetan, float aldagaiakerabiltzenikasibeharkodugu. 4.long Komarikgabeko 32 biteko(4 byte)balionumerikobatgordetzendute. Beraz, -2146483648 tik 2147483647 artekozenbakiabeharduizan,ezhandiagoaeztxikiagoa. long segundoak =900050; //segundoakaldagaialong motakoada 5.float Komadunzenbakiakgordetzekoerabilikodiraaldagaihauek.Komaflotantegisa deklaratzenditu,etaprogramakbeharrezkoprozesuaemangodieeragiketakegiteko garaian. 32 biteko(4byte)baliomoduangordetzendira.Beraz, -3.4028235E-38 tik 3.4028235E38 artekozenbakiabeharduizan,ezhandiagoaeztxikiagoa. float tenp =18.14; //tenpaldagaiafloatmotakoadeladeklaratzendu Adibidea 6.array arrayakzenbaki-zerrendabatdira.Arrayarenbarnekozenbakiakbyte,int,long edo float motakoak izan daitezke. Zenbaki-lista bat izatean, oso garrantzitsua da bai zein balio sartu dugunzenbakibakoitzean,baitazenbakihorrekzerrendanduenposizioaere. arrayadeklaratzekogaraian,zeinzenbakimotazosatuadagoenesangodugu,eta 32
  • 40. 4. Programazioa zenbat zenbakiz osaturik dagoen, ondoren. Kontuan izan – eta honek nahaste askotara bideratzen gaitu– 0posizioalehenengoposizioadela.Alegia, num[4] array batek5zenbakiizangoditubere barnean,0-1-2-3-4posizioetan. int num[4] ={0,0,0,5,0} //numaldagaia5posiziokoarraygisadeklaratzendu,etabalioakeman. arrayaribalioakematekonahizbertakobalioaklortzeko, nahitaezkoadazein posiziozarigarenesangodigun indizea adieraztea. num[2] =10; //numarrayaren3.posizioan10zenbakiasartzendu. Honelageratukozaigu,beraz,gure arraya. arrayetikbalioakirakurtzekogaraianere,indizeaerabilikodugu. x=num[3]; //xaldagaiarenbalioa5izangodaorain(x=5). 3.Konstanteak Arduinoprogramakaurrezdefiniturikozenbaitkonstanteditu.Programakirakurterrazagoakegiteko erabiltzendira. 33
  • 41. 4. Programazioa 1.TRUE/FALSE Egoera logikoak adierazten dituzten konstante BOOL-earrak dira. FALSE - 0 - gisa definitzenda,eta TRUE - 1-gisa.. Adibidea 2. HIGH/LOW Konstante hauek pinen egoera altua edo baxua adierazten digute. HIGH egoera altu gisa definituadago,etaLOWegoerabaxugisa.Bakoitzaktentsioelektrikobatdaukaberari lotua.Osoerabiliakdira programazioan. HIGH-> ON (5V) -> 3V–5V artean LOW-> OFF(0V) -> 0V -1,5V artean Kontuan izan sarrera digital baten irakurketa egiten ari garenean arduinoak HIGH moduan hartzen dituela 3V-etik gorako tentsioak, eta LOW gisa 1,5V-etik beherakoak. Tartean geratzen diren tentsioak (1,5V-3V) ezezagun moduan hartzen ditu, eta ez ditu ulertzen balio logiko gisa. Erantzuna edozein izan daiteke kasu horietan. Adibidea 3. INPUT/OUTPUT pinMode() funtzioak erabiltzen dituen konstanteak dira, pin digitalek SARRERA edo IRTEERAgisalanegingodutendefinitzeko. Adibidea 4.Eragiketak Arduinoaprogramatzekogaraian,hurrengoeragiketaaritmetikoakerabiltzendira. 34
  • 42. 4. Programazioa Kontuan izan eragiketaren erantzuna oso baldintzatua dagoela eragiketan erabiltzen diren eragile motekin. OHARRA: Eragiketaren emaitza erabiltzen diren eragileen mota berekoa izango da. Demagun 9/4 eragiketa egiten dela. Erantzuna 2 izango da, eragileak 9 eta 4 zirelako (OSOAK) eta erantzuna ere OSOA izango delako,(2),etaezfloat(2.25). Eragileak zenbaki mota desberdinetakoak baldin badira, erantzuna zenbaki kota luzeenekoa izango da. Demagun9/2.4eragiketadugula.Erantzunafloatmodukoaizangoda,hots,(3.75),bietatikluzeena(4byte). Aldagai baten izatea aldatzeko, cast operazioa erabiliko dugu. Hona hemen float bat int bihurtzeko era erraz bat. Adibidea 1. Konposizio-eragiketak Osoerabiliakdira for() {}lazoetan,kontrol-aldagaiarenaldaketaprogresiboaegiteko. 2.Konparaketa-eragiketak Oso erabiliak dira if() {} deklarazioetan, kondizio jakin bat egiazkoa ala gezurrezkoa den jakiteko. 35
  • 43. 4. Programazioa 3.Eragiketalogikoak ETA(&&), EDO(||) eta NOT(!) eragiketalogikoakdira.Konparaketataldeetan erabiltzen dira gehienetan, bi kondizio batera, biak bakanean, edo bietatik bat ere betetzen ez den ziurtatzeko. 4.Matematikoak Eragiketamatematikoohikoenakditugu,lehenengo. Balio-tarteaaldatzekoeragiketak,ondoren;osoerabiliakSENTSOREENirakurketak egitean.Lehenengo,mappeo-aikusikodugu,balio-tarteaaldatzekoosoeragiketaerabilia. 36
  • 44. 4. Programazioa Ondoren, estutzea, constrain() ikusikodugu,balio-tartejakinbatetikkanporairtetendiren balioak mespretxatzekoosoerabilia. OHARRA: Sentsore bat irakurtzen dugun unean, Arduinoak bere barnean duen konbertsore analogiko- digitalak 10biteko balio-tartean dagoen balio batematendio,alegia, 0tik 1023 artekozenbakibat.Horrek 5mV-eko sentsibilitateaematendioirakurketari,baldin 5V-ekoerreferentziarekinlaneanaribagara.Horidakasurikohikoena. Ondoren,zenbakihoritratatuetairteeraanalogikobateraeramannahibaldinbadugu,osopresenteizanbehar dugu irteera analogikoek duten balio-tartea 8 bitekoa dela, alegia, 0tik 255 arteko zenbakiak bakarrik onartzen dituztela. Beraz, bi balio-tarteen arteko konbertsio bat egitea ezinbestekoa da; bestela, okerreko irakurketa-idazketa bat egitenarikogara!! Badira eragile batzuk konbertsio hau egiteko, eta aurrerago aztertuko ditugu; baina bada oso erabilia den konbertsioazkarbatere. 37
  • 45. 4. Programazioa Bibalio-tarteenmaximoak 1024 eta 256 direla jakinda,nahikoa da balio-tarte altukoirakurketaguztiak /4 egitea,etalistoizangodugu 10biteanegindugunirakurketaren 8bitekoproportzionala. 5.Zenbakialeatorioak Zenbait aplikaziotan beharrezko izango ditugu zenbaki aleatorioak. Demagun loteria-makina bat diseinatunahidugula,edotakolorealeatoriozpiztukodenLedargibat.Kasuhorietan,programazsortubehar dituguzenbakialeatorioak,eta,ondoren,irteeretaratransmititu. Arduinoakezduzenbakialeatorioaksortzekoerremintapropiorik,bainaharenbifuntziojakinerabil ditzakegu zarata elektrikoa neurtzeko, eta horiek emango digute zenbaki aleatorioa (random) sortzeko hazia (seed). analogRead() funtzioa da horretarako gehien erabiliko duguna. Konektatu GABEKO edozein sarrera analogiko hartuko dugu, eta bertan dagoen zarata elektrikoa erabiliko dugu zenbaki aleatorioak sortzeko. Hori bezalaxe, milis() funtzioa ere erabil genezake, eta zenbaki aleatorioen sekuentzia errepikatuanahi dugunean,baita konstante batere. Bi funtzio erabili behar dira hori aurrera eramateko: lehenengo, randomSeed() funtzioa, hazi aleatorioasortzeko;ondoren, random() funtzioa,zenbakialeatorioasortzeko. 1.randomSeed() randomSeed(analogRead(1)); //Zenbakialeatorioasortukodu1.sarreraanalogikokozaratarekin. //Parametro gisahaziasartubeharzaio; analogRead(),edo milis() //edo konstantebat. 2.random() random(100,200); //Parametrogisazenbakialeatorioazeinzenbakitartetannahidugun //esanbehardiogu;kasuhonetan100eta200artekozenbakialeatorioa //bueltatukodigu. 38
  • 46. 4. Programazioa Adibidea 6.Denbora-funtzioak Oso erabilia, lehenengoa behintzat, bi akzioren artean denbora-tarte bat itxarotea nahi dugunean. Ikusditzagun,bada,delay()etamillis()funtzioak. 1.delay() Gureprogramapausatukoduparametroanadieraztendizkiogun milisegundoetan zehar. delay(1000); // 1sg itxarongodu 2.millis() Arduinoa programa exekutatzen hasi denetik zenbat milisegundo pasatu den adieraziko digu.Zenbakihaugainezkatuegingozaigu,9batordupasaondoren. value= millis(); //Sartu value aldagairaprogramahasidenetikpasatudendenbora 7.Fluxu-kontrola 1.if(baldintza) { } .... else{ } if sententziak pasa zaion baldintza egiazkoa den begiratzen du, eta, hala bada, giltza artean dauden aginduakbetetzenditu.Bestela, else-nkakotxenarteandagoenaegitendu. else gabeko sententzia bada eta if-en baldintza ez baldin badu betetzen, ezer egin gabe programanaurreraegingoduhurrengopausuraarte. else sententzia guztiz hautazkoa da, beraz. if edo else baten barruan beste nahi adina if .. else sententziajargenitzake. 39
  • 47. 4. Programazioa Adibidea 2.for (aldagaiahasieratzea,baldintza,aldagaiarenaldaketa ) { } for sententziagiltzenartean{}gorderikoagindutaldebatzenbaitetanerrepikatzeko erabiltzenda.Birabakoitzeanaldatukoden aldagai baterabiltzendagehienetan, hariketa baldintza beteeta lazoageratzenduenarte. Aldagai lokal baten edo gehiketa kontatzaile baten hasieratzea egiten da, lehenbizi, eta behinbakarrik,gainera.Aginduakbetetzenditu,etalazoaamaitzenduenbakoitzean,baldintza betetzenotedenbegiratzendu.Baldintza TRUE denbitartean,aginduakegitenditubehineta berriz, etakontrol-aldagaiaaldatzendu.Baldintza FALSE denkasuan,lazoaamaituegingoda, eta sententziatikatera. Hurrengo adibideak plakan integraturiko led-a 20 aldiz piztu-itzaltzea ekarriko du. Kasu egin nolahasieran i kontrolaldagaia =0 gisahasieratueta integer gisadeklaratzenduen.Ondoren, 20 bainotxikiagoadenarteanjarraidezalaesatendio,etabueltabakoitzean( i++), i-renbalioaribat gehitu diezaiola. Ondorioz, giltzen artean duen guztia 20 aldiz errepikatuko du, eta, kasu honetan, 13.pinapiztuetaitzali. 40
  • 48. 4. Programazioa Adibidea 3.while (baldintza) { } while lazoaetengabeerrepikatukoda,parentesiarteanduenbaldintza FALSE bihurtzen den arte. Zerbaitek lazo barruan kontrol-aldagaia aldatu beharra dauka; bestela, while lazoa ez da inoizamaituko,etaprogramablokeatutageratukoda.Aldaketahorikodeanegindaiteke,while bukaeranaldagaiaribalioaigoz,adibidez,edotakanpokoegoerabatibaldintzatuaizandaiteke, sentsorebatenirakurketa,esaterako. Hurrengoadibidean, 200 aldizidatzikodugauzaberaserie-monitorean.Lehenengo, baldintzagisa, i<200 denarteangiltzaarteandagoenaegindezalaesatenzaio.Ikusinolagiltza artekoazkenaginduakontrolaldagaiaribatgehitzeaden. Adibidea 4. do......while (baldintza) { } do lazoaerrepikatukodu, while baldintzabetetzendenartean. while lazoarenoso antzekoa da. Desberdintasun bakarra dago. Kasu honetan, baldintza lazoaren amaieran begiratzen da. Horrek esan nahi du nahiz eta baldintza FALSE izan lazoaren barruan dauden aginduak behin behintzateginegingodirela. Hurrengo adibidean, sentsore baten irakurketa x aldagai batean gordetzen da; ondoren, berdinaegitenjarraidezalaesatenzaio,irakurketa100bainotxikiagoadenbitartean. 41
  • 49. 4. Programazioa Adibidea 8. I/Odigitalak Irteera-sarreradigitalenberezitasunabierataralaneginahalizateada.Horidelamedio,lehengozein lan egingo duten deklaratzea tokatuko zaigu. Ondoren, zerrendatuak daude sarrera-irteera digitalak kudeatzekoerabilienakdirenfuntzioak 1.pinMode(pin,Modua) voidsetup() funtzioandeklaratzendirasarrera-irteeramoduan.Horesangozaiopinberezi batiea INPUT (sarrera)edo OUTPUT (irteera)gisalanegingoduen. Adibidea OHARRA: Arduinoaren pin digitalek INPUT gisa lan egiten dute, deklaratzen ez baldin badira. Pull Up erresistentziakerebadituzteintegraturik,bainadeskonektatutadaude,berez. Bada Pull Up erresistentziak softwarez konektatzeko modu bat ere. Normalki, fisikoki konektatu ohi dira, kanpo-kableatu gisa –aurrerago ikusiko dugun bezala– baina erresistentzia faltan baldin bazaudete, trikimailu hau ongietorrikozaizue,Arduinoarensarreraerreezdezazuen. Adibidea(PullUperresistentziaksoftwarezaktibatu) 2.digitalRead(pin) Pin bateko balioa irakurtzen du, HIGH edo LOW moduan. Gehienetan, aldagai baten barneansartuohidairakurketa.Zeinpinetakobalioairakurrinahidugunesanbehardiogufuntzioari, etahorizenbakibitartezedoaldagaibitartezesandiezaiokegu. 42
  • 50. 4. Programazioa Adibidea 3. digitalWrite(pin) Pin jakinbati HIGH edo LOW balioa ematen dio. HIGH balioaemanezgero, pinhorrek 5V izangoditu; LOW balioaemanezgero,berriz, 0V. Adibidea 9. I/Oanalogikoak Sarrera-irteera analogikoek, digitalek ez bezala, ez dute programaren hasieran zein egoeratan lan egingodutendeklaratubeharrik.Sarreraetairteeraanalogikoakfisikokipindesberdinakdira. 1.analogRead(pin) Pinanalogikobatekobalioairakurtzendu,eta 10bitekokonbertsoreanalogiko-digital batenbitartez 0-1023 artekobaliobatematendioirakurketari. Normalki,irakurketaaldagaibateangordeohida. Adibidea 2.analogWrite(pin,value) Balioseudo-analogikobatidaztenduesangodiogunpinean.Baliohori PWM modulazioanoinarritutaidatzikodu.Kontuanizanbalioa 8biteanemangodiogula.Alegia, irakurketaanalogikobatenbalioa(10bit)zuzeneanirteeraanalogikobateanidatzi nahidugun kasuetan,balio-tarte konbertsiobateginbeharkodugu. PWM irteeraanalogikoaonartzendutenirteerakhurrengoakdiraArduino Uno-an; 3, 5, 6, 9, 10 eta 11. Adibidehonetan, 5.irteeraanalogikoan, 8bitekobalio-tartetik(0-1023 artekozenbakiak) erdikoapasadiogu,alegia, 127. PWM pultsu-modulazioaerabiliz 5.irteeran 5V balio maximoarenerdiajarrikodigu, 2,5V, alegia. 43
  • 51. 4. Programazioa Adibidea 10. Serie-funtzioak Arduinoakordenagailuradatuakbidalditzanerabilikodituguhurrengofuntzioak.Osoerabiliak,edo, beti erabiliak direla esango nuke. Ez dago lehenengoan ondo ateratzen den muntaiarik, eta ondo dator Arduinoarenetaordenagailuarenartekokomunikazioabegiratzeko,datuakongiirakurtzenarigarenjakiteko alaakatsakableatuandugunkonturatzeko. Arduino softwareak serie-komunikazio monitore bat du; bertan azalduko dira idatzita serie- konexiozbidalikoditugundatuak. 1.Serial.begin(rate); Serie-portua ireki, eta datu-transmisioaren abiadura deklaratzen du.Abiadura tipikoa 9600 baudio/s izanohida. voidloop()-eanegitenzaiofuntziohorrideia. Kontuan izan serie-komunikazioa erabiltzen dugun bakoitzean 0 (RX) eta 1 (TX) pinak ezindirelaerabili. 2.Serial.print() etaSerial.println() Funtzio honek datuak inprimatzen ditu serie-portuan. Serial.println()-ak agintzen dioguna inprimatu ondoren, hurrengo lerrora bidaliko du kurtsorea, hurrengo inprimatzea hurrengo lerroan izandadin. Funtzio hauei idatzi nahi dugun aldagaia bidaliko diegu, edota, kakotxen artean idazten badugu,baitazuzeneanidatzinahidugunaere. Hurrengoadibideakbizenbakialeatorioidaztendituserie-monitorean.Kodealasaiirakurri, eta ondoan duzue serie-monitorean idatzirik agertzen denaren argazki bat. Kontuan izan hemen garrantzitsuenainprimatzekofuntzioarisartzendizkiogunaldagaiakdirela. 44
  • 53. 5. Arduinoa konektatu 5.KAPITULUA:ARDUINOAKONEKTATU Hauirakurtzenhasizaretenerako,bidirakasuposibleak:honezkerokokoterainozaudetekodigoairakurtzeaz, edo irakurri ere ez duzue egin nola programatzen den. Edonola dela ere, bada garaia praktikara pasatzeko, eta kableekin jolastu behar dugu oraingoan.. Beraz, pazientzia pixka bat gorde oraindik, eta ikus dezagun Arduinoaren sarrera-irteerakzeinmodutankonektatzendiren. 1.Sarrera digitalak(Pultsagailuak...) EZ. Sarrera digitalak konektatzeko, bi konekzio mota aurkituko ditugu, eta ondoen etortzen zaiguna erabiliko dugu, kasuaren arabera, Pull Up konexioa ala Pull Down konexioa. Sarrera digitalak ON-OFF balioak baizik hartzen ez dituzten elementuak dira, hala nola pultsagailuak, etengailuak, inklinazio-sentsoreak, presentzia- detektoreak, etab. Norbaitek pentsa lezake sarrera digital batera zuzenean konekta daitekeela 5V-eko elikadura –kasu honetan pultsagailubidez–etafuntzionatzenduela.Bainaezdainoizegiten,etaezdaeginbeharere,eta harazergatia. Sarrera digitala konektatu gabe dagoenean, airean geratzen da, eta zarata elektrikoa sartzen zaio, eta ez du0baliologikoa. Eroalea luzea den kasuan eta pantailarik gabe, tentsio-erortzeak handiagoak dira, eta, konektatua egoteanere,zarataelektrikoasuertadaiteke. 46
  • 54. 5. Arduinoa konektatu BAI. Hori guztia dela eta, ondorengo konexioak erabiliko ditugu beti, detektore digitalak konektatzeko garaian. Adibideetan,pultsagailuakerabiliditut,osoohikoelementuakdirelako. 1.Pull Upkonexioa Konexio mota honetan, pultsagailua masaren eta sarreraren artean konektatzen da, eta Pull Up erresistentzia sarreraren eta tentsio-iturriaren artean (5V). Pultsagailua sakatzen den unean, sarrera masara eramangodu;alegia,sarreran0Vbalioairakurrikodugu.Pultsagailuasakatugabedagoenean,aldiz,sarreran 5V balio logikoa izango dugu. Ez da 5V-eraino iritsiko, tentsio-erortze txiki bat izango dugulako; baina, sarrerako inpedantzia oso handia denez, Pull Up erresistentzian dugun tentsio-erortzea guztiz mespretxagarriada. Kontuan izan konexio hau egitean logika negatiboko pultsagailu bat lortuko dugula; alegia, pultsagailuasakatugabe,sarreran5Vizangoditugu,etapultsagailuasakatutakoan,ordea,0V. 2.PullDownkonexioa Konexio mota honetan, Pull Down erresistentzia masaren eta sarreraren artean konektatzen da, eta pultsagailua, berriz, sarreraren eta tentsio-iturriaren artean (5V). Pultsagailua sakatzen den unean, sarrera 5V- eraeramangodu.Pultsagailuasakatugabedagoenean,aldiz,sarreran0Vbalioaizangodugu. Kontuan izan konexio hau egitean logika positiboko pultsagailu bat lortuko dugula; alegia, pultsagailuasakatugabe,sarreran0Vizangoditugu,etapultsagailuasakatutakoan,ordea,5V. PullUp PullDown 47
  • 55. 5. Arduinoa konektatu 2.Sarrera analogikoak(Sentsoreak...) Sarreraanalogikoakkonektatzean,askoaldatukodakonexioa,hiruharikodetektoreaalabiharikoadugun. 1.Hiruharikosentsoreedoeragingailuak Sail honetakoak ditugu potentziometroak, hurbiltasun-sentsoreak, zenbait tenperatura-detektore, argi-detektoreak, eta abar. Kontuan izan hiru hariko detektoreak bi hari erabiltzen dituztela elikatzeko, eta hirugarrena,erdikoagehienetan,detekzio-seinaleaemateko. Arduinoarensarrerarakonektatzekogaraian,seinaleaematendiguneroaleakonektatuko dugusarreraanalogikora. 2.Biharikosentsoreedoeragingailuak Sailhonetanaurkitukodituguerresistiboakdirensentsoregehienak; NTC, PTC eta LDRak, ezagunenak. Biharikosentsoreaktentsio-zatitzailebitartezkonektatukoditugu;ondoren,detekzioaren doikuntzaegingodugu,konektatudugunerresistentziarenarabera. 48 Elikadura + Elikadura - Seinalea TMP 36 Tº sentsorea Arduinoaren sarrerara LDR argi sentsorea FSR presio sentsorea
  • 56. 5. Arduinoa konektatu 3.Irteera digitalak(Led-ak...) Irteera digitalek gehienez 40mA-ko korrontea ematen digute. Hori oso kontuan izan behar dugu, Led-ak eta antzekokontsumoadutenelementuakkonektatzean. Led batean, korronte onargarria 5mA-tik 30mA-ra doa; beraz, irteera digitalak emango digun tentsioa 5V delajakinik,errazkalkuladezakeguLed-arekinserieanipinibeharkodugunerresistentziarenbalioa. Kontsumo baxuko elementuren batera bideratu behar dugun edozein irteera digital zuzenean konekta dezakegu, betiere kontsumoa 40mA baino txikiagoa den heinean. Bestela, transistoreak erabili beharko ditugu irteerarenetakargarenartean. 49 Led-aren konexioa: Kontsumoa < 40 mA Errelearen konexioa: Kontsumoa > 40mA
  • 57. 5. Arduinoa konektatu 4.Irteera analogikoak(Led-ak,serboak,motortxikiak...) 1.Kontsumotxikikoirteerak(Erreleak,motorrak,kargaerresistiboak...) Irteera analogikoek PWM bitartez modulaturiko 5V-eko seinale bat ematen digute. Hemen ere kontsumomaximoa40mA-koaizangoda,etakargatxikiakbainoezingodirakonektatu.Kargarekinseriean 220Ohm-ekoerresistentziabatkonektatzeagomendatzenda,bainazuzeneanerekonektadaitezke. 2.Kontsumohandikoirteerak(Erreleak,motorrak,kargaerresistiboak...) Kontsumo handiko irteerak konektatzeko, potentziako etapa bat konektatu beharko dugu Arduinoaren irteeretan. Nahiz irteera digitala edo analogikoa izan, transistoreak dira erabilienak irteerako seinaleaanplifikatzekogaraian. Transistorebipolarrenkasuan,basean1kOhmeta5kOhmartekoerresistentziajarriohida,etakalkuluaerraz egindaiteke, basetiksartzendenkorrontea5mAingurukoa izandadin. 50
  • 58. 5. Arduinoa konektatu Rb= (5-0,7)/5mA=1kOhm Mosfettransistoreenkasuan,ezdaateaninongoerresistentziarikjartzen,inpedantziahandiamedio. 5.Kontrolagailuak(Step-stepmotorrak,motorrak,Led-matrizeak....) Merkatuan, ehunka aplikaziotarako kontrolagailuak aurki ditzakegu. Horiek, Arduinoaren irteeretara konektaturik, gailu multzo handia erraz gobernatzeko aukera ematen digute. Hemen ezagunenak bakarrik jarriko ditut. 51 ULN2003 urratsez urratseko motor-kontrolagailua (14. praktika)
  • 59. 5. Arduinoa konektatu 52 Merkatuko kontrolagailu edo Shield zenbait: Motor shield LCD shield GPS shield Midi shield Joystic shield Power shield AM/FM shieldEthernet shield Xbee Wireless shield
  • 61. 6. Praktikak Arduinoarekin 1. Blink Arduinoarenoinarrizkopraktikadeiturikoada:ezertanhasiaurretikbetiprobatzendena;programaarduinora bidaltzenetataxuziritsidenjakitenlagundukodiguna. Arduinoaren13.pineankonektaturikoLedbatekdir-dir(piztu-itzali)egingodupraktikahonetan.Ezdago Led-azertanpinarikonektatu,baibaituArduinoakberaktxarteleanintegraturiketa13.pinariloturikdagoenLedbat. Beharrezkomateriala ArduinoUno-a Led-a 220Ohm-ekoerresistentzia USBkablea,konektoreaketaBoardplaka (Azkenhauekbetibeharkoditugu;beraz,eznaizbeti listatzenarituko) Konexioak(Hardwarea) Ledbatpiztekokontuanizanbehardugungauzabakarrada 5mAeta30mAarteko korronteak soilikonartzendituela.Hortikgoraerreegingozaigu,etahortikbeheraezduargirikegingo.Bestealde batetik,Led-akjasatenduententsio-erortzea2V-ekoaizangoda. Arduinoarenirteerek40mA-kokorronteaematendigute,gehienez.Led-aserieanerresistentziarik gabekonektatzenbadugu,bigauzalortukoditugu:Led-aerretzeaedoArduinoarenirteeraerretzea.Etaez,ez zaigusegituanerreko;beredenborahartukodu,baina,azkenean,bietatikbaterreegingozaigu.Argigeratu da,beraz,Led-ariserieanbereerresistentziakonektatukodiogula. Konexioaegitekogaraian,220Ohm-ekoerresistentziaaukeratudut,nahizfabrikatzaileek20mA-ko korronteagomendatzenduteneta220Ohm-ekoarekin13mA-kokorronteaezartzendugun.Eskolaargitzeko ezdugu Fukushima-kozentralarenbeharrik,eta,agian,gainera,urtebukaeranPapua-rabidaiabategiteko lainaurreztukodugu. 54
  • 62. 6. Praktikak Arduinoarekin Ohikoakatsak Komunikazioa.Portuegokia ezaukeratzea,programaegokiezkonpilatzeaetaplakaegokiaez aukeratzeadiraohikoakatsak..Noski,hirupausohoriekezinbestekoakdiraprogramaongibidalieta funtzionamenduanjartzeko. Ziurtatu Led-aegokipolarizatuduzuela.Hankamotxaklurrera(Gnd)konektatutabeharduegon. Blink 55
  • 63. 6. Praktikak Arduinoarekin Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) AldatuLed-arenkeinukatze-maiztasuna,delay()funtzioarenkonstanteaaldatuz. KonektatuhiruLedirteeraberdinera,etahandituargi-kantitatea. KonektatuhiruLedirteeradesberdinetan,etaprogramatumaiztasundesberdinetankeinuegin dezaten. 56
  • 64. 6. Praktikak Arduinoarekin 2.Alarma bisuala Pultsagailubatsakatzean,alarmabisualbataktibatukoda,nonLedbatdirdirkajarrikozaigun.Ezda geratuko,hariketaplakandugunResetbotoiasakatzendugunarte. Beharrezkomateriala ArduinoUno-a Led-a 220Ohm-ekoerresistentzia 470Ohm-ekoerresistentzia Pultsagailua Konexioak(Hardwarea) PultsagailuaPullDownerresistentziabitartezkonektatubeharda.Eznaizhemengaiaerrepikatzen hasiko;aurkitukoduzue,atzerabegiratuzgero. . PullDownerresistentziarikkonektatuezean,pultsagailua sakatuadagoenalaezdagoenadierazteko irakurketakosonahasiakizangodira. Zailtasunak Gainontzean,etaaurrekopraktikanezbezala,praktikahonetanLed-akpiztutajarraitubehardu,guk pultsagailuaaskatutaere.Beraz,programazmemoriabatinplementatubeharkodugu,behinpultsagailua sakatuetaalarmamartxanjartzeanalarmakmartxanjarraidezan,nahizpultsagailuaaskatu. Horretarako,lehenengo,pultsagailuakonektaturikdaukagunsarreradigitalairakurribeharkodugu, etaaldagaibateangorde(buttonState).Kasuhonetan,gogoratupultsagailua2.sarrerankonektatzea. 57
  • 66. 6. Praktikak Arduinoarekin Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) Eginberdina,pultsagailuaPullUpgisakonektatuta. Jarriproiektuarialarmaitzaltzekobestepultsagailubat. OsatualarmaunebereanbainakontrakozentzuandirdiraegingodutenbiLed-ez. 59
  • 67. 6. Praktikak Arduinoarekin 3. Inklinazio-detektorea Arduinoak inklinazioakontrolatukodu,inklinazio-detektorebatenbitartez.Inklinaziojakinbatetikaurrera, alarmabisualbataktibatukoda,etaLedbatdirdirakajarrikoda,hariketaberrizeredetektorea horizontalera bueltatzendugunarte. Beharrezkomateriala ArduinoUno-a Led-a 10kOhm-ekoerresistentzia Inklinazio-detektorea(“tiltswitch”) Konexioa(hardwarea) “Tilt”inklinazio-detektoreaPullUperresistentziabitartezkonektatubeharda.Honezkero, badakizuePullDownerresistentziabitartezkonektatzen.ErrazaurkitukoduzuePullUpkonexioanolaegin ere. Gogoratukonexiomotahoneklogikanegatiboaemangodigula;pultsagailuaedodetektoreaitxita dagoenean,0baliologikoa,eta,pultsatuedoaktibatugabedagoenean,1baliologikoa. Zailtasunak Praktikahauaurrekoabainoerrazagoada,izatez.Zuenlehenengodetektoredigitalaren funtzionamenduaulertzeandagozailtasuna.Behindetektoreaknolalanegitenduenjakinda,moldatu programa,lortunahidenalortuarte. Tiltedoinklinazio-detektoreek“itxita”edo“aktibatuta”balioaemangodigutehorizontalean ditugunean,eta“irekita”edo“desaktibatuta”balioa,aldiz,10ºbainogehiagoinklinatzenditugunean. 60
  • 68. 6. Praktikak Arduinoarekin Bai,horreklogikanegatiboadelaadieraztendigu,berrizere. Hala,aprobetxatuegingoduguinklinazio-detektoreaklogikanegatiboaduelaetaPullUpkonexioak logikanegatibokoirakurketaemangodigula,etabiakerabilikoditugu. Voila!! Orain,horizontaleandagoenean,1logikobatjasokoduguArduinoan,etainklinaturik dagoenean,berriz,0logikobat. Horrekprogramazioaaskoerraztukodigu. Ohikoakatsak Errazaematenduenpraktikabatezinmartxanjarriizateagatikpazientziagaltzea.Horreksoluziorik ezdauka.Komunerajoan,bueltatu,eseri,begiakitxi,eskuakondozabaldu,egurraukituetapentsatu:“Ni bainohobetobizidena…” Begiakireki,arnasahartuetasaiatuberriz.Orainaterakozaizu,edoez,bainaberdintsudio. Inklinazio-detektorea 61
  • 69. 6. Praktikak Arduinoarekin Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) Saiatuetengailubatkonektatzeninklinazio-detektorearentokian. Zeinbestedetektorekonektazeniezaiokeenpentsatu,edokonektatu(karrera-amaierak,pieza detektoreak..) KonektatudetektoreaPullDowneran,etaprogramaneginlogika-aldaketa. 62
  • 70. 6. Praktikak Arduinoarekin 4. DYAko anbulantzia Hurrenezhurrenkonektaturikdauden6Lederabiliz,DYAkoanbulantziarenargiaksimulatunahidira. Horretarako,batpiztuetahurrengoapizteanaurrekoaitzalibeharkodugu.Horrek,aldebateraetabesteraegitean,argi- jokobatosatukodigu. Argi-jokoapultsagailubatenbitartezjarrikodugumartxan. Beharrezkomateriala ArduinoUno-a 6xLed 6x220Ohm-ekoerresistentzia 470Ohm-ekoerresistentzia Pultsagailua Konexioa(hardwarea) Ezdagoezerberririk.Led-akserie-erresistentziabitartez,etapultsagailuaPullDownerresistentzia erabiliz. Zailtasunak Praktikahonetanarray-enerabileradazailtasunaduengauzabakarra.Led-enkontrola banan-banan eginbeharrean,array(lista)bateangordekodituguLedguztiak. Ondoren, for aginduaerabiliz,listahorretakoelementubakoitzariegingodiogudei,bai deklaratzekogaraian,baitaLed-akpiztuedoitzaltzekogaraian. C edo Pascal lengoaiakikasidituzuenontzaterrazagosuertaliteke;besteokkodeabistanduzue,eta sareanmilakatutorialgaiansakontzeko. Ohikoakatsak Konexioaskoeginbehardira“boardplakan”,etahorrekkonexio-akatsakugariakizateaekartzen du.Ziurtatu,ezbistazsoilik,elementuguztiakondokonektaturikdituzuela,eta,horretarako,POLIMETROA edoimajinazioaerabili.Bestegauzabatikasteko!! 63
  • 72. 6. Praktikak Arduinoarekin Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) KoloretakoLed-akjarriz,argi-jokoahobetudezakezue. Ledbikoitiakedoezbikoitiakdesberdinduz,eginargi-jokobera. 65
  • 73. 6. Praktikak Arduinoarekin 5.Kandela Praktikahonenbidez,kandelabatsimulatukodugu,Ledbaterabiliz.Irteeraanalogikoarenpotentziala erabiliz,Led-aargikantitatealeatoriozetadirdira-maiztasunaleatoriozpiztukodugu.Horrekkandelabaten iluminazioasimulatukodigu. Giroberezibatsortzendu.Beno,bereziberezia,agian,ez. Eguneuritsubaterakomodukoa,bainaezdu askorikbalio,eztartarengaineanjartzeko,ezetaamonariazterketagaraianematekoere. Beharrezkomateriala ArduinoUno-a Led-a 220Ohm-ekoerresistentzia 470Ohm-ekoerresistentzia Pultsagailua Konexioa(hardwarea) Ezdaezzaidalakolanegiteagustatzen.Ezzaitgustatzen.Bainaezdagokonexiomotaberririk.Led- akserie-erresistentziabitartezetapultsagailuaPullDownerresistentziaerabilizkonektatu.Ezdutberriz jarrikohurrengoan. Dudarikizanezgero,erreparatukonexioensailari. Zailtasunak Zenbakialeatorioenerabilera nolaeginadagoenantzemateak ezdutustebestemundukozailtasunik duenikorainartekopraktikakegindituenarentzat. Delay()eta,batezere,analogWrite()funtzioenbalioarekinjokatu,kandelaahaldenhobekien simulatzea lortzenduzuenarte. IkusilehenaldiadelairteeraanalogikobatetaPWMpultsu-modulazioaerabiltzenduzuena.Led-ak intentsitatedesberdinakhartukoditu,pasatzendiogunbalioarenarabera,etakontzeptuhaubarneratzea izugarriondoetorrikozaiguaurreragokopraktiketarako. Errepasatuirteeraanalogikoarensaila,etaulertuzeregitenarizareten;ondoren,saiatuahaliketa kandelarenitxurahandienaematen.Baina,batezere,zeregitenduzuenjakin. Ohikoakatsak Praktikaondoeginetaarrastorikezizateairteeraanalogikobatekzelanjardutenduen. 66
  • 74. 6. Praktikak Arduinoarekin Kandela Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) Saiatukandelaindardesberdinezpizten,baina5Hz-komaiztasunarekin. 67
  • 75. 6. Praktikak Arduinoarekin 6. Potentziometro batenirakurketa Potentziometrobatenerresistentziairakurrikoduenprogramaegingodugu.Ondoren,irakurritakoaOhm- etarapasa,etabalioaordenagailurabidalikoduserie-portutik, pantailanbistaratzeko. Beharrezkomateriala ArduinoUno-a Potentziometroa10K Konexioa(hardwarea) Potentziometroa eta,bidebatez,hiruharikosentsoreanalogikogehienakerahonetankonektatuko ditugusarreraanalogikora. Alboetakobipinaksentsoreaelikatzekoerabilikoditugu(5VetaGnd),etaerdikopina,seinalea emangodiguna,sarreraanalogikorakonektatukodugu. Gurekasuan,A0sarreraizangoda,bainaalferrikidatzikodut,ondorenmarrazkiaribegiratuetaA1- eankonektatukobaituteaskok.Horixeizangodaondorendatorrenakatsikohikoenetakobat. Zailtasunak Serie-komunikaziozbidalibeharradaukagupotentziometroarenirakurketaordenagailuko pantailara,eta,han,potentziometroakzenbatOhmdituenmasarekikoazaldubehardugu.Beraz,biurrats horiekongietaargieginbeharditugu: Serie-komunikazioaongiabiatu;serie-komunikazioaginduakongiemandirelaziurtatu. Irakurridugunbalioa(0-1023)bitartekozenbakibatda,etaOhm-etarabihurtubehardugu. Horretarako,sentsoreadoitubehardugu,etairakurtzendugunbalioakneurtunahidugunarekinduenerlazio matematikoabehardugu.Suertekobagara,etairakurrinahidugunarenbaliomaximoetaminimoakbaldin badakizkigu,etaerlazioaprogresiboabada, map() funtzioaerabildezakegu.Gurekasuan,jakinda potentziometroa(0-10K)koadelaetasarrerak(0-1023)bitartekobalioaemangodigula,“Jaitxiki”-ko ura bezaingardengeratzendasoluzioa. 68
  • 76. 6. Praktikak Arduinoarekin Nahikokonplikatuadakonbertsioetadoikuntzahoriekegitea.Hala,bada,ezarduratuhasieran zipitzik ereulertzenezbaldinbaduzue.Biharereargitukodueguna. Ohikoakatsak Okerrekosarrerairakurri.Honek,orain,soluziorikezdauka.Punto! Sentsorearendoikuntzagaizkieginedomappeoan akatsenbategin.Adibideandaukazuenkodea aztertu,etagaldetuzuenburuarizenbatbalio-aldaketaizandituenirakurrinahidenak,berebenetakoizatetik ordenagailuarenpantailanagertudenarte. Balio-aldaketahauekdenekbereerlaziomatematikoadute,etaerrespetatueginbeharditugu, irakurketaerrealaetaegokiaizandadin. Potentziometroa 69
  • 77. 6. Praktikak Arduinoarekin Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) PotentziometroarenaraberapiztendenLedbatgehituproiektuari. Potentziometroaeta“Processing”softwareaerabiliz,bolabattxikiagotuedohandiagotupantailan. 70
  • 78. 6. Praktikak Arduinoarekin 7. Kontatzailea Programahonekpultsagailubateanemandakokolpeakkontatu,haienmaiztasunaneurtu,eta,ondoren, bozgorailubatetikerreproduzitukoditu. Beharrezkomateriala ArduinoUno-a 100Ohm-ekoerresistentzia 10kOhm-eko erresistentzia Pultsagailua Bozgorailua(buzzer) Konexioa(hardwarea) Bozgorailuakonektatzean,ongibegiratupositiboaetanegatiboanondituen,“buzzer”bozgorailuek, bozgorailupotenteagoekezbezala,ezdutesoinurikegitenalderantzizkonektatzean. Bozgorailua seriean100Ohm-ekoerresistentziabatekinkonektatukodugu. Zailtasunak Kontatzaileadiseinatzekogaraian,kodeakgarrantzihandiadu.EzdanirehelburuaCkodeari buruzkoesplikaziolehorbatematea.Ulertukoduzue,kodeatentuzaztertzenbaduzue.Kontuanizan programakbiatalzeharodesberdinakdituela. Irakurketa.Pultsuakirakurtzekogaraian,pultsagailuarenegoera-aldaketakirakurtzendira,eta aldagaibateangorde,hariketaprogramahasidenetik10sigarodirenarte.Denborahoripasaondoren, kontatzaileakbestepultsubakarraonartukodu,etahurrengoatalerapasakodaprograma. 71
  • 79. 6. Praktikak Arduinoarekin Kantatzea. Pultsagailuasakatuadinaaldizbozgorailuaaktibatzeko,berriz, for() aginduaerabiliko dugu. Berezitasunbatsoilik.Tone()funtzioaberriadaguretzat,etanahikoerabiliaArduinoaren programetan.Hirualdagaisartukodizkioguelkarrenjarraian: bozgorailuakonektaturikdugunpina (speaker),erreproduzitunahidugunsoinuarenmaiztasuna(frecuency)eta,azkenik,zerluzeratakotonua nahidugun(duration). Ohikoakatsak Kontatzaileakgaizkikontatzeaedoprogramamartxanondoezjartzeaosogauzanormalada praktika honetan.Lehenengoangauzakongiegitendituenikezdago,etahonekingutxiago. Akatsakaurkitzenjakiteada,ordea,trebatubeharduguna. Horretarako,kodeaongiirakurri,eta kodearenbarruan–adibidehonetantxertatutadituzue–aldagaienbalioakserie-monitorerabidalikodituen aginduakjargenitzake. Metodohonekinkodeanolaexekutatzendenulertukoduzue,etaakatsaaurkitzekopistabatbaino gehiagolortukoduzue.Informaziohorigabe,programazertandabilenjakitensaiatzeaitsubatierdiko hatzaerakusteabezalakoada,alferrikakoa. 72
  • 81. 6. Praktikak Arduinoarekin Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) Erreproduzitusoinu-eskalakotonuakbuzzerrean,horretarakotonoaren maiztasunaaldatuz.. . 74
  • 82. 6. Praktikak Arduinoarekin 8. SolfeodeMorfeo Serie-monitoretikbidalitakonotamusikalakkantatzekogaiizangodamuntaiahau.Horretarako, c (Do), d (Re), e (Mi), f (Fa), g (Sol), a (La), b (Si)eta C (Do) hizkiakbidalikodizkioguArduinoari,etahonekdagokion tonuaerreproduzitukodubozgorailutik. Beharrezkomateriala ArduinoUno-a 100Ohm-ekoerresistentzia Bozgorailua(buzzer) PCa Konexioa(hardwarea) Berezitasunikez,aurrekoekinalderatuta.Kontuanizan13.irteeranprogramatudugunLed-a Arduinoanintegraturikdugula.Hanbegiratu,beraz. Zailtasunak Praktikahonetanzailtasunnagusiamusikaberada.Dakizuenokerrazulertukoduzuetonuak, maiztasunak,periodoaketaluzapenakmusikaneragitendutenaldaketa,etaelkarrenarteandutenerlazioa. Besteontzathemenduzuenolabaitekolaburpena. Tonubatberasortzenduenpultsuarenmaiztasunakdefinitzendu.Periodoatonuarenalderantzizkoa da,etapultsuarenluzeraemangodigumilisegundotan. Azkenik–etahauda “lamamanmouton”–,PWMmodulazioaerabiltzendugunez,pultsuaren periodoarenerdiaizangodapultsuaaltumantendubeharrekotartea,etabesteerdia,baxu.Horihorrela, irteeraanalogikoanidatzikodugunPWMbalioapultsu_altuabalioaizangoda. periodoa=1/maiztasuna pultsu_altua=periodoa/2 tekla maiztasuna periodoa pultsu_altua c 261Hz 3830ms 1915ms d 294Hz 3400ms 1700ms e 329Hz 3038ms 1519ms f 349Hz 2864ms 1432ms g 392Hz 2550ms 1275ms a 440Hz 2272ms 1136ms b 493Hz 2028ms 1014ms C 523Hz 1912ms 956ms 75
  • 83. 6. Praktikak Arduinoarekin Behin oinarrihoriekhartuta,zailenadateklatutikdatorreninformazioairakurrietazeinteklazapaldu denjakitea,ondorentonuegokiaerreproduzitzeko. Konparaziohoriekegitekokodeahurrengoada.Erasinplean,banan-banankonparatzenditu tonuenizenenarray-aetateklatutikdatorren val balioa.Ondoren,zenbatgarrenadenesangodigun count aldagaiaerabiliz,tonuhorierreproduzitukodu. . Ohikoakatsak Ohikoakatsaizatendakonparaketaegokiegitekokodeasortuezinizatea.Horretarakoduzue hemenpraktika,etakodeadagoenbezalakopiatzeakaskolagundukodizue. SolfeodeMorfeo 76
  • 85. 6. Praktikak Arduinoarekin 9.Led-aordenagailutikagindu Serie-monitoretikagintzendiogunhainbatalditanpiztukoduLed-a Arduinoak. Beharrezkomateriala ArduinoUno-a PCa Konexioa(hardwarea) Arduinoazetaordenagailuazbakarrikegindaitekeenpraktikaizaki,ezdukonexioberezirikbehar. Zailtasunak Ezinesangodutzailtasunikezduenik,bainaez,behintzat,berezikinabarmendubeharrekorik.Orain arteserie-komunikazioalanduduzuenokerrazlortubeharkozenuketezuenhelburua. Ohikoakatsak Serie-komunikaziorakokodeaezulertzeakzeraekardiezaguke:idazteanzereginezjakiteaeta, ondorioz,konpilatudaitekeenbainaokerrekosekuentziaosatukoduenkodeaidaztea.Gainontzean,akatsgutxi. Led-aordenagailutikagindu 78
  • 86. 6. Praktikak Arduinoarekin 10. Errelea . Arduinoaetaerrelebaterabiliz,230V-ekokargabatenpizteaetaitzaltzeakontrolatukodugu.Kanpoko etengailubatenbitartez,230V-ekokarga“piztu”egingodugu,etabestepultsagailubatenbitartez,“itzali”. Beraz,sistemabiegonkorraizangoda. Piztu eta itzali biegoeraegonkorizangoditu, bipultsagailuz gobernatuak. Beharrezkomateriala ArduinoUno-a 1kOhm-ekoerresistentzia 2x470Ohm-ekoerresistentzia 2xPultsagailu NPNtransistorea (BD137) 12V-ekoerrelea Diodoa (IN1004) Elikatze-iturria 12V Bonbilla 230V Konexioa(hardwarea) Erreleairteeraanalogikorakonektatzekotransistorebaterabilibehardugu.Errelearenbobinak 40mAbainogehiagokontsumitzendu,etaArduinoaezdagaihainbesteemateko. Ondorioz,Arduinoarenirteeran1kOhmeta10kOhmartekoerresistentziabatjarrikodugu,eta, ondoren,transistorearenkolektoreankokatukoduguerrelearenbobina. Diodoaridiodobolanteaderitzo,etabobinadeskonektatzeansortzendententsio-pikoaribidebat ematendiodeskargatzeko.Bestela,denborarekin,transistoreaerrekolitzaiguke. 79
  • 89. 6. Praktikak Arduinoarekin 11.Motorraren kontroldigitala Motorbatmartxanjarrikodugu,ordenagailukoteklatubitartez.“m”edo“M”sakatzean,motorramartxan jarrikoda,eta“g”edo“G”sakatzean,berriz,geratu. Kontsumotxikikomotorrentzatdagodiseinatua. Beharrezkomateriala ArduinoUno-a DCmotorra (Kontsumotxikia<40mA) Konexioa(hardwarea) Kontsumotxikikomotorraizanik,zuzeneankonektatukoduguirteeraanalogikora. Zailtasunak Praktikahaugutxitaneginbeharrekoada.Motorrak,nahizetakontsumotxikikoaizan,itzaltzen dugunbakoitzeantentsio-mailahandibatematendigu,berebarruandituenbobinatuekmetatutaduten energiamedio.Horihorrela,korrontehoriArduinoarenirteeraraderibatzenda,etadenborarekinerreegin genezake. Motorrenfuntzionamenduaulertzekoerabildezakezue,bainaezibiliitzaltzen etapizten. Ohikoakatsak Motorragobernatzekoaginduakteklatutikdatozelakontuanizanda,serie-konexiokokontzeptuak berreskuratubeharkoditugu.Ohikoada“m”eta“g”balioenirakurketanzailtasunakizatea. Motorra,kontroldigitala 82
  • 90. 6. Praktikak Arduinoarekin Garatuz Konektatu motorratransistorebatenbitartez.Ezahaztudiodobolantea 83
  • 91. 6. Praktikak Arduinoarekin 12.Motorraren kontrol analogikoa Potentziometrobaterabiliz,motorbatenabiadurakontrolatukodugu.Potentziometroasarreraanalogiko bateanirakurrikodugu,etaberarenbalioproportzionalabidalikodiogumotorrari,PWMirteerabatenbitartez. Beharrezkomateriala ArduinoUno-a DCmotorra (Kontsumotxikia<40mA) 4k7Ohm-ekoerresistentzia NPNtransistorea (TIP120) Diodoa (1N4004) Potentziometroa10K Konexioa(hardwarea) Motorratransistorebitartezelikatukodugu.Horrela,Arduinoarenirteerakezdugehiegizko kontsumoriksufrituko.Halere,ezdugukanpokoelikatze-iturririkerabiliko,etamotorramartxanjartzeko beharrezkotentsioaArduinoaren3,3V-ekoelikatze-iturritikhartukodugu. 3V-ekomotortxikietanezdaarazorikizaten.12 Vedo24V-eraelikatubeharizanezgero,kanpoko elikatze-iturribatbeharkogenuke. 84
  • 92. 6. Praktikak Arduinoarekin Zailtasunak Motorrarenkonexioaegokiegitenizangodituguarazonagusiak. Elektronika-jakintzazenbaitizanbehardiratransistoreamuntatzekogaraian,batezerebaseko erresistentziaegokiaaukeratuetadiodobolanteaegokikonektatzeko. Gogoratubasekokorronteakolektorekoabaino100aldiztxikiagoaizangodela.Ondoren,kontuan izandaDCmotorohikoenek200mA ingurukontsumitzendituztelaetaArduinoaren3,3V-ekoelikatze- iturriak150mA ematendituela,nahikoaduguerresistentziakolektorean100mA-kokorronteaizateko diseinatzea. Rb= (5-0,7)/1mA= 4K3Ohm=4K7Ohm Voila!! Matematika!! Ohikoakatsak Konexioetanakatsakegiteadaohikoena. Honezkero,ezzenuketearazorikizanbehar potentziometroarenbaloreakirakurrietaPWMirteerarabidaltzekomappeoaegiteko. 85
  • 94. 6. Praktikak Arduinoarekin 13.Serbomotorbatenkontrola2argi-detektore(LDR)bitartez SerbomotorbatkontrolatunahidaArduinobitartez,etabiLCDri(argi-sentsore)kasuegindiezaien. Bisentsoreakelkarrenparekobiespaziotankokatutaegongodira,etaespaziohorienargi-kantitateaemangodigute. Serboabetibietatikespazioiluneneramugitukoda. Beharrezkomateriala ArduinoUno-a 2x220Ohm-ekoerresistentzia 2xLDR Serboa Konexioa(hardwarea) LDRerresistentziak220Ohm-ekoPullUperresistentzienbidezkonektatukoditugu. Serboakonektatzerakoan,harenizkinetakopinetaraelikaduraeramangodugu,5V,etaerdikopinetik seinaleanalogikoasartukodiogu,serboagidatzeko. Zailtasunak Arduinoakberezikiserboakkontrolatzekoliburutegibatdauka. Serboa angelujakinbateragidadaitekeenmotorbatda.0eta180angeluenarteankokatudaiteke, etabereseinaleeroaletiksartzendigunPWMpultsuarenarabera,zeinangelutarajoanesangodiogu. 0,5eta1,4msartekopultsu-modulazioasartuzgero,serboa0º-tik90º-rabitartekoangeluenartean mugitukoda,ezkerrera;1,6eta2msartekopultsuaksartuzgero,aldiz,serboa90º-tik180º-rabitartean mugitukoda,eskuinera. 87
  • 95. 6. Praktikak Arduinoarekin UniversidaddeCastillaLaMancha © Departamento de Sistemas Informáticos Horikontuanizanik,nahikoada PWMseinalearenkalkobategitea,zeinpultsurizeinangelu dagokionjakiteko.Baina,noski,pultsu-luzerakkalkulatzenaritzeaezzaioinorigustatzen,etahorixeariko zenpentsatzen#include<Servo.h>liburutegiaeginzuenaere. Liburutegihorriesker,nahikoadaserboariangeluarenbalioaematea etaberakkalkulatukodubehar duenPWMpultsu-zabalera. Bestalde,LDRargi-sentsoreakdoitzeaezdabateregauzaerrazapraktikan.Zirkuituakegoki funtzionadiezazuen,behinbainogehiagotaneginbeharkodituzuesarreraanalogikoenirakurketak,etadoitu, benetanlortunahiduzuenerantzunaizanarte. Nirinahikokostatuzitzaidanargi-sarreraongineurtuetabaliofidagarriaklortzea.Horduzueserie- monitorea,irakurketakegokiakdirenjakiteko,etaerabili,sentsorearenirakurketadoitzerakoan. Ohikoakatsak LDRerresistentzien baliodesberdinakdirelaeta,sentsoreenkalibraziotxarra. Serboaetaargia 88
  • 97. 6. Praktikak Arduinoarekin 14. Stepper-a Urratsezurratseko motorunipolarbatenkontrolaegingodugu, ULN2003 kontrolagailu bitartez.Gure urratsezurratsekomotorrak"urratsosoko"sekuentzianbiraegingodu,betieskuinaldera,eta3segundokobirabat osatuz. Beharrezkomateriala ArduinoUno-a Urratsezurratseko motorra ULN2003kontrolagailua Konexioa(hardwarea) Urratsezurratseko motorunipolarraklaukonexioekartzenditubereerregulaziorako,etabibere elikadurarako.Seihari,beraz,hurrengoerankonektatubeharkoditugunak. Zailtasunak Urratsezurratseko motorbatek,izenakdioenbezala,urratsezurrats egitendubiramotorraren barruan.Estatorean,biharilkatudauzkaeta,errotorean,berriz,imaniraunkorbat, zeinakharilkatuen magnetizazioarijarraitzendion. Estatorekoharilkatuhorienmagnetizazio-sekuentziaegokiaknahizmagnetizazio-maiztasun egokiak motorrarenkontrolosoaemangodigu.Erahorretan,birakadabilenmotorraguknahidugun posizioetangeragenezake,osogauzasinesgaitzaDCmotornormaletan. Steppermotorhauenabio-sekuentziaohikobathurrengoada.Urratsosokoabio-sekuentziaizena 90
  • 98. 6. Praktikak Arduinoarekin du,eta,motorrarenbirabakoitzekolauurratsetakobakoitzeanbisarreraaktibatzendira.Horrela,biharilkatuk erakarrikoduteimana, etaindarparehandiaizangodu. Ohikoakatsak Abio-sekuentziaongiprogramatzeaezinbestekoada,motorramartxanikusinahibaldinbadugu. Kontu izanhorretan.Bestalde,pausoenartekotarteaeregarrantzitsubihurtzenda,tartetxikiegiakdenborarik ezdiolakoematenimanaribobinaturairisteko,etatartehandiegiak,berriz,inertziazpausoaksaltatzea ekartzenduelako. Programandauzkazue urrats-tarteegokienbalioak. Stepper-a 91
  • 100. 6. Praktikak Arduinoarekin Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) Gehituproiektuarimotorrarenabiaduraren nahizbiraketa-noranzkoarenkontrola. 93
  • 102. 6. Praktikak Arduinoarekin Zailtasunak Praktikahonekpinaksoldatzeaeskatzendu,etakonexio-borneak ongiidentifikatzea,gauzaknon konektatuongiasmatzeko. Potentziometroapantailarendistiraerregulatzekoerabiltzenda. Ohikoakatsak Pinenkonfigurazio-taulaikusiarren,bakoitzazerdenidentifikatzenezjakitea.Praktikan,ematen denkonexioarijarraituetapinbakoitzarenfuntzioaidentifikatukoduzue. LCDpantaila 95
  • 103. 6. Praktikak Arduinoarekin Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) Saiatuedozeinsarreraanalogikotanduzuenbaliorenbatpantailaratzen,halanola sentsorerenbaten balioaedoeskemakopotentziometroarenbalioabera. 96
  • 104. 6. Praktikak Arduinoarekin 16. FSRpresio-sentsorea irakurtzen Presio-sentsorebaterabiliz,gurehatzekinzenbatkilotakoindarraegitekogaigarenpantailaratukodugu. Pantailan,hurrengodatuakbistaratukoditugu: Sarrerakobalioa(0-1023)artean Sarrerakotentsioa(mV) FSRsentsorearenerresistentzia(Ohm-etan) FSRsentsorearenkonduktantzia Indarra(Newtonetan) Masa(kg-tan) Beharrezkomateriala ArduinoUno-a 10kOhm-ekoerresistentzia FSRpresio-sentsorea Konexioa(hardwarea) FSRsentsorearitentsio-zatitzailebatosatukodiogu,10kOhm-ekoerresistentziabatekin. 97
  • 106. 6. Praktikak Arduinoarekin Behinerresistentziaizanik,indarragoikografikoaaplikatuzlortukodugu,zeinakkonduktantziaeta indarrarenartekoerlazioaemangodigun. Aplikatuz: FSRpresio-detektorea Garatuz (Hurrengopraktikekgaiariburuzkojakintzaareagotzenlagundukodigute) Saiatuirakurketaberdinaegitentenperatura-detektorebatekin. 99
  • 108. 6. Praktikak Arduinoarekin 17.Termometro digitala TMP36 tenperatura-sentsoretiktenperaturairakurrietauneko tenperatura(ºC,ºF)LCDpantailabatean idatzikodiguntermometrodigitalbatmuntatukodugu. Beharrezkomateriala ArduinoUno-a Potentziometroa,10K LCDpantaila(QY-1602A) TMP36tenperatura-sentsorea Konexioa(hardwarea) TMP36 tenperatura-sentsoreakonektatzekogaraian,potentziometrobatkonektatzean jarraitu dugunprozesuberajarraitukodugu.Izkinetakobipinakelikaduraraeraman,5V,etaerdikopinetikirtengo zaigunseinaleaArduinoarensarreraanalogikoralotu. Zailtasunak Sentsorehonenirakurketanahikoerrazada,bereezaugarri-orriaksentsibilitateakonstanteadelaesatenbaitu. Hori delamedio,badakigusarreranirakurtzendugun milivoltiobakoitzekogradubatekotenperaturadugula. Beraz: 25ºC-ra=250mV irakurribeharditugu. 101
  • 109. 6. Praktikak Arduinoarekin Ohikoakatsak Azkenbigarrenpraktikaizanik,akatsak ongileundutaizangoditugudagoeneko. Termometrodigitala 102
  • 111. 6. Praktikak Arduinoarekin 18.Proiektua:Joysticbatekin biserboetalaserrakontrolatu. Proiektuhonetan,joysticanalogikobaterabilikoduguetaberarekinelkarriloturikobiserbomotore kontrolatukoditugu.Joysticapultsatzean,bigarrenserbomotorrarilotutadagoenLed-apiztukoda. Horrekin biardatzetankontrolaturikoargibatlortukodugu. Beharrezkomateriala ArduinoUno-a Joystica Led-a 220Ohm-ekoerresistentzia 2xSerbo Proiektuarenitxura Gogoanizanjoysticabipotentziometrozosaturikoelementubatdela.Potentziometroaknola konektatzenzirenhalakonektatukodajoysticaere. Zailtasunak Proiektuaosatzeko beharrezkoinformazioaetadatuorriakaurkitzeadazailtasunikhandiena. Ondorengo praktiketan aurkituko dituzue bai serboaren kontrola nola egin jakiteko informazioa, baitaargiapultsagailuzkontrolatzekoaere. Zailtasun handiena joystica erdian geldirik dagoenean serboa erdian egotea lortzea da; ondoren, ezkerrera mugitzean ezkerrera mugitzea eta eskuinera mugitzean eskuinera mugitzea. Proiektu honetan map() funtzioaerabilizlortudugu. 104
  • 115. 8. Bibliografia 8.BIBLIOGRAFIA www.Arduino.cc web-orrialdetikhartudutArduinoarenliburuhauegitekogidagisaerabilidudan informaziorikgehiena. www.fritzing.org EVANS,Brian:Arduino Programming Notebook, 2007. DURFEE,W.: ArduinoMicrocontrollerGuide, UniversityofMinnesota,2011. Prof.BORCHERS, Jan:Arduino in a Nutshell, August 17, 2012. UIZ, Jose Manuel: Practicas con Arduino www.oomlout.com: Arduino Experimenter’s Guide REGALADO, Juan Gregorio: Curso de supervivencia con ARDUINO 108
  • 116. Esker ona Eskerrak eman nahi dizkiet gurasoei eta familiari, ni egunero pozik aguantatzeagatik. Eskerrak Sarari eta Luciari, nire bi sekretaria txikiei, egunero-egunero jolastera gonbidatzeagatik. Eskerrak lagunei lagunak izateagatik, Manexi 310 aholkuengatik, eta yogiei lebitatuz idazten erakusteagatik. Eskerrik asko deabrutxo honi, nire barruan bizitzeagatik, eta, noski, mila esker zuri, Pocahontas, liburua jantzi, apaindu eta begi atxinatuak jarri dizkiozulako. 109
  • 117. 110