This shows you the differences between two versions of the page.
| et:arduino:programming [2017/05/11 07:39] – Somepub | et:arduino:programming [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ~~PB~~ | + | < |
| ====== Programmeerimine ====== | ====== Programmeerimine ====== | ||
| ===== Programmi struktuur ===== | ===== Programmi struktuur ===== | ||
| Line 48: | Line 48: | ||
| === Andmetüübid === | === Andmetüübid === | ||
| - | Arduino | + | Arduino |
| ^ Tüüp | ^ Tüüp | ||
| Line 63: | Line 63: | ||
| Sulgudes olevat sõna //signed// ei pea kasutama, kuna vaikimisi on andmetüübid bipolaarsed. Arduino programmeerimiskeeles on teksti hoidmiseks //String// objekt, mis lubab teha erinevaid tekstitöötluse toiminguid: teksti lisamine ja eemaldamine, | Sulgudes olevat sõna //signed// ei pea kasutama, kuna vaikimisi on andmetüübid bipolaarsed. Arduino programmeerimiskeeles on teksti hoidmiseks //String// objekt, mis lubab teha erinevaid tekstitöötluse toiminguid: teksti lisamine ja eemaldamine, | ||
| + | \\ | ||
| Konstante saab tekitada kahel viisil: | Konstante saab tekitada kahel viisil: | ||
| * makro #define kaudu | * makro #define kaudu | ||
| Line 125: | Line 126: | ||
| === Loogilised tehted === | === Loogilised tehted === | ||
| - | Loogilised tehted on eitus (**!**), loogiline korrutamine (**&&**) ja loogiline liitmine (**||**). Kui kasutada koos erinevaid loogikatehteid siis täidetakse esmalt eitus ja seejärel vasakult paremale järjekorras loogiline liitmine ja korrutamine. Samuti võib kindla tehte eelistamiseks kasutada sulge. | + | Loogilised tehted on eitus (!), loogiline korrutamine (&& |
| [{{ : | [{{ : | ||
| Line 162: | Line 163: | ||
| === Võrdlused === | === Võrdlused === | ||
| Arvude väärtuste võrdlemisel saadakse loogilised väärtused. Võrdlustehted on samaväärsus (==), erinevus (!=), suurem (>), suurem-võrdne (> =), väiksem (<) ja väiksem-võrdne (< =). | Arvude väärtuste võrdlemisel saadakse loogilised väärtused. Võrdlustehted on samaväärsus (==), erinevus (!=), suurem (>), suurem-võrdne (> =), väiksem (<) ja väiksem-võrdne (< =). | ||
| - | ~~PB~~ | + | < |
| **Näited võrdluste kasutamisest: | **Näited võrdluste kasutamisest: | ||
| <code c> | <code c> | ||
| Line 213: | Line 214: | ||
| === Tsüklid === | === Tsüklid === | ||
| - | Tsüklid võimaldavad ühte tegevust või programmi lõiku | + | Tsüklid võimaldavad ühte tegevust või programmilõiku |
| * **for**(muutuja algväärtustamine; | * **for**(muutuja algväärtustamine; | ||
| Line 245: | Line 246: | ||
| </ | </ | ||
| - | **Tsüklis liikumine** | + | **Tsüklis liikumine**\\ |
| Tsüklites on võimalik käimasoleva tsükli mõjutamiseks kasutada käske //break// ja // | Tsüklites on võimalik käimasoleva tsükli mõjutamiseks kasutada käske //break// ja // | ||
| <code c> | <code c> | ||
| /* Tsüklis suurendatakse muutujat loendur. | /* Tsüklis suurendatakse muutujat loendur. | ||
| - | | + | |
| mis sunnib programmi alustama uue tsükliga. | mis sunnib programmi alustama uue tsükliga. | ||
| Seega loenduri suurendamine jääb kolmel juhul vahele. */ | Seega loenduri suurendamine jääb kolmel juhul vahele. */ | ||
| Line 302: | Line 303: | ||
| ===== Viikude juhtimise funktsioonid ===== | ===== Viikude juhtimise funktsioonid ===== | ||
| - | Arduino programmeerimiseks on juba defineeritud hulk erinevaid funktsioone. Need ei ole standard C keele käsud vaid spetsiaalselt Arduino riistvara jaoks loodud funktsioonid. Kõige olulisemad ja vältimatult | + | Arduino programmeerimiseks on juba defineeritud hulk erinevaid funktsioone. Need ei ole standard C keele käsud vaid spetsiaalselt Arduino riistvara jaoks loodud funktsioonid. Kõige olulisemad ja vältimatult |
| **Viigu seadistamine: | **Viigu seadistamine: | ||
| Line 313: | Line 314: | ||
| **Viigu oleku lugemine:** | **Viigu oleku lugemine:** | ||
| * digitalRead(viigu_nr) - viigu oleku lugemine digitaalsel kujul ehk 0 või 1. | * digitalRead(viigu_nr) - viigu oleku lugemine digitaalsel kujul ehk 0 või 1. | ||
| - | * analogRead(viigu_nr) - viigu oleku lugemine | + | * analogRead(viigu_nr) - viigu oleku lugemine |
| Line 342: | Line 343: | ||
| pinMode(andurAN, | pinMode(andurAN, | ||
| } | } | ||
| - | |||
| void loop(){ | void loop(){ | ||
| if(analogRead(andurAN) > 500){ | if(analogRead(andurAN) > 500){ | ||
| - | // Kui anduri | + | // Kui anduri |
| + | // siis täidetakse | ||
| } | } | ||
| } | } | ||
| Line 358: | Line 359: | ||
| } | } | ||
| void loop(){ | void loop(){ | ||
| - | digitalWrite(led, | + | digitalWrite(led, |
| } | } | ||
| </ | </ | ||
| <code c> | <code c> | ||
| - | // Analoog väljundi | + | // Analoogväljundi |
| const int led = 11; | const int led = 11; | ||
| Line 370: | Line 371: | ||
| } | } | ||
| void loop(){ | void loop(){ | ||
| - | analogWrite(led, | + | analogWrite(led, |
| } | } | ||
| </ | </ | ||
| - | ===== Ajastus funktsioonid | + | ===== Ajastusfunktsioonid |
| Programmi töös on tihti vaja teostada kindla ajastusega tegevusi. Selleks on Arduino-l olemas neli funktsiooni, | Programmi töös on tihti vaja teostada kindla ajastusega tegevusi. Selleks on Arduino-l olemas neli funktsiooni, | ||
| Line 383: | Line 384: | ||
| void loop() { | void loop() { | ||
| - | // Loenduri tekitamine, mis loendab sekundeid | ||
| delay(1000); | delay(1000); | ||
| - | stopper++; // Muutujale ühe kordne | + | stopper++; // Muutujale ühe liitmine |
| } | } | ||
| </ | </ | ||
| Line 395: | Line 395: | ||
| void loop() { | void loop() { | ||
| delayMicroseconds(1000); | delayMicroseconds(1000); | ||
| - | stopper++; // Muutujale ühe kordne | + | stopper++; // Muutujale ühe liitmine |
| } | } | ||
| </ | </ | ||
| Line 406: | Line 406: | ||
| void loop() { | void loop() { | ||
| - | // Pidev võrdlemine mikrosekundite hetke arvu eelneva | + | // Pidev millisekundite |
| // Kui kahe arvu vahe on suurem kui 1000,siis suurendame muutujat stopper ühe võrra | // Kui kahe arvu vahe on suurem kui 1000,siis suurendame muutujat stopper ühe võrra | ||
| if((long)(millis() - aeg) > 1000){ | if((long)(millis() - aeg) > 1000){ | ||
| - | stopper++; // Muutujale ühe kordne | + | stopper++; // Muutujale ühe liitmine |
| - | aeg = millis(); // Millisekundite | + | aeg = millis(); // Millisekundite arvu salvestamine |
| } | } | ||
| // Programm saab muul ajal vabalt joosta | // Programm saab muul ajal vabalt joosta | ||
| Line 423: | Line 423: | ||
| void loop() { | void loop() { | ||
| - | // Pidev võrdlemine | + | // Pidev mikrosekundite arvu võrdlemine |
| - | // Kui kahe arvu vahe on suurem kui 1000, siis suurendame muutujat stopper | + | // Kui kahe arvu vahe on suurem kui 1000, siis suurendame muutujat stopper |
| if((long)(micros() - aeg) > 1000){ | if((long)(micros() - aeg) > 1000){ | ||
| stopper++; // Liidame muutujale ühe | stopper++; // Liidame muutujale ühe | ||
| - | aeg = micros(); // Millisekundite | + | aeg = micros(); // Millisekundite arvu salvestamine |
| } | } | ||
| // Programm saab muul ajal vabalt joosta | // Programm saab muul ajal vabalt joosta | ||
| Line 434: | Line 434: | ||
| ===== Teegid ===== | ===== Teegid ===== | ||
| - | Kontrolleri programmeerimise lihtsustamiseks on riistvara tootjad ja/või vabatahtlikud loonud tarkvarateegid erinevate seadmete | + | Kontrolleri programmeerimise lihtsustamiseks on riistvara tootjad ja/või vabatahtlikud loonud tarkvarateegid erinevate seadmete |
| **Mõned Arduino IDE-s vaikimisi olevad teegid:** | **Mõned Arduino IDE-s vaikimisi olevad teegid:** | ||
| * Wire - I2C andmeliides | * Wire - I2C andmeliides | ||
| * EEPROM - püsimälu kasutamine | * EEPROM - püsimälu kasutamine | ||
| - | * Servo - hobi servo juhtimine | + | * Servo - hobi servomootori |
| * GSM - mobiilivõrgu kaudu kommunikatsioon | * GSM - mobiilivõrgu kaudu kommunikatsioon | ||
| - | * SPI - Sünkroonne | + | * SPI - sünkroonne |
| * Ethernet - kaabliga võrgu kaudu kommunikatsioon | * Ethernet - kaabliga võrgu kaudu kommunikatsioon | ||
| * Wifi - juhtmevaba võrgu kaudu kommunikatsioon | * Wifi - juhtmevaba võrgu kaudu kommunikatsioon | ||
| * Liquid Crystal - tähemärgiliste LCD ekraanide juhtimine | * Liquid Crystal - tähemärgiliste LCD ekraanide juhtimine | ||
| - | ~~PB~~ | + | |
| + | \\ | ||
| + | Teeke võib ka ise koostada ja seda on mõttekas teha, kui on mingid funktsioonid, | ||
| + | |||
| + | Uue teegi loomiseks võib alustada tavalisest Arduino programmist, | ||
| + | |||
| + | Teegi loomise täpsema juhendi leiab siit:\\ | ||
| + | https:// | ||
| + | |||
| + | Teegi loomise stiilinäite ja soovitused leiab siit:\\ | ||
| + | https:// | ||
| + | |||
| + | |||
| + | < | ||
| === Välise teegi lisamine Arduino arenduskeskkonda === | === Välise teegi lisamine Arduino arenduskeskkonda === | ||