You are on page 1of 45

Praktinis–metodinis seminaras

„Elektronikos mokymo(si) kultūros aplinkos kūrimo


metodiniai klausimai“

Arduino aplinkos panaudojimas


elektronikos mokymui
Metodinė medžiaga v1.3

Vilnius 2014
Medžiagą parengti padėjo:
www.DarysiuPats.lt
www.SmartSensors.lt
Laurynas Maldaikis
Mindaugas Dagys
Marius Narvilas

Programinis kodas suderintas su Arduino IDE 1.0.5 versija


http://arduino.cc/en/Main/Software

Atnaujinta. v1.1 – 2013 m.

Atnaujinta. v1.2 – 2014 m.

Atnaujinta. v1.3 – 2014 m.

2
Turinys:

Praktinis darbas Nr. 1. Elektronikos įvadas. Elektrinės grandinės

1.1. Apie elektrines grandines


1.2. Elektrinių grandinių modeliavimas
1.3. Elektronikos elementai ir prietaisai
1.4. Maketo plokštė (Bredboard)
1.5. Švytūrėlis (multivirpiklis)

Praktinis darbas Nr. 2. Arduino įvadas. Mirksiukas

2.1. Kas yra Arduino?


2.2. Arduino UNO išvadai
2.3. Arduino produktų charakteristikos
2.4. Arduino diegimas į kompiuterį
2.5. Arduino programavimo aplinka (IDE). Mirksiukas

Praktinis darbas Nr. 3. Šviesoforas

Praktinis darbas Nr. 4. Šviesos jutiklio prijungimas

Praktinis darbas Nr. 5. Temperatūros matavimas

Praktinis darbas Nr. 6. Nuotolio matavimas

Praktinis darbas Nr. 7. Robotas su jutikliais

Priedas Nr. 1. Informaciniai šaltiniai

Priedas Nr. 2. Arduino komandos ir išvadai

Priedas Nr. 3. Arduino programinė aplinka (IDE)

Priedas Nr. 4. Arduino programavimo kalbos apžvalga

Priedas Nr. 5. Magician chassis – DG007 surinkimo instrukcija

3
Praktinis darbas Nr. 1. Elektronikos įvadas. Elektrinės grandinės

1.1. Apie elektrines grandines


Kasdieną mus supa įvairiausi elektroniniai įrenginiai, prietaisai, kurie
apdoroja, valdo ir perduoda labai daug informacijos. Visų jų pagrindas
elektrinės grandinės.
Elektrinėse grandinėse visa informacija (komandos, skaičiai, garsai,
vaizdai) perduodama elektriniais signalais elektros srovės ar įtampos
pokyčiais, impulsais.

Pagal elektrinio signalo apdorojimo pobūdį grandinės


yra skirstomos į analogines, skaitmenines ir mišraus
signalo apdorojimo.
Skaitmeninis signalas turi tik dvi reikšmes, kurias
atitinka du elektrinės įtampos lygmenys – aukštasis ir
žemasis. Analoginis signalas tarp aukštosios ir
žemosios įtampos lygmenų turi be galo daug reikšmių
(1.1. pav.).

1.2. Elektrinių grandinių


modeliavimas
Geriausias būdas išsiaiškinti kaip veikia įvairūs
elektroniniai prietaisai, jų grandinės, nustatyti jas
sudarančių elementų veikimo, tarpusavio sąveikos
1.1. pav. Skaitmeninis ir analoginis signalas
dėsningumus – modeliuoti grandines.
Modeliavimui naudojame maketo plokštę (žiūrėkite
žemiau). Surenkant grandinę ant maketo plokštės,
nereikia lituoti elementų, dalių kontaktai, jungiamieji
laidai tiesiog įstatomi į specialius kontaktinius lizdus.
Modeliuodami elektrinę grandinę, galime
eksperimentuoti su įvairiais jos elementais, funkciniais
parametrais, savybėmis.

4
5
1.3. Elektronikos elementai ir prietaisai

Elektrinėse grandinėse naudojamos įvairūs puslaidininkiniai elementai, integriniai grandynai


(mikroschemos), elektronikos elementai bei elektriniai prietaisai, kitos dalys. Visi jie turi savo paskirtį ir
atlieka grandinėse atitinkamas funkcijas.

Šiesos diodas (LED)


Puslaidininkis prietaisas, spinduliuojantis šviesą, kai per jį teka silpna elektros
srovė. Turi dvi kojeles – anodą (+) ir katodą (-).

Jungiant: Būtina atsižvelgti į šviesos diodo išvadų kojeles.


Turi būti prijungtas taip, kad elektros srovė tekėtų iš anodo į katodą. Katodas
yra trumpesnis išvadas, taip pat katodas yra išvadas esantis šiek tiek
plokštesnėje diodo pusėje.
Diodas
Puslaidininkis prietaisas, dažniausiai pritaikoma jų savybė praleisti elektros
srovę tik viena kryptimi. Turi dvi kojeles – anodą (+) ir katodą (-).

Jungiant: Būtina atsižvelgti į diodo išvadų kojeles. Turi būti prijungtas taip,
kad elektros srovė tekėtų iš anodo į katodą. Katodas yra pažymėtas ant diodo
korpuso juodu ar pilku žiedeliu.
Rezistorius
Tam tikros varžos prietaisas, naudojamas reikiamai įtampai elektros grandinėje sudaryti. Jis
priešinasi per jį tekančiai elektros srovei, sukurdamas įtampos kritimą tarp kontaktų. Šis sąryšis
aprašomas Omo dėsniu: U = I x R
Rezistoriaus varžos dydis nurodomas ant korpuso spalviniu kodu (žiūrėti žemiau).

Jungiant: Neturi prijungimo ypatybių.


Kondensatorius
Tai prietaisas gebantis kaupti ir išlaikyti elektros krūvį. Jie drauge su
rezistoriais naudojami laiko grandinėse, kadangi prireikia laiko kondensatorių
įkrauti. Kondensatorius galima suskirstyti į dvi grupes: poliarizuotus ir
nepoliarizuotus.
Jungiant: Elektrolitiniai kondensatoriai yra poliarizuoti, todėl montuojant,
reikia į tai atkreipti dėmesį, nes priešingu atveju kondensatorius gali būti
sugadintas.
Tranzistorius
Puslaidininkinis prietaisas paprastai naudojamas elektroniniams signalams
sustiprinti ar nukreipti. Tranzistorius turi tris kojeles: emiterį (E), bazę (B) ir
kolektorių (K). Tranzistoriai būna dviejų tipų: NPN (elektros srovė teka iš
kolektoriaus į emiterį) ir PNP (elektros srovė teka iš emiterio i kolektorių).

Jungiant: Būtina atsižvelgti į tranzistoriaus tipą ir kontaktinių kojelių


išdėstymą.
Servo variklis
Servo varikliai naudojami ten, kur reikalingas tikslus pasukimo kampas. Jų apsisu-kimo kampas yra
nuo 00 iki 1800 (katrais daugiau, pvz. 3600), bet jie nesisuka pastoviai. Jų valdymas vyksta nuo 1
ms (00) iki 2 ms (1800) trukmės impulsais, kurie yra paverčiami sukamuoju judesiu, pasukančiu
veleną atitinkamu kampu. Paprastai jie maitinami 4,8-6 V įtampa (raudonas ir juodas laidai),
judėjimui reikalingas valdymo signalas (baltas laidas).

Jungiant: Būtina atsižvelgti į maitinimo ir valdymo laidų išdėstymą, kodinę spalvą.


Nuolatinės srovės (DC) variklis
Nuolatinės srovės (DC) variklis yra ektromechaninis prietaisas elektros energiją paverčiantis
sukamuoju judesiu. Variklio sukimosi kryptis priklauso nuo per jį tekančios elektros srovės krypties.

Jungiant: Kadangi variklio sukimosi kryptis priklauso nuo per jį tekančios elektros srovės krypties,
būtina atsižvelgti į matinimo šaltinio polių prijungimą.

6
Tęsinys...
Rėlė
Prietaisas, kuriame viena grandine tekanti srovė sujungia ar atjungia kitą, nepriklausomą, relėje
elektriškai nesusijusią elektros grandinę. Paprasčiausia elektromagnetinė relė turi elektromagnetą,
kuriuo tekanti srovė perkelia į kitą padėtį vieną ar kelis judamus kontaktus. Šie kontaktai gali būti
sujungiantys, atjungiantys arba perjungiantys. Valdančiai srovei išnykus, spyruoklė grąžina
kontaktus į pradinę padėtį.

Jungiant: Būtina atsižvelgti į rėlės kontaktinių kojelių išdėstymo tvarką.


Integrinis grandynas
Tai mikroschema talpinanti viename korpuse keletą šimtų, tūkstančių rezistorių, kondensatorių,
tranzistorių ir turinti atitinkamą paskirtį. Pagal elektrinio signalo apdorojimo tipą mikroschemos
skirstomos į analogines ir skaitmenines (loginiai elementai, mikroprocesoriai ir t. t.).

Jungiant: Būtina atsižvelgti į grandyno kontaktinių kojelių išdėstymo tvarką (kuri kojelė yra pirma) ir
jų numeraciją.
Mygtukas
Mechaninis prietaisas, uždarantis elektros grandinę kada yra
nuspaudžiamas.

Jungiant: Būtina atsižvelgti į mygtuko kontaktinių kojelių išdėstymo


tvarką.
Potenciometras
Keičiamos varžos prietaisas, turintis tris išvadus (du fiksuotus ir tarp jų slankiojantį perkeliamą).
Perkeliant slankiojantį kontaktą, keičiasi į elektros varža tarp jo ir abiejų fiksuotų kontaktų, tačiau šių
dviejų varžų suma lieka pastovi ir lygi varžai tarp nejudamų kontaktų.

Jungiant: Būtina atsižvelgti, kad potenciometro vidurinė kojelė yra sujungta su slankiojančiu
kontaktu.
Fotorezistorius
Fotorezistoriai veikia dėl fotolaidumo reiškinio. Neapšviesto fotorezistoriaus varža yra didelė.
Veikiant šviesai varža sumažėja.

Jungiant: Neturi prijungimo ypatybių.

Pjezo skambutis
Elektromechaninis prietaisas, kuriuo tekančios elektros srovės impulsai sužadina
jo garsinį toną.

Jungiant: Būtina atsižvelgti, kad prietaisas yra poliarizuotas. Anodas dažniausiai žymimas
skambučio viršuje, katodo kojelė yra trumpesnė.

7
1.4. Maketo plokštė (Bredboard)

8
9
1.5. Švytūrėlis (multivirpiklis)
Ant maketo plokštės surinksime papraščiausią elektrinę grandinę – švyturėlį (pav 1.2) . Žemiau pateikta jo
principinė schema (pav 1.1). Švyturėlio grandinė sudaryta pagal simetrinio multivirpiklio schemą.

Multivirpiklis – stačiakampės formos virpesius generuojanti elektrinė grandinė. Šviesos diodų mirgėjimų
dažnis priklauso nuo elektros srovės šaltinio įtampos, rezistorių R2 bei R3 varžos ir kondensatorių C1 bei C2
elektrinės talpos. Rezistoriai R1 ir R4 sumažina srovę, tekančią per šviesos diodus LED1 ir LED2.
Multivirpiklio grandinė yra gausios elektroninių grandinių šeimos pagrindas.

Multivipiklio grandinė puikiai iliustruoja dvi elektronikos pažinimo puses:


1) Parodo kiekvieno grandinės elemento paskirtį ir funkcijas;
2) Parodo kaip kiekvienas šių elementų yra panaudojamas kuriant tarpusavio jungtis ir sąveikas.
Plačiau: http://lt.wikipedia.org/wiki/Multivibratorius

Reikalingos dalys:

R1, R4 – 470Ω rezistoriai (geltona, violetinė, ruda) – 2 vnt.


R2, R3 – 15kΩ rezistoriai (ruda, žalia, oranžinė) – 2 vnt.
LED1, LED2 – 5mm šviesos diodai – 2 vnt.
C1, C2 – Elektrolitinis kondensatorius 47μF – 2 vnt.
Q1, Q2 – NPN tipo tranzistoriai BC547C – 2 vnt.
S1 – Jungiklis (padaromas sujungiant du laidus)
9V baterija
Baterijos prijungimo laidas

Pav. 1.1. Švytūrėlio principinė schema

10
Švyturėlio grandinė surinkta ant maketo plokštės:

Pav. 1.2. Švyturėlio grandinė surinkta ant maketo plokštės

Tolimesniems eksperimentams:

1) Pakeiskite R2, R3 rezistorių nominalią reikšmę.


Galimi variantai – 22kΩ (raudona, raudona, oranžinė) arba 4,7kΩ (geltona, violetinė, raudona);
2) Pakeiskite C1, C2 elektrolitinių kondensatorių nominalią reikšmę.
Galimi variantai 10μF ar 100μF.

Stebėkite šių pakeitimų sukeltus požymius.

Tranzistorius BC547C

11
2.1 pav. Arduino mikrovaldiklio panaudojimas
12
Praktinis darbas Nr. 2. Arduino įvadas. Mirksiukas

2.1. Kas yra Arduino?

2003 metais, studentas iš Italijos Massimo Banzi turėjo atlikti kursinį darbą ir jų maketui reikėjo nebrangaus
valdymo kontrolerio po kelių mėnesių darbo gimė pirmasis Arduino.

2.2 pav. Massimo Banzi 2.3 pav. Pirmasis Arduino


Arduino – tai paprastai prijungiama prie kompiuterio platforma, naudojanti Atmel firmos
mikrokontrolerius, kurie pasižymi savo itin didelėmis galimybėmis. Tai atviro kodo platforma, kodėl ji ir tapo
populiari visame pasaulyje. Ši platforma tai instrumentas suteikiantis kompiuteriui didesnes galimybes
“jausti” ir kontroliuoti fizinį pasaulį.

2.4 pav. Arduino UNO 2.5 pav. Arduino skydeliai (angl.k. Shield)

Arduino naudoja C ir C++ programavimo kalbos “mišinį”. Išmokti šią programavimo kalbą nėra sudėtinga.
Jos aprašymą rasite čia>. Trumpą arduino programavimo kalbos aprašymą rasite 4 priede.
Dar vienas geras Arduino privalumas – tai, kad jam yra sukurti papildomi skydeliai (angl.k Shield), kurie
suteikia galimybę Arduino prijungti prie interneto, WiFi tinklo, Bluetooth ryšio. Taip pat gali suteikti
galimybę naudoti SD atminties korteles ir dar daug visokių kitų galimybių.
Su Arduino žaisti galima kaip su LEGO – dėlioji detales ir iš karto matai rezultatą. Na, bet aišku privalai
laikytis tam tikrų taisyklių, kad nesudegintum mikrokontrolerio. Dėl šios priežasties “nepatyrusiems”
siūlyčiau pradėti nuo Arduino UNO.
Arduino UNO ypatingas tuom, kad jis nėra toks brangus kaip Arduino MEGA ar kita Arduino šeimos
platforma, taip pat jame yra galimybė pakeisti pagrindinę mikroschemą (mikrokontrolerį).
Daugiau informacijos apie Arduino galite rasti oficialioje svetainėje arduino.cc>
Arduino tai puiki priemonė praplėsti moksleivių ir studentų žinias inžinerijos srityje, nes jo pagalba
išbandoma ir elektronika ir mechanika ir programavimas vienu metu.
13
2.2. Arduino UNO išvadai

2.6 pav. Arduino išvadų paaiškinimai

2.3. Arduino produktų charakteristikos

Charakteristika \ Uno SMD Mega 2560


Uno Rev3 Leonardo
Modelis Rev3 Rev3
Taktinis dažnis 16 Mhz 16 Mhz 16Mhz 16 Mhz
Flash atmintis 32 KB 32 KB 256 KB 32 KB
Mikrokontrolerio tipas ATmega328 ATmega328 ATmega2560 ATmega32u4
Lituojama Lituojama
Mikrokontrolerio jungtis DIP DIP
tiesiogiai tiesiogiai
Skaitmeninės jungtys 14 14 54 20
Analoginės jungtys 6 6 16 12

Charakteristika \ Mega ADK


Due Micro Mini 05
Modelis Rev3
Taktinis dažnis 16 Mhz 84 Mhz 16 Mhz 16 Mhz
Flash atmintis 256 KB 512 KB 32 KB 32 KB
32bit ARM
Mikrokontrolerio tipas ATmega2560 ATmega32u4 ATmega328
AT91SAM3X8E
Lituojama Lituojama Lituojama Lituojama
Mikrokontrolerio jungtis
tiesiogiai tiesiogiai tiesiogiai tiesiogiai
Skaitmeninės jungtys 54 54 20 14
Analoginės jungtys 16 12 12 8

14
2.4. Arduino diegimas į kompiuterį

Pirmas žingsnis. Tam, kad pradėti darbą su Arduino kompiuteryje kuris naudoja Microsoft Windows
operacinę sistemą reikia įdiegti tvarkykles ir programavimo aplinką (IDE). Atsisiųskite į savo kompiuterį
programinę įrangą iš

http://arduino.cc/en/Main/Software

ir ją įdiekite į kompiuterį. Dabar paimkit USB kabelį, kurį gavote kartu su Arduino ir įjunkite vieną galą į
kompiterį, o kitą į Arduino taip kaip parodyta 2.7 paveikslėlyje.

2.7 pav. Arduino prijungimas prie kompiuterio

Ant Jūsų Arduino įsižiebs lemputės iš kurių viena pradės nuolatos mirksėti. Jei taip atsitiko vadinasi Jūsų
Arduino veikia, bet su kompiuteriu dar nebendrauja. Kompiuteris aptiks naują USB įrenginį kuriam pasiūlys
diegti tvarkykles, tačiau atomatinė paieška neduos rezultato. Nustatyte, kad tvarkyklės sistema ieškotų
kataloge c:\Arduino-1.0.4\drivers (kiekviename kompiuteryje vieta ir pavadinimai gali šiek tiek skirtis).
Kompiteris aptiks tvarkykles ir jas įdiegs. Norėdami patikrinti ar viskas tvarkoje spustelėkite dešinį pelės
klavišą ant piktogramos „My Computer“ ir pasirinkite „Properties“, o po to „Devices“. Ties USB įrenginiais
turi atsirasti užrašas kad prijungtas Arduino. Jei ties USB įrenginiu yra šauktukas tai pakartokite tvarkyklės
diegimą. Angliška detali instrukcija yra čia:

http://arduino.cc/en/Guide/Windows

Jei klaidų nebuvo tai Jūsų kompiuteris pasiruošęs darbui su Arduino.

15
2.5. Arduino programavimo aplinka (IDE). Mirksiukas

Diegdami tvarkykles mes jau įdiegėme programavimo aplinką. Dabar ją reikai paleisti. Paleiskite failą
c:\arduino-1.0.5\arduino.exe ekrane pamatysite langą koks pavaizduotas 2.8 pav. :

Tai Arduino programavimo aplinka (IDE – Integrated


Development Environment).

Nueikite su pele į „Tools“, „Board“ ir pasirinkite


„Arduino Uno“ (arba tokią plokštę, kokią esate
prijungę).

Puiku dar liko nustayti COM jungties numerį (COM


Port): „Tools“, „Serial Port“ ir nustatykite tokį, kuris
buvo nurodytas prie „Devices“ kai diegėte tvarkyklę.

Jei nustatysite neteisingą numerį, Jūsų Arduino


tiesiog nepriims įkeliamų programų, eikite atgal į
„Tools“, „Serial port“ ir nustatykite kitą.

Kaip patikrinti ar teisinga COM jungtis? Betikrindami


išvien išmoksime ir bazinio programavimo. Eikite į
„File“, „Examples“, „Basics“ ir pasirinkite „Blink“.

2.8 pav.

Programinis kodas:

// Praktinis darbas Nr.2 – Mirksiukas


/*
Mirksiukas. Įjungia šviesos diodą (LED) 1 sekundei ir išjungia vienai sekundei
ir taip nuolatos. Tai viešai naudojamas programinis kodas.
*/

void setup() {
// Priskiriame skaitmeninę jungtį kaip išėjimą
// jungtis Nr.13 turi prijungtą LED. Taip yra faktiškai visuose Arduino
pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(13, HIGH); // Nurodoma įjungti LED
delay(1000); // Nurodoma laukti 1 sekundę
digitalWrite(13, LOW); // Nurodoma išjungti LED
delay(1000); // Nurodoma laukti 1 sekundę
}

Pastaba: programiniame kode laikas yra rašomas milisekundėm.

16
Tekstas po ženklo „//“ traktuojamas kaip komentaras kuris užsibaigia eilutės pabaigoje
Tekstas po ženklo „/*“ traktuojamas kaip komentaras net ir kitoje eilutėje kol nesutinkamas ženklas “*/“,
kuris reiškia, kad komentaras baigėsi. IDE aplinka komentarų tekstą ignoruoja. Rekomenduojama rašyti
komentarus tam, kad ir pats autorius po kurio laiko galėtų susigaudyti ką suprogramavo.

Grandinės principinė schema: Priemonės:

 Arduino Uno Rev3 – 1 vnt.


 400 taškų maketo plokštė – 1 vnt.
 Raudonas LED – 1 vnt.
 220Ω rezistorius
(raudonas, raudonas, rudas) – 1 vnt.
 Sujungimo laidai maketo plokštei

Sujungimas ant maketo plokštės:

Spaudžiame „Upload“ ir žiūrim į rezultatą. Jei programa atsakė „OK“ reiškia žiūrim į LED kaip jis mirksi. Jei
ne, ieškome klaidos. Pabandykite pakeisti komandos „delay“ skliausteliuose esančius skaičius ir įkelkite
programą iš naujo. Kitoks rezultatas?

17
Praktinis darbas Nr. 3. Šviesoforas

Sukursime šviesoforą, kuris veiks kaip šviesoforas mūsų gatvėse. Įsižiebs raudona, raudona ir geltona, žalia,
geltona ir vėl iš naujo. Šis projektas gali būti panaudotas traukinukų modeliams arba žaisliniam miesto
modeliui.

Šviesoforo schema: Priemonės:

 Arduino Uno Rev3 – 1 vnt.


 400 taškų maketo plokštė – 1 vnt.
 Raudonas LED – 1 vnt.
 Geltonas LED – 1 vnt.
 Žalias LED – 1 vnt.
 220Ω rezistorius
(raudonas, raudonas, rudas) – 3 vnt.
 Sujungimo laidai maketo plokštei

Sujungimas ant maketo plokštės:

Sujungiame laidus taip, kaip parodyta paveikslėlyje.

18
Programinis kodas:

// Praktinis darbas Nr.3 – Šviesoforas

int ledDelay = 10000; // Nustatomas uždelsimas tarp pokyčių


int redPin = 10; // Priskiriame vardus jungčių numeriams
int yellowPin = 9;
int greenPin = 8;

void setup() {
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
}

void loop () {
// Nurodoma įjungti raudoną šviesą
digitalWrite(redPin, HIGH);
delay(ledDelay); // Nurodoma palaukti 5 sekundes

digitalWrite(yellowPin, HIGH); // Nurodoma įjungti geltoną


delay(2000); // Nurodoma palaukti 2 sekundes

digitalWrite(greenPin, HIGH); // Nurodoma įjungti žalią


digitalWrite(redPin, LOW); // Nurodoma išjungti raudoną
digitalWrite(yellowPin, LOW); // Nurodoma išjungti geltoną
delay(ledDelay); // Nurodoma palaukti tiek, kiek yra ledDelay reikšmė
milisekundėmis

digitalWrite(yellowPin, HIGH); // Nurodoma įjungti geltoną


digitalWrite(greenPin, LOW); // Nurodoma išjungti žalią
delay(2000); // Nurodoma palaukti 2 sekundes

digitalWrite(yellowPin, LOW); // Nurodoma išjungti geltoną


// dabar mūsų programa kartosis

19
Praktinis darbas Nr. 4. Šviesos jutiklio prijungimas
Šiame darbe bus parodoma, kaip šviesos jutiklis (fotorezistorius) reaguoja į šviesos pritemdymą.

Priemonės: Schema jungiama taip kaip parodyta 4.1 pav.


Analoginio jutiklio išėjimas jungiamas į analoginį
 Raudonas LED – 1 vnt.
Arduino įėjimą A0. LED teigiamas polius
 Analoginis jutiklis (fotorezistorius) – 1 vnt.
jungiamas į skaitmeninį Arduino 9 įėjimą. Prie
 10kΩ rezistorius LED minuso jungiamas 220Ω rezistorius iš karto į
(rudas, juodas, oranžinis) – 1 vnt.
minusinį takelį. Prie fotorezistoriaus minusinio
 220Ω rezistorius galo jungiamas 10kΩ rezistorius tiesiai į minusinį
(raudonas, raudonas, rudas) – 1 vnt.
takelį ir teigiamas polius jungiamas į pliusinį
 400 taškų maketo plokštė – 1 vnt. takelį. Iš Arduino plokštės pajungiami GND ir 5V.

 Jungiamieji laidai – 4 vnt.

Sujungimas ant maketo plokštės:

4.1 pav.

20
Programinis kodas:

// Praktinis darbas Nr.4 – Šviesos jutiklio prijungimas

const int sensorPin = A0; // įėjimas prie kurio prijungtas jutiklis


const int ledPin = 9; // įėjimas prie kurio prijungtas LED

// Priskiriami kintamieji:
int sensorValue = 0; // Nurodoma jutiklio vertė
int sensorMin = 1023; // Nurodoma minimali jutiklio reikšmė
int sensorMax = 0; // Nurodoma maksimali jutiklio reikšmė

void setup() {
// Nurodoma įjungti LED kuris duoda signalą pradėti kalibravimą :
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);

// Nurodoma kalibruoti per pirmas penkias sekundes


while (millis() < 5000) {
sensorValue = analogRead(sensorPin);

// Nurodoma įrašyti didžiausią jutiklio vertę


if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}

// Nurodoma įrašyti mažiausia jutiklio vertę


if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}

// Nurodoma pranešti apie jutiklio kalibravimo pabaigą


digitalWrite(13, LOW);
}

void loop() {
// Nurodoma nuskaityti jutiklį:
sensorValue = analogRead(sensorPin);

// Nurodoma taikyti kalibravimą jutiklio nuskaitymui


sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

// atveju kai jutiklio vertė yra didesnė nei turi būti kalibravimo metu
sensorValue = constrain(sensorValue, 0, 255);

// Nurodoma išjungti LED naudojant kalibravimo vertę:


analogWrite(ledPin, sensorValue);
}

21
Praktinis darbas Nr. 5. Temperatūros matavimas

Temperatūros matavimams naudosime mažą ir paprastą DFRobot termometro modulį DS18B20, kuris yra
lengvai prijungiamas prie Arduino bet kurio skaitmeninio įėjimo. Šio prietaiso temperatūros matavimo ribos
yra nuo -550C ~ +125 0C, mažiausia padala yra nuo 0.5 0C. Norint įgalinti šį termometrą veikti, būtina
atsisiųsti ir įsikelti jo biblioteką.

Išėjos reikšmės:

1. Įėjimas
2. Įtampos padavimas
3. Žemė

Jungimo schema:

 1 jutiklio išėja jungiama į 3Pin Arduino skaitmeninį įėjimą.


 2 jutiklio išėja jungiama į Arduino 5V.
 3 jutiklio išėja jungiama į Arduino GND.

Programinis kodas:

// Praktinis darbas Nr.5 – Temperatūros matavimas

#include <OneWire.h>

int DS18S20_Pin = 3; //DS18S20 signalo priskirimas 3 skaitmeniniam kanalui

22
//Temperature chip i/o
OneWire ds(DS18S20_Pin); // 3 skaitmeniniam

void setup(void) {
Serial.begin(9600);
}

void loop(void) {
float temperature = getTemp();
Serial.println(temperature);

delay(100); // Lengvesniam nuskaitymui sumažinimas nuskaitymo laikas

float getTemp(){

// Garžina temperatūrą iš DS18S20 į DEG celsium

byte data[12];
byte addr[8];

if ( !ds.search(addr)) {

ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {


Serial.println("CRC is not valid!");
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {


Serial.print("Device is not recognized");
return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // Pradeda koversaciją pabaigoje su parazitine galia

byte present = ds.reset();


ds.select(addr);
ds.write(0xBE); // Nuskaito Scratchpad

for (int i = 0; i < 9; i++) { // mums reikia 9 baitų


data[i] = ds.read();
}

ds.reset_search();

byte MSB = data[1];


byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB);


float TemperatureSum = tempRead / 16;

return TemperatureSum;

23
Praktinis darbas Nr. 6. Nuotolio matavimas

Šiame darbe mes naudosime ultragarsinį nuotolio matavimo modulį DFRobot URM37 3.2 versija. Tokio tipo
moduliai tinka bet kokiems bandymams, kuriuose reikia atlikti matavimus tarp judančių arba nejudančių
objektų. Modulis matuoja atstumą, naudodamas sonarą, kuris siunčia ultragarsinį impulsą ir skaičiuoja laiką
iki sugrįžtant pulso aidui atgal į sonarą. Žmogaus klausa ultragarso negirdi, nes jo dažnis yra didesnis už
žmogui girdimą ruožą.

6.1 pav. Ultragarsinis nuotolio matavimo modulis DFRobot URM37 V3.2

Šis modulis naudoja AVR procesorių. Jis turi temperatūros jutiklį, trijų išėjų (OUTPUT) režimus (PWM,
RS232, TTL), atskirą kanalą servo variklio valdymui. Norint įgalinti šį modulį veikti, būtina atsisiųsti ir įsikelti
jo biblioteką.

Išėjos režimas yra keičiamas trumpikliais, esančiais jutiklio gale. Šiame darbe mes turėsime modulį perjungti
į TTL režimą. Tai parodyta apačioje 6.2 ir 6.3 paveikslėliuose.

6.2 pav. RS232 režimas 6.3 pav. TTL režimas

24
Jungimo schema:

Modulis turi 9 kontaktus, iš kurių


naudosime tik 4. Schema yra
jungiama kaip parodyta 6.4 pav.

 Modulio +5V į Arduino 5V

 Modulio GND į Arduino


GND

 Modulio RXD į Arduino 7


digital

 Modulio TXD į Arduino 6


digital

6.4 pav. Schemos jungimas

Programinis kodas:

Taip atrodo programinis kodas, kurį įkėlus ir sujungus schemą, sensorius skaičiuos atstumą.

// Praktinis darbas Nr.6 – Nuotolio matavimo modulio prijungimas

// # Priskyrimas:
// # VCC (Arduino) -> Pin 1 VCC (URM37 V3.2)
// # GND (Arduino) -> Pin 2 GND (URM37 V3.2)
// # Pin 6 (Arduino) -> Pin 9 TXD (URM37 V3.2)
// # Pin 7 (Arduino) -> Pin 8 RXD (URM37 V3.2)
// #

#include "URMSerial.h"

// Matavimai kurious priskiriam


#define DISTANCE 1
#define TEMPERATURE 2
#define ERROR 3
#define NOTREADY 4
#define TIMEOUT 5

URMSerial urm;

void setup() {

Serial.begin(9600); // Nustato duomenų perdavimo greitį į 9600

25
urm.begin(6,7,9600); // Nurodo prie kurių įėjimų yra pajungta RX, TX Pin ir
duomenų perdavimo greitis
Serial.println("URM37 Library by Miles Burton");

void loop()
{
Serial.print("Measurement: ");
Serial.println(getMeasurement()); // Išėjimo matavimas
delay(50);
}

int value; // Ši vertė bus išplėsta


int getMeasurement()
{
// Nurodo atstumo nuskaitymą iš URM37
switch(urm.requestMeasurementOrTimeout(DISTANCE, value)) // Nustatomas prašymo
tipas
{
case DISTANCE: // Nurodoma dvigubai patikrinti nuskaitymą gautą iš atstumo
tipo
// Serial.println(value); // Nurodoma paduoti atstumą iš URM37
centimetrais
return value;
break;
case TEMPERATURE:
return value;
break;
case ERROR:
Serial.println("Error");
break;
case NOTREADY:
Serial.println("Not Ready");
break;
case TIMEOUT:
Serial.println("Timeout");
break;
}

return -1;
}

Norint pamatyti kaip yra skaičiuojamas atstumas, reikia Arduino programoje įsijungti Serial monitor režimą.
Šis režimas yra įjungiamas paspaudus ant Tools ir pasirinkus Serial monitor, arba tiesiog paspaudžiant Ctrl+
Shift+M. Norint matyti tinkamus matavimus, turi būti pasirinkta New line ir 9600 baud.

26
Praktinis darbas Nr. 7. Robotas su jutikliais

7.1. Roboto veikimo principai

Roboto (7.1 pav.) konstravimas bus paskutinis praktinis darbas – turimų žinių apie jutiklius taikymo
pavyzdys. Taip pat išmoksime Arduino pagalba valdyti nuolatinės srovės (DC) variklius, naudodami specialų
variklių valdymo skydelį.
Trumpas roboto veikimo principo aprašymas

Ultragarsinis jutiklis esantis roboto priekyje


siunčia signalą į aplinką, signalas keliauja iki
kliūties ir nuo jos atsispindi, tokiu būdu
Arduino paskaičiuoja atstumą iki kliūties ir
paduoda arba nuima įtampą nuo variklių ar
variklio. Tokiu principu robotas orientuojasi
aplinkoje ir pagal kode nustatytą atstumą iki
kliūties pasisuka į šoną prieš kliūtį. 7.2
paveikslėlyje pateikta roboto programos loginė
schema.

7.1 pav. Robotas su jutikliais

7.2 pav. Roboto programos loginė schema


27
7.2. Roboto važiuoklės konstravimas

 Pirmiausia, reikės susirinkti roboto važiuoklę 7.3 pav. Ją konstruosime panaudodami Magician
chassis – DG007 rinkinį. Važiuoklės surinkimo instrukciją rasite 5 priede.

7.3 pav.

 Kitas žingsnis yra Arduino plokštės tvirtinimas ant roboto važiuoklės ir variklių valdymo skydelio
uždėjimas kaip parodyta 7.4 pav.

7.4 pav. Arduino plokštės ir variklių valdymo skydelio tvirtinimas ant roboto važiuoklės

28
7.3. Nuolatinės srovės (DC) variklių valdymas

Norint su Arduino mikrovaldikliu valdyti variklį ar kelis variklius, patogiausia naudoti tam skirtą skydelį.
Šiame darbe bus naudojamas DFRobot L298N nuolatinės srovės variklių valdymo skydelis.

Šis skydelis gali valdyti nuolatinės srovės variklius, dvifazius ar keturfazius žingsninius variklius su
maksimalia 2A stiprumo srove.

Skydelis yra lengvai užmaunamas ant Arduino plokštės viršaus (7.5 pav.).

7.5 pav. Skydelis užmautas ant Arduino plokštės

Variklių valdymo skydelio tvirtinimas ir variklių prijungimas:


 Pirma, skydelis yra užmaunamas ant Arduino plokštės.
 Varikliai yra jungiami kaip pavaizduota 7.6 pav. (pažymėta 1 numeriu). Raudonas laidas yra variklio
teigiamas polius, juodas laidas yra neigiamas polius. Nesumaišykite polių pajungdami į skydelį, nes
ant turimo skydelio pajungimas gali būti atvirkščias. Tai yra pažymėta ant skydelio prie variklių
pajungimo kontaktų. Į M+ yra jungiamas raudonas laidas, o į M- juodas.
 Taip pat yra galimybė trumpiklių pagalba perjungti greičio valdymo kontrolės rėžimą (3 numeris) ir
įtampos padavimą (2 numeris) iš Arduino arba atskiro šaltinio tiesiai į skydelį, bet šiame darbe
mums to neprireiks. Variklius leisime esamu PWM režimu, o įtampą perduos pati Arduino plokštė.

29
7.6 pav. Nuolatinės srovės variklių prijungimas prie DFRobot L298N skydelio

Programinis kodas:

Per Arduino programinę įrangą įkelsime paprastą variklių valdymo kodą. Kodas atrodo taip:

// Praktinis darbas Nr.7.1 – Nuolatinės srovės (DC) variklių valdymas


// Arduino PWM greičio kontrolė:
int E1 = 6; // Priskiriami arduino įėjimai varikliams
int M1 = 7;
int E2 = 5;
int M2 = 4;
void setup()
{
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
}
void loop()
{
int value;
for(value = 0 ; value <= 255; value+=5)
{
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E1, value); // PWM greičio kontrolė
analogWrite(E2, value); // PWM greičio kontrolė
delay(30);
}
}

30
7.4. Nuotolio matavimo modulio prijungimas

7.7 pav. Variklių valdymo skydelio ir nuotolio matavimo modulio prijungimas prie Arduino plokštės

 Schemą jungiame taip (žr. 7.7 pav.):

URM modulis Arduino plokštė su užmautu variklių valdymo skydeliu

Pin1, VCC VCC, 5V

Pin2, GND GND

Pin8, RXD Pin3 digital

Pin 9, TXD Pin2 digital

31
 Nuotolio matavimo modulis turi būti nustatytas į TTL rėžimą kaip pavaizduota 7.8 pav..

7.8 pav. TTL rėžimo nustatymas

7.9 pav. Roboto važiuokle su prijungtu nuotolio matavimo moduliu

32
Programinis kodas:
// Praktinis darbas Nr.7 – Robotas su jutikliais

#include <inttypes.h>
#include "URMSerial.h"

// Nurodomi matavimai kuriuos priskiriam


#define DISTANCE 1
#define TEMPERATURE 2
#define ERROR 3
#define NOTREADY 4
#define TIMEOUT 5

int PWM1=5; // Nustatoma M1 greičio kontrolė


int PWM2=6; // Nustatoma M2 greičio kontrolė
int DIR1=4; // Nustatoma M1 krypties kontrolė
int DIR2=7; // Nustatoma M1 krypties kontrolė

static int last_speed1, last_speed2;


int speed_l;
int speed_r;
int dly;
int distance;

void motorInit(void)
{
pinMode(DIR1, OUTPUT);
pinMode(DIR2, OUTPUT);
}

void motorMove(int speed1, int speed2)


{

last_speed1 = speed1;
last_speed2 = speed2;

if (speed1 < 0)
{
digitalWrite(DIR1, LOW);
analogWrite(PWM1, abs(speed1));
}
else
{
digitalWrite(DIR1, HIGH);
analogWrite(PWM1, abs(speed1));
}

if (speed2 < 0)
{
digitalWrite(DIR2, LOW);
analogWrite(PWM2, abs(speed2));
}
else
{
digitalWrite(DIR2, HIGH);
analogWrite(PWM2, abs(speed2));
}

void motorMoveRamp(int speed1, int speed2, int dly)


33
{
int temp_speed1 = last_speed1;
int temp_speed2 = last_speed2;

Serial.print("MoveRamp: ");
Serial.print(speed1, DEC);
Serial.print(", ");
Serial.print(speed2, DEC);
Serial.print(", ");
Serial.println(dly, DEC);
while ((speed1 != temp_speed1) ||
(speed2 != temp_speed2))
{
if (temp_speed1 > speed1)
temp_speed1--;
else if (temp_speed1 < speed1)
temp_speed1++;

if (temp_speed2 > speed2)


temp_speed2--;
else if (temp_speed2 < speed2)
temp_speed2++;
motorMove(temp_speed1, temp_speed2);
delay(dly);
}
}

URMSerial urm;

void setup() {

Serial.begin(38400); // Nustatomas duomenų perdavimo greitis į 38400


motorInit();
speed_l = 0;
speed_r = 0;
urm.begin(2,3,9600); // Nurodomi RX Pin, TX Pin ir perdavimo greitis
Serial.println("MASHR obstacle Avoiding Version 1.0");
}

void loop()
{

distance = getDistance(); // Nurodoma gauti atstumą


Serial.print("Distance: ");
Serial.println(distance, DEC);
if (distance > 0)
{
if (distance < 20)
{
motorMove(0,0);
speed_l = -150;
speed_r = 150;
dly = 5;
do {
distance = getDistance(); // Nurodoma gauti atstumą
motorMove(speed_l, speed_r);
// motorMoveRamp(speed_l, speed_r, dly);
} while(distance < 40);
}
else if (distance < 30)
{
speed_l = 150;
34
speed_r = 150;
}
else
{
speed_l = 200;
speed_r = 200;
}
dly = 10;
motorMove(speed_l, speed_r);
// motorMoveRamp(speed_l, speed_r, dly);
}
delay(40);
}

int value; // Pažymima, kad ši reikšmė bus išplėsta


int getDistance()
{

// Prašoma nuskaityti atstumą iš URM37


switch(urm.requestMeasurementOrTimeout(DISTANCE, value)) // Nurodoma sužinoti
prašymo tipą
{
case DISTANCE: // Nurodoma dvigubai patikrinti nuskaitymą gautą iš atstumo
tipo
// Serial.println(value); // Nurodoma pateikti atstumą iš URM37
centimetrais
return value;
break;
case TEMPERATURE:
return value;
break;
case ERROR:
Serial.println("Error");
break;
case NOTREADY:
Serial.println("Not Ready");
break;
case TIMEOUT:
Serial.println("Timeout");
break;
}

return -1;
}

Taigi, telieka ištraukti USB laidą ir prijungti maitinimą iš elementų, esančių robote.

35
Informaciniai šaltiniai Priedas Nr.1

1.1. Šaltiniai panaudoti metodinės medžiagos parengimui:

1. A. Pacevičiūtė, R. Čiupaila, J. Lekarevičius, M. Narvilas. Elektronika VII–X klasei. Kaunas:


Šviesa, 2010.
2. Arduino visiems –
http://www.darysiupats.lt/index.php?page=shop.getfile&file_id=87&product_id=308&option=co
m_virtuemart&view=page&Itemid=7&lang=lt
3. Brian W. Evans. Arduino programuotojo bloknotas –
http://www.darysiupats.lt/index.php?page=shop.getfile&file_id=118&product_id=337&option=co
m_virtuemart&view=page&Itemid=7&lang=lt
4. ARDX Experimenter's Guide for Arduino –
http://ardx.org/src//guide/2/ARDX-EG-OOML-DD.pdf
5. SIK Guide. Yours Guide to the SparkFun Inventor's Kit for Arduino –
http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Kits/SFE03-0012-SIK.Guide-300dpi-01.pdf

6. Komponentai, įranga:

Fotorezistorius:
http://www.dfrobot.com/index.php?route=product/product&path=36_58&product_id=613#.
UaKAgpxmMUM

Termometro modulis DFRobot DS18B20:


http://www.dfrobot.com/index.php?route=product/product&path=36_64&product_id=164#.
UaNWNpz4ITU
http://www.dfrobot.com/wiki/index.php?title=18B20_Temerature_Sensor_%28Arduino_Com
patible%29_%28SKU:_DFR0024%29

Ultragarsinis nuotolio matavimo modulis DFRobot URM37 3.2 versija:


http://www.dfrobot.com/index.php?route=product/product&path=36_55&product_id=53#.U
aKAupxmMUM
http://www.dfrobot.com/wiki/index.php?title=URM37_V3.2_Ultrasonic_Sensor_%28SKU:SEN
0001%29

2A nuolatinės srovės variklių valdymo Arduino priedėlis DFRobot L298N:


http://www.dfrobot.com/index.php?route=product/product&path=51_105&product_id=69#.
UaKBeJxmMUM
http://www.dfrobot.com/wiki/index.php?title=Arduino_Motor_Shield_%28L298N%29_%28SK
U:DRI0009%29

Dviratė roboto važiuoklė – Magician Chassis-DG007:


https://www.sparkfun.com/products/10825
http://www.hobbytronics.co.uk/datasheets/magician-chassis-manual.pdf
http://www.darysiupats.lt/rinkiniai/dviraciai-robotai/dvirate-roboto-platforma.html

36
1.2. Arduino aprašymai, pamokos, projektai
Anglų kalba:
http://www.arduino.cc/
http://learn.adafruit.com/category/learn-arduino
http://todbot.com/blog/bionicarduino/
http://www.ladyada.net/learn/arduino/index.html
http://opensourcehardwarejunkies.com/arduino-course-for-absolute-beginners/
http://www.jeremyblum.com/category/arduino-tutorials/
http://tronixstuff.wordpress.com/tutorials/
http://www.sweeting.org/mark/blog/category/geeky/arduino
http://www.instructables.com/id/Arduino-home-energy-monitor-shield/
http://www.theparsley.com/arduino/diy/
http://lab.guilhermemartins.net/2009/05/06/paperduino-prints/

Arduino rinkinių aprašymai ir mokomoji medžiaga:

Starter Kit for Arduino (ARDX) –


http://ardx.org/src//guide/2/ARDX-EG-OOML-DD.pdf
DF Robot Beginner Kit For Arduino –
http://www.dfrobot.com/wiki/index.php?title=Tutorial
Earthshine Arduino Starters Kit Manual –
http://www.cytron.com.my/usr_attachment/Arduino_Starter_Kit_Manual-Mar2010.pdf
SparkFun. Arduino Inventor's Kit. (Senesnė versija) –
https://www.sparkfun.com/products/9646
https://www.sparkfun.com/tutorial/AIK/ARDX-EG-SPAR-PRINT-85.pdf
https://www.sparkfun.com/tutorial/AIK/CIRC00-sheet-SPAR.pdf
SparkFun Inventor's Kit (SIK). (Naujesnė versija) –
http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Kits/SFE03-0012-SIK.Guide-300dpi-01.pdf
https://dlnmh9ip6v2uc.cloudfront.net/learn/materials/39/SIK%20Binder-R2.pdf
https://www.sparkfun.com/products/11581
SparkFun. Introduction to Arduino –
http://dlnmh9ip6v2uc.cloudfront.net/learn/materials/1/Arduino_final_handout.pdf
https://learn.sparkfun.com/resources/SIK%20Binder/

Lietuvių kalba:
http://elektronika.inforeg.lt/kontroleris/69-arduino-kas-tai-ir-kam-to-reikia
http://www.armandas.lt/?page=2
http://www.arvydas.net/robotas-is-zaislines-masineles#more-710
http://www.savaitgalioprojektai.lt/
http://www.darysiupats.lt/knygos/knyga-arduino-visiems.html
http://www.darysiupats.lt/knygos/knyga-arduino-programuotojo-bloknotas.html
http://rem-blog.net/

Lenkų kalba:
http://pccode.pl/raspberry-pi-i-zestaw-duzego-masterkowicza/

Rusų kalba:
http://witharduino.blogspot.com/
http://nnm.ru/blogs/e-troll/chto-takoe-arduino/
http://rezoh.ru/?page_id=1434
http://www.arduino.ru/Reference
http://arduino.ru/projects

37
http://arduino-ru.blogspot.com/
http://amperka.ru/
http://wiki.amperka.ru/ daug medžiagos.
http://diy-blog.net/category/remont-elektroniki/uroki-arduino/
http://edugalaxy.intel.ru/index.php?automodule=blog&blogid=9960&showentry=1294 Čia yra
specialiai mokytojams skirtos nuorodos
http://robocraft.ru/page/summary/
http://robocraft.ru/blog/arduino/104.html
http://robocraft.ru/blog/arduino/95.html
http://robocraft.ru/blog/arduino/782.html
http://mk90.blogspot.com/
http://www.linuxformat.ru/ Šiam žurnale daug straipsnių apie arduino ir raspberry pi

Video pamokos:
http://www.youtube.com/playlist?list=PL944BA86E715C5FEE Viso 19 pamokų.

1.3. Raspberry Pi
http://www.raspberrypi.org/
http://www.element14.com/community/groups/raspberry-pi
http://learn.adafruit.com/category/raspberry-pi
http://www.doctormonk.com/2012/06/raspberry-pi-and-wireless-sensor.html
http://www.doctormonk.com/2012/08/review-of-raspberry-pi-prototyping.html
http://www.andremiller.net/content/raspberry-pi-and-arduino-via-gpio-
uart?utm_source=rss&utm_medium=rss&utm_campaign=raspberry-pi-and-arduino-via-gpio-uart

1.4. Elektronikos mokomoji medžiaga


SparkFun. Learn – https://learn.sparkfun.com/curriculum
Adafruit learning system – http://learn.adafruit.com/
Talking Electronics – http://www.talkingelectronics.com/te_interactive_index.html
Build Circuit – http://www.buildcircuit.com/

1.5. Programos

Elektroninių grandinių prototipavimo ir modeliavimo programa Fritzing – http://fritzing.org/


Principinių schemų braižymo programa –
http://www.digikey.com/schemeit#
https://www.circuitlab.com/
http://www.circuits.io/
Montažinių plokščių projektavimo programos:
Eagle PCB Design – http://www.cadsoftusa.com/
Design Spark PCB – http://www.designspark.com/
Free PCB – http://www.freepcb.com/
PCB Artist – http://www.4pcb.com/free-pcb-layout-software/
Express PCB – http://www.expresspcb.com/

38
Arduino komandos ir išvadai Priedas Nr. 2

39
Arduino programavimo aplinka (IDE) Priedas Nr. 3

1. Verify: patikrina programinį kodą, kurį Jūs parašėte srityje Nr. 8. Paspaudus Jums bus parodyta kokias
klaidas padarėte ir kurioje vietoje. Jei klaidų nėra Jums apie tai bus pranešta.
2. Upload: perkelia programinį kodą į Arduino plokštę. Kai nuspausite mygtuką ant plokštės esančios LED
TX ir RX mirksės – tai reiškia kad kodas įkeliamas.
3. New: atidaromas naujas, tusčias programinio kodo langas.
4. Open: atidarys Jūsų jau sukurtą programinį kodą iš failo kompiuteryje. Programinio kodo failas
vadinamas “Sketch”.
5. Save: Išsaugos Jūsų sukurtą programinį kodą į failą kompiuteryje.
6. Serial Monitor: atidarys serijinio ryšio langą kuriame galėsite matyti kokią informaciją Arduino rodo.
7. Sketch name: Jūsų failo pavadinimas su kuriuo Jūsų dabar dirbate.
8. Code area: vieta kurioje rašomas programinis kodas.
9. Message area: vieta kur Arduino IDE aplinka Jus informuoja apie klaidas ir problemas.
40
Arduino programavimo kalbos apžvalga Priedas Nr. 4

Arduino programavimui naudojama C kalba. Ši trumpa apžvalga skirta tiems, kas turi bet kurios kitos
programavimo kalbos pagrindus ir supažindina su C kalbos ypatumais.
Jei kai kurios sąvokos atrodys neįprastos, nenusiminkite, dirbant daug kas taps labiau suprantama. Daugiau
informacijos ieškokite anglų k. http://Arduino.cc puslapyje arba http://arduino.ru/Reference rusų kalba.

Struktūra
Kiekviena Arduino programa (kūrėjų dar vadinama sketch – piešinuku, nes Arduino – tai C kalba
“menininkams”) privalo turėti dvi funkcijas (jos kartais dar vadinamos paprogramėmis - routines).
void setup() { }
kodas esantis tarp riestinių skliaustų { } vykdomas vieną kartą, kai programa startuoja.
void loop() { }
Ši funkcija vykdoma po nustatymų funkcijos. Tai nuolat besikartojantis ciklas.

Sintaksė
Vienas iš sunkiau įsisavinamų C kalbos elementų yra jos sintaksė. Bet būtent sintaksė suteikia C kalbai ypač
daug galimybių.
// Vienos eilutės komentarai
Programuotojai dažnai rašo kodo paaiškinimus, kurie skirti jiems patiems ir bet kam kas skaitys jų
programą. Norėdami parašyti trumpą komentarą tiesiog įveskite // ir toje eilutėje parašytą tekstą
programa ignoruos.
/* */ kelių eilučių komentaras
Jei reikia ką nors pakomentuoti plačiau, surinkite /* pradžioje ir */ pabaigoje teksto. Tarp šių simbolių
esantis komentaras bus praleistas vykdant programą.
{ } Riestiniai skliaustai
Jie pažymi kur prasideda ir kur baigiasi tam tikras kodo segmentas. Naudojami funkcijose, taip pat cikluose.
; Kabliataškis
Kiekvienos kodo eilutės pabaigoje turi būti kabliataškis. Praleisti kabliataškiai -dažna programos kodo
kompiliavimo klaidų priežastis.

Kintamieji
Programa tėra instrukcija kaip manipuliuoti duomenimis tam tikru būdu. Kintamieji padeda tai daryti
paprasčiau.
int (integer)
Tai kintamųjų darbinis arkliukas. Jis naudojama sveikiesiem (be kablelių) skaičiams nuo -32 768 iki 37 767.
Skaičiai užima 2 baitus (16 bitų) atminties.
long
naudojamas dideliems skaičiams, kai neužtenka int. Užima 4 baitus (32 bitus) RAM atminties.
Talpina skaičius nuo -2 147 483 648 iki 2 147 483 647.
boolean
Paprastas kintamasis kurio reikšmės gali būti tiesa (True) arba netiesa (False). naudingas tuo, kad užima tik
1 RAM atminties bitą.
float
naudojamas operacijoms su realiaisiais skaičiais. Užima 4 baitus (32 bitus) RAM atminties ir apima skaičius
nuo -3.4028235E+38 iki 3.4028235E+38.
char
Talpina ASCII kodo simbolius (raides, skaičius, simbolius). (Pvz. A = 65 ). Užima 1 baitą (8 bitus ) RAM
atminties. Arduino naudoja tekstą kaip char simbolių masyvus.

41
Aritmetika nnnnnnnnvvvvvvvvvvvvnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Operatoriai naudojami veiksmams su skaičiais, labai panašiai kaip įprastoje matematikoje.
= (priskyrimas) suteikia tam tikrą reikšmę (dažniausiai kintamajam). Pvz. x = 10 * 2 , dabar x reikšmė
bus lygi 20.
% (modulis) atskiria dalybos veiksmo liekaną. Pvz. 12 % 10 bus lygu 2.
+ (sudėtis)
- (atimtis)
* (daugyba)
/ (dalyba)
Palyginimo operatoriai naudojami loginiam palyginimui.
== (lygu), pvz. veiksmo 12 == 10 rezultatas bus FALSE - netiesa; 12 == 12 rezultatas bus TRUE - tiesa.
!= (nelygu) Pvz. 12 != 10 yra TRUE - tiesa, 12 != 12 yra FALSE - netiesa.
< (mažiau negu) Pvz. 12 < 10 yra FALSE - netiesa; 12 < 14 yra TRUE - tiesa.
> (daugiau negu) Pvz. 12 > 10 yra TRUE - tiesa; 12 > 12 yra FALSE - netiesa.

Programos valdymas
Programos veikia tam tikra seka. Priklausomai nuo tam tikrų sąlygų vykdymo seka gali keistis.
if(sąlyga - condition){ }
else if (sąlyga - condition){ }
else { }
Čia tarp riestinių skliaustų { } esantis kodas bus vykdomas jei sąlygos kodo reikšmė bus TRUE. Jei sąlygos
kodo reikšmė bus FALSE - netiesa, toliau bus tikrinama sąlyga po else if ir jei sąlygos reikšmė yra
FALSE, galiausiai vykdomas kodas { }skliausteliuose po else.

Skaitmeninis įvedimas / išvedimas


pinMode(pin, mode);
Naudojamas nustatyti jungčiai, pin yra jungties numeris nuo 0 iki 19 (analoginė 0 - 5 yra 14 - 19). Veikimo
režimas mode gali būti įvestis INPUT arba išvestis OUTPUT.
digitalWrite(pin, value);
Kai jungties veikimo režimas nustatomas kaip OUTPUT - išvestis, ją galima įjungti paduodant +5V įtampą,
reikšmė value HIGH. Nustačius reikšmę LOW įtampa išjungiama (žemė).
int digitalRad(pin);
Įvedus jungties pin veikimo režimą kaip įvestį INPUT galime nustatyti ar į ją paduodama +5V įtampa (HIGH
reikšmė), ar ne (LOW reikšmė).

Analoginis įvedimas / išvedimas


Arduino yra skaitmeninė platforma, bet, taikydami tam tikras gudrybes, galime naudoti ir analoginius
signalus.
int analogWrite(pin, value);
Kai kurios Arduino jungtys gali būti naudojamos pulsams us moduliacija (3, 5, 6, 9, 10, 11).
Jungtis įjungiama ir išjungiama labai greitai, tai imituojant analoginę išvestį. Reikšmė value gali būti bet
koks skaičius nuo 0 (0% signalo ciklo ~0V ) ir 225 (100% signalo ciklo ~5V ).
int analogRead(pin);
Kai analoginės išvesties jungtis yra nustatyta įvesties režimu galime nuskaityti įtampą. Reikšmė value tarp
0 (0 V) ir 1024 (5V).

42
Magician chassis – DG007 surinkimo instrukcija Priedas Nr. 5

43
44
Šis kūrybinis darbas gali būti kopijuojamas, platinamas, rodomas, o t.p. naudojamas išvestiniams darbams,
su sąlyga, kad autorinis darbas bus priskirtas autoriui taip, kai tai apibrėžia autorius;
su sąlyga, kad autorinis darbas nebus naudojamas komerciniams tikslams;
visi išvestiniai darbai, kurie yra sukurti perrašinėjant, permaketuojant ar kitaip perredaguojant pirminį darbą,
turi būti priskirti analogiškai arba kitai, suderinamai licencijai.

45

You might also like