This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:arduino:examples [2017/07/25 05:14] – kaupo.raid | en:arduino:examples [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | TTU Summer School programming | + | ========= |
| - | ====== | + | ====== |
| {{: | {{: | ||
| - | ===== Näide | + | ===== Example |
| - | [[https:// | + | Theory: |
| <code c> | <code c> | ||
| /* | /* | ||
| - | Nimetus: Näide | + | Example |
| - | Kirjeldus: Nuppu all hoides LED põleb | + | |
| */ | */ | ||
| - | /* Konstandid | + | /* Constants |
| - | // Viik kuhu on ühendatud nupp | + | // Set button pin |
| - | const int nupp = A0; | + | const int button |
| - | // Viik kuhu on ühendatud | + | // Set LED pin |
| const int led = 13; | const int led = 13; | ||
| - | /* Globaalsed muutujad | + | /* Global variables |
| - | // Nupu muutuja oleku salvestamine ja selle algväärtustamine | + | // Holds the current state of button |
| - | int nupuOlek | + | int buttonState |
| void setup() | void setup() | ||
| { | { | ||
| - | // LED viigu väljundi seadistamine | + | // Set LED pin to output |
| pinMode(led, | pinMode(led, | ||
| - | // Nupu viigu sisendi seadistamine ja sisemise "pull-up" takisti aktiveermine | + | // Set button pin to input with internal |
| - | pinMode(nupp, INPUT_PULLUP); | + | pinMode(button, INPUT_PULLUP); |
| } | } | ||
| void loop() | void loop() | ||
| { | { | ||
| - | // Nupu muutuja hetkeväärtuse salvestamine | + | // Get the curren state of button pin |
| - | | + | |
| - | // Kui nupp on alla vajutatud, siis seadistame | + | // If button is pressed then turn on LED |
| - | if (nupuOlek | + | if (buttonState |
| { | { | ||
| digitalWrite(led, | digitalWrite(led, | ||
| } | } | ||
| - | // Muul juhul seadistame | + | // All other cases turn LED off |
| else | else | ||
| - | { digitalWrite(led, | + | { |
| + | digitalWrite(led, | ||
| } | } | ||
| } | } | ||
| </ | </ | ||
| - | ===== Näide | + | ===== Example |
| <code c> | <code c> | ||
| /* | /* | ||
| - | Nimetus: Näide | + | Example |
| - | Kirjeldus: Nupule vajutades süttib LED 1 sekundiks | + | |
| */ | */ | ||
| - | // Algus identne näitega | + | // Setup is same with example |
| - | const int nupp = A0; | + | const int button |
| const int led = 13; | const int led = 13; | ||
| - | int nupuOlek | + | int buttonState |
| void setup() | void setup() | ||
| { | { | ||
| pinMode(led, | pinMode(led, | ||
| - | pinMode(nupp, INPUT_PULLUP); | + | pinMode(button, INPUT_PULLUP); |
| } | } | ||
| void loop() | void loop() | ||
| { | { | ||
| - | // Nupu muutuja hetkeväärtuse salvestamine | + | // Get the curren state of button pin |
| - | | + | |
| | | ||
| - | /* Kui nupp on alla vajutatud, siis seadistame LED viigu kõrgeks ehk LED süttib, | + | // When button is pressed then set LED on and halt program for 1 second |
| - | | + | if (buttonState |
| - | if (nupuOlek | + | |
| { | { | ||
| digitalWrite(led, | digitalWrite(led, | ||
| delay(1000); | delay(1000); | ||
| - | } | + | } |
| + | // Turn LED off | ||
| digitalWrite(led, | digitalWrite(led, | ||
| } | } | ||
| </ | </ | ||
| - | ===== Näide | + | ===== Example |
| <code c> | <code c> | ||
| /* | /* | ||
| - | Nimetus: Näide | + | Example |
| - | Kirjeldus: Nupule vajutades muudab LED oma olekut püsivalt | + | |
| */ | */ | ||
| - | // Algus identne näitega | + | // Setup is same with example |
| - | const int nupp = A0; | + | const int button |
| const int led = 13; | const int led = 13; | ||
| - | int nupuOlek | + | int buttonState |
| void setup() | void setup() | ||
| { | { | ||
| pinMode(led, | pinMode(led, | ||
| - | pinMode(nupp, INPUT_PULLUP); | + | pinMode(button, INPUT_PULLUP); |
| } | } | ||
| void loop() | void loop() | ||
| { | { | ||
| - | // Programm ei tee midagi kuni vajutatakse nuppu | + | // When button is pressed and hold the program stays inside while(1) loop |
| - | if (digitalRead(nupp) == LOW) | + | if (digitalRead(button) == LOW) |
| { | { | ||
| - | // | + | // |
| delay(50); | delay(50); | ||
| - | while (digitalRead(nupp) == LOW) | + | while (digitalRead(button) == LOW) |
| - | | + | |
| } | } | ||
| - | | + | // Invert LED current state |
| - | | + | |
| digitalWrite(led, | digitalWrite(led, | ||
| | | ||
| - | // | + | // |
| delay(50); | delay(50); | ||
| } | } | ||
| Line 128: | Line 125: | ||
| - | ===== Harjutused | + | ===== Exercises |
| - | === Harjutus | + | === Exercise |
| - | Modifitseerida näiteprogrammi nii, et nupule vajutades vilgub | + | Modify example so that on button press LED blinks 3 times. |
| - | === Harjutus | + | === Exercise |
| - | Modifitseerida näiteprogrammi nii, et nupule vajutades hakkab | + | Modify example so that on button press LED starts to blink with constant interval. Second press ends the blinking. |
| - | === Harjutus #1.3 === | + | |
| - | Modifitseerida näiteprogrammi nii, et nupule vajutades LED vilgub nii mitu korda, kui on nuppu programmi töötamise jooksul kokku vajutatud. Pärast igat vajutust suureneb vilkumiste arv ühe võrra. | + | |
| - | ~~PB~~ | + | ====== |
| - | ====== | + | |
| {{: | {{: | ||
| - | ===== Näide | + | ===== Example |
| <code c> | <code c> | ||
| /* | /* | ||
| - | Nimetus: Näide | + | Example |
| - | Kirjeldus: Potentsiomeetri pööramisel üle nivoo süttib LED | + | |
| */ | */ | ||
| - | // Viik kuhu on ühendatud potentsiomeeter | + | // Set potentiometer pin |
| - | const int pote = A1; | + | const int pot = A1; |
| - | // Viik kuhu on ühendatud | + | // Set LED pin |
| const int led = 13; | const int led = 13; | ||
| - | // Potentsiomeetri muutuja väärtuse salvestamine ja selle algväärtustamine | + | // Holds potentiometer digital value |
| - | int poteOlek | + | int potState |
| void setup() | void setup() | ||
| { | { | ||
| - | /* Mikrokontrolleri viigud on tavaolekus sisendid ja seega ei pea | + | // Set LED pin to output |
| - | potentsiomeetri sisendit eraldi seadistama */ | + | pinMode(led, |
| - | pinMode(led, | + | |
| } | } | ||
| void loop() | void loop() | ||
| { | { | ||
| - | // Viigu muutuja hetkeväärtuse salvestamine | + | // Get digital value of potentiometer |
| - | | + | |
| | | ||
| - | // Kui sisendviik | + | // When potentiometer digital value is logical " |
| - | if(poteOlek | + | if(potState |
| { | { | ||
| digitalWrite(led, | digitalWrite(led, | ||
| } | } | ||
| - | // Muul juhul seame led viigu madalaks | + | // All other cases set LED off |
| else | else | ||
| { | { | ||
| Line 186: | Line 178: | ||
| - | ===== Näide | + | ===== Example |
| <code c> | <code c> | ||
| - | /* Nimetus: Näide | + | /* |
| - | | + | Example |
| */ | */ | ||
| - | // Algus identne näitega | + | |
| - | const int pote = A1; | + | // Setup is same with example |
| + | const int pot = A1; | ||
| const int led = 13; | const int led = 13; | ||
| - | int poteOlek | + | int potState |
| void setup() | void setup() | ||
| Line 205: | Line 198: | ||
| void loop() | void loop() | ||
| { | { | ||
| - | // Potentsiomeetri muutuja hetkeväärtuse salvestamine | + | // Get analog value of potentiometer |
| - | | + | |
| | | ||
| - | // LED viigu oleku kõrgeks seadmine | + | // Turn LED on |
| digitalWrite(led, | digitalWrite(led, | ||
| | | ||
| - | // Viite tekitamine, mille pikkus on võrdne potentsiomeetri sisendi väärtusega | + | // Halt the program for potentiometer analog value number of milliseconds |
| - | delay(poteOlek); | + | delay(potState); |
| | | ||
| - | // LED viigu oleku madalaks seadmine | + | // Turn LED off |
| digitalWrite(led, | digitalWrite(led, | ||
| | | ||
| - | // Viite tekitamine, mille pikkus on võrdne potentsiomeetri sisendi väärtusega | + | // Halt the program for potentiometer analog value number of milliseconds |
| - | delay(poteOlek); | + | delay(potState); |
| } | } | ||
| </ | </ | ||
| - | ===== Näide | + | ===== Example |
| <code c> | <code c> | ||
| - | /* Nimetus: Näide | + | /* |
| - | Kirjeldus: LED-i ereduse juhtimine potentsiomeetri asendi järgi | + | Example |
| - | // Algus identne näitega | + | */ |
| + | // Setup is same with example | ||
| - | const int pote = A1; | + | const int pot = A1; |
| const int led = 13; | const int led = 13; | ||
| - | int poteOlek | + | int potState |
| void setup() | void setup() | ||
| Line 240: | Line 234: | ||
| void loop() | void loop() | ||
| { | { | ||
| - | // Potentsiomeetri muutuja hetkeväärtuse salvestamine | + | // Get analog value of potentiometer |
| - | | + | |
| | | ||
| - | /* Kui potentsiomeetri väärtus on suurem kui 0, siis seame LED viigu kõrgeks, | + | |
| - | | + | if (potState |
| - | if (poteOlek | + | |
| { | { | ||
| digitalWrite(led, | digitalWrite(led, | ||
| - | delayMicroseconds(poteOlek); | + | delayMicroseconds(potState); |
| } | } | ||
| | | ||
| - | // Seame LED viigu madalasse olekusse | + | // Turn LED off |
| digitalWrite(led, | digitalWrite(led, | ||
| | | ||
| - | // Programm ootab ülejäänud arvu mikrosekundeid perioodist | + | // Halt program for short period |
| - | delayMicroseconds(1023 - poteOlek); | + | delayMicroseconds(1023 - potState); |
| } | } | ||
| </ | </ | ||
| - | ===== Harjutused | + | ===== Exercises |
| - | === Harjutus #2.1 === | + | === Exercise |
| - | Modifitseerida näitekoodi nii, et LED läheb põlema viigu kõrgest olekust madalasse olekusse minekul. Potentsiomeetri kogu pöördenurk vastab pingevahemikule 0-5 V. Leida ligilähedane pinge väärtus, mille juures Arduino sisend muutub madalast olekust kõrgesse olekusse ja vastupidi. Kas esineb hüsterees lülitumiste vahel? Tulemuse saamiseks võib kasutada potentsiomeetri nurka või jadapordi monitori. | + | Control |
| - | + | ||
| - | === Harjutus | + | |
| - | Modifitseerida näiteprogrammi nii, et potentsiomeetri keskpunktist (väärtus ~512) ühele poole reguleeritakse LED-i põlemas oleku viidet ja teisele poole kustus oleku viidet. Viite pikkuse reguleerimisel peab maksimaalne viite väärtus olema keskpunkti lähedal ja minimaalne lõpp-punktides. Fikseeritud viite pikkus peab olema 512 millisekundit. Seejuures reguleeritav viite pikkus peab jääma vahemikku 0 kuni 511. Tulemusena peaks ühes potentsiomeetri äärmuses LED olema püsivalt põlemas ja teises püsivalt kustus ning keskel võrdselt põlemas ja kustus. | + | |
| - | + | ||
| - | === Harjutus #2.3 === | + | |
| - | Modifitseerida näiteprogrammi nii, et LED põleb ainult potentsiomeetri pööramise ajal. LED-i põlemise eredus sõltub potentsiomeetri pööramise kiirusest. | + | |
| + | ====== Project 3 Alphabetical LCD ====== | ||
| - | ====== Projekt 3 Alfabeetiline LCD ====== | ||
| + | ===== Example #3.1 Writing on LCD screen ===== | ||
| - | ===== Näide #3.1 LCD ekraanile kirjutamine ===== | + | Theory: |
| - | https:// | + | |
| <code c> | <code c> | ||
| /* | /* | ||
| - | Nimetus: Näide | + | Example |
| - | Kirjeldus: LCD ekraanile kirjutamine | + | |
| */ | */ | ||
| - | // Vajaliku teegi kaasamine | + | // Include LCD library |
| #include < | #include < | ||
| - | // LCD objekti tekitamine ja ühendusviikude määramine. | + | // Create |
| - | // NB! Need viigud võivad olla erinevatel LCD laiendusplaatidel erinevad | + | |
| LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | ||
| void setup() | void setup() | ||
| { | { | ||
| - | // LCD ridade ja veergude määramine vastavalt riistvarale | + | // Define |
| lcd.begin(16, | lcd.begin(16, | ||
| | | ||
| - | // Ekraani tervitusteksti kuvamine | + | // Print out welcome message |
| - | lcd.print(" | + | lcd.print(" |
| } | } | ||
| void loop() | void loop() | ||
| { | { | ||
| - | // Kursori asukohta muutmine: esimene veerg(tähis 0) ja teine rida (tähis 1) | + | // Change cursor position to second line |
| lcd.setCursor(0, | lcd.setCursor(0, | ||
| | | ||
| - | // Ekraani loenduri väärtuse kuvamine | + | // Print out program working time in seconds |
| lcd.print(millis()/ | lcd.print(millis()/ | ||
| } | } | ||
| Line 308: | Line 293: | ||
| - | ===== Näide | + | ===== Example |
| <code c> | <code c> | ||
| /* | /* | ||
| - | Nimetus: Näide | + | Example |
| - | Kirjeldus: Erikujuliste tähemärkide tekitamine ja kuvamine LCD ekraanil | + | |
| */ | */ | ||
| - | // Vajaliku teegi kaasamine | + | |
| #include < | #include < | ||
| - | + | ||
| - | // LCD objekti tekitamine ja ühendusviikude määramine | + | |
| LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | ||
| - | /* Massiiv erikujulise tähemärgi tekitamiseks, | + | |
| - | | + | // |
| - | | + | |
| - | | + | |
| byte customChar[8] = | byte customChar[8] = | ||
| { | { | ||
| Line 339: | Line 320: | ||
| void setup() | void setup() | ||
| { | { | ||
| - | // Tekitab uue erikujulise tähemärgi draiveri mällu kohale | + | // Load new character to LCD memory position "0" |
| lcd.createChar(0, | lcd.createChar(0, | ||
| | | ||
| - | // LCD ridade ja veergude määramine vastavalt riistvarale | + | // Define |
| lcd.begin(16, | lcd.begin(16, | ||
| - | // | + | // Display new custom character on LCD |
| - | lcd.write((uint8_t)0); | + | lcd.write((uint8_t)0); |
| } | } | ||
| void loop() | void loop() | ||
| { | { | ||
| - | /* Tsüklis ei tehta midagi kogu tegevus | + | // Do nothing |
| - | on sooritatud juba //setup// funktsioonis */ | + | |
| } | } | ||
| </ | </ | ||
| - | ===== Näide | + | ===== Example |
| <code c> | <code c> | ||
| /* | /* | ||
| - | Nimetus: | + | Nimetus: |
| - | Kirjeldus: LCD laiendusplaadi nuppude lugemine | + | Kirjeldus: |
| */ | */ | ||
| - | // Vajaliku teegi kaasamine | + | |
| #include < | #include < | ||
| - | // LCD objekti tekitamine ja ühendusviikude määramine | + | |
| LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | ||
| - | // Nupude konstandi defineerimine | + | // Define button states constants |
| - | const int nuppRIGHT | + | const int RIGHT = 0; |
| - | const int nuppUP | + | const int UP = 1; |
| - | const int nuppDOWN | + | const int DOWN = 2; |
| - | const int nuppLEFT | + | const int LEFT = 3; |
| - | const int nuppSELECT | + | const int SELECT |
| - | const int nuppNONE | + | const int NONE = 5; |
| - | /* Globaalsed muutujad | + | /* Global variables |
| - | // Vajutatud nupu muutuja konstandi salvestamine | + | // Holds the value of pressed button |
| - | int vajutatudNupp; | + | int pressedButton; |
| - | // Aanaloogsisendi muutuja väärtuse salvestamine | + | // Holds the value of analog input |
| - | int nupuSisend; | + | int buttonValue; |
| void setup() | void setup() | ||
| { | { | ||
| - | // LCD ridade ja veergude määramine vastavalt riistvarale | + | // Define |
| lcd.begin(16, | lcd.begin(16, | ||
| | | ||
| - | // Ekraani info kuvamine | + | // Print explaining text |
| lcd.print(" | lcd.print(" | ||
| | | ||
| - | // Ekraani analoogsisendi A0 väärtuse kuvamine | + | // Print out analog input value |
| lcd.print(analogRead(A0)); | lcd.print(analogRead(A0)); | ||
| } | } | ||
| void loop() | void loop() | ||
| { | { | ||
| - | /* Kutsub välja funktsiooni kontrolliNuppe | + | // Calls out fucntion and saves returned value to variable |
| - | ja salvestab tagastatud väärtuse muutujasse */ | + | |
| - | | + | |
| | | ||
| - | // Kontrollib kas mõni nupp on alla vajutatud | + | // Check if there is a pressed button |
| - | if(vajutatudNupp | + | if(pressedButton |
| { | { | ||
| - | lcd.clear(); | + | lcd.clear(); |
| | | ||
| - | lcd.print(" | + | lcd.print(" |
| | | ||
| - | lcd.print(nupuSisend); // Muutuja väärtuse kuvamine ekraanil | + | lcd.print(buttonValue); // Print out analog input value |
| | | ||
| - | delay(500); // Lühike viide, et ekraanil väärtust liiga kiirelt ei uuendataks | + | delay(500); // Halts program for 500ms to get stable text on LCD |
| } | } | ||
| } | } | ||
| - | </code> | + | // Function read analog input value and compares it with values of button states |
| - | ~~PB~~ | + | |
| - | <code c> | + | |
| - | // Funktsioon võtab analoogsisendi väärtuse ja võrdleb olemasolevate väärtustega. | + | |
| // Tagastab arvu vahemikus 0 kuni 5 vastavalt defineeritud konstandile | // Tagastab arvu vahemikus 0 kuni 5 vastavalt defineeritud konstandile | ||
| - | int kontrolliNuppe() | + | int checkButtons() |
| { | { | ||
| - | // | + | // |
| - | nupuSisend | + | buttonValue |
| - | if (nupuSisend | + | |
| - | if (nupuSisend | + | if (buttonValue |
| - | if (nupuSisend | + | if (buttonValue |
| - | if (nupuSisend | + | if (buttonValue |
| - | if (nupuSisend | + | if (buttonValue |
| - | // | + | if (buttonValue |
| - | | + | // |
| + | | ||
| } | } | ||
| </ | </ | ||
| - | ===== Harjutused | + | ===== Exercises |
| - | === Harjutus | + | === Exercise |
| - | Muuta näiteprogrammi nii, et mõlemale reale tekkiv tekst oleks võimalikult keskele joondatud. | + | Modify example so that text is center aligned. |
| - | === Harjutus | + | === Exercise |
| - | Koostada animatsioon LCD ekraanil, kasutades ise genereeritud tähemärke. Tähemärkide massiivide tekitamiseks kasutada generaatorit, | + | Make a small animation with custom characters. |
| + | Custom character code generator | ||
| - | === Harjutus #3.3 === | ||
| - | Muuta näiteprogrammi nii, et nupud " | ||
| - | ~~PB~~ | + | ====== |
| - | ====== | + | |
| {{: | {{: | ||
| - | + | ===== Example | |
| - | ===== Näide | + | Libraries: |
| - | [[https:// | + | |
| <code c> | <code c> | ||
| /* | /* | ||
| - | Nimetus: Näide | + | Example |
| - | Kirjeldus: LCD laiendusplaadi kasutamine kaugus- ja lähedusanduritega | + | |
| */ | */ | ||
| - | // Vajalike teekide kaasamine | + | // Include libraries |
| - | // LCD ekraani funktsioone sisaldav teek | + | |
| #include < | #include < | ||
| - | // Ultrahelianduri funktsioone sisaldav teek | ||
| #include < | #include < | ||
| - | // Andurite ühendusviikude määramine | + | // Set pins for sensors |
| - | const int ultraheliKaugusandur_TRIGGER | + | const int US_TRIGGER |
| - | const int ultraheliKaugusandur_ECHO | + | const int US_ECHO |
| - | const int infrapunaLahedusandur | + | const int IR = A4; |
| - | /* Globaalsed muutujad ja konstandid | + | /* Global variables and constants |
| - | const int ultraheliKaugusandur_maksimumKaugus | + | const int maxDistance |
| - | int ultraheliKaugus, infrapunaNaebObjekti; | + | int distance, proximity; |
| - | + | ||
| - | // LCD objekti tekitamine ja ühendusviikude määramine | + | // Create |
| LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | ||
| - | // Ultraheli kaugusanduri objekti tekitamine koos viikude ühendamisega | + | // Create ultrasonic object and define connection pins |
| - | NewPing sonar(ultraheliKaugusandur_TRIGGER, ultraheliKaugusandur_ECHO, | + | NewPing sonar(US_TRIGGER, US_ECHO,maxDistance); |
| - | ultraheliKaugusandur_maksimumKaugus); | + | |
| void setup() | void setup() | ||
| { | { | ||
| - | // LCD ridade ja veergude määramine vastavalt riistvarale | + | //Define |
| lcd.begin(16, | lcd.begin(16, | ||
| - | // Selgitavate tekstide kuvamine ekraanil | + | // Print out explaining text |
| - | lcd.print(" | + | lcd.print(" |
| lcd.setCursor(0, | lcd.setCursor(0, | ||
| - | lcd.print(" | + | lcd.print(" |
| } | } | ||
| void loop() | void loop() | ||
| { | { | ||
| - | // Ultrahelianduriga kaguse mõõtmine sentimeetrites ja muutujasse salvestamine | + | // Get distance in centimeters |
| - | | + | |
| - | // Lähedusanduri väärtuse lugemine ja muutujasse salvestamine | + | // Get proximity of object |
| - | | + | |
| - | // Kursori esimesele reale ja tähemärgile 9 nihutamine | + | // Set cursor to first line 10th character |
| lcd.setCursor(9, | lcd.setCursor(9, | ||
| - | // Ekraani kaugusanduri mõõdetud kauguse kuvamine | + | // EPrint out distance |
| - | lcd.print(ultraheliKaugus); | + | lcd.print(distance); |
| - | | + | // Overwrite previous value numbers with spaces |
| - | et vana lugemi väärtus ei jääks ekraanil näha */ | + | |
| lcd.print(" | lcd.print(" | ||
| - | // Kursori teisele reale ja tähemärgile 9 nihutamine | + | // Set cursor on second line 10th character |
| lcd.setCursor(9, | lcd.setCursor(9, | ||
| - | // Kui infrapunalähedusanduri väljund on kõrge, siis kirjuta ekraanile | + | // when infrared sensor does not see anything print out " |
| - | if(infrapunaNaebObjekti | + | if(proximity |
| + | else lcd.print(" | ||
| - | // Kui infrapunalähedusanduri väljund on madal, siis kirjuta ekraanile " | + | // Halt program to get stable view of LCD |
| - | else lcd.print(" | + | |
| - | + | ||
| - | // Väike viide, et tekst ekraanil oleks loetavam | + | |
| delay(500); | delay(500); | ||
| } | } | ||
| Line 525: | Line 491: | ||
| - | ===== Harjutused | + | ===== Exercises |
| - | === Harjutus | + | === Exercise |
| - | Modifitseerida näiteprogrammi nii, et potentsiomeetriga määratakse temperatuuri nivoo, mis salvestatakse nupuga programmi mällu ja selle nivoo ületamisel käivitatakse täiturmehhanism (milleks on LED).\\ | + | Find out which sensor sample time is faster. |
| - | Lisaülesanne: | + | |
| - | === Harjutus #4.2 === | ||
| - | Modifitseerida näiteprogrammi vastavalt vajadusele, et selgitada välja kumb anduritest reageerib kauguse muutusele kiiremini. Võimalusel kontrollida tulemust veebist. | ||
| - | + | ====== | |
| - | ====== | + | |
| {{: | {{: | ||
| - | ===== Näide | + | |
| + | ===== Example | ||
| <code c> | <code c> | ||
| - | /* Nimetus: Näide | + | /* |
| - | Kirjeldus: Alalisvoolumootor ja H-sild | + | Example |
| */ | */ | ||
| - | // Mootori viikude määramine juhtmooduli juhtimiseks. | + | // Set pins for driver inputs |
| - | // Mootori liikumissuund sõltub ka mootori ühendamise polaarsusest. | + | const int left_A |
| - | const int vasak_A | + | const int left_B |
| - | const int vasak_B | + | const int right_A |
| - | const int parem_A | + | const int right_B |
| - | const int parem_B | + | |
| void setup() | void setup() | ||
| { | { | ||
| - | // Mootori juhtviikude väljundiks seadistamine | + | // Set driver control pins as output |
| - | pinMode(vasak_A,OUTPUT); | + | pinMode(left_A,OUTPUT); |
| - | pinMode(vasak_B,OUTPUT); | + | pinMode(left_B,OUTPUT); |
| - | pinMode(parem_A,OUTPUT); | + | pinMode(right_A,OUTPUT); |
| - | pinMode(parem_B,OUTPUT); | + | pinMode(right_B,OUTPUT); |
| - | | + | |
| - | delay(2000); | + | delay(2000); |
| } | } | ||
| Line 565: | Line 527: | ||
| { | { | ||
| | | ||
| - | | + | |
| - | delay(2000); | + | delay(2000); |
| | | ||
| - | | + | |
| - | delay(500); | + | delay(500); |
| } | } | ||
| - | // Funktsioon mootori liikumissuundade määramiseks | + | // This function controls the driver input pins to get correct motion |
| - | void mootorid(int vasak, int parem) | + | void motors(int left, int right) |
| { | { | ||
| - | // Vasak mootor | + | // Left Motor |
| - | if(vasak == 1) | + | if(left == 1) |
| - | { // Vasak mootor edasi | + | { // Left motor CW |
| - | digitalWrite(vasak_A,HIGH); | + | digitalWrite(left_A,HIGH); |
| - | digitalWrite(vasak_B,LOW); | + | digitalWrite(left_B,LOW); |
| } | } | ||
| - | else if(vasak == -1) | + | else if(left == -1) |
| - | { // Vasak mootor tagasi | + | { // Left motor CCW |
| - | digitalWrite(vasak_A,LOW); | + | digitalWrite(left_A,LOW); |
| - | digitalWrite(vasak_B,HIGH); | + | digitalWrite(left_B,HIGH); |
| } | } | ||
| else | else | ||
| - | { // Vasak mootor seisma | + | { // Left motor STOP |
| - | digitalWrite(vasak_A,LOW); | + | digitalWrite(left_A,LOW); |
| - | digitalWrite(vasak_B,LOW); | + | digitalWrite(left_B,LOW); |
| } | } | ||
| - | // Parem mootor | + | // Right motor |
| - | if(parem == 1) | + | if(right == 1) |
| - | { // Parem mootor edasi | + | { // Right motor CW |
| - | digitalWrite(parem_A,HIGH); | + | digitalWrite(right_A,HIGH); |
| - | digitalWrite(parem_B,LOW); | + | digitalWrite(right_B,LOW); |
| } | } | ||
| - | else if(parem == -1) | + | else if(right == -1) |
| - | { // Parem mootor tagasi | + | { // Right motor CCW |
| - | digitalWrite(parem_A,LOW); | + | digitalWrite(right_A,LOW); |
| - | digitalWrite(parem_B,HIGH); | + | digitalWrite(right_B,HIGH); |
| } | } | ||
| else | else | ||
| - | { // Parem mootor seisma | + | { // Right motor STOP |
| - | digitalWrite(parem_A,LOW); | + | digitalWrite(right_A,LOW); |
| - | digitalWrite(parem_B,LOW); | + | digitalWrite(right_B,LOW); |
| } | } | ||
| } | } | ||
| </ | </ | ||
| - | ===== Näide | + | ===== Example |
| <code c> | <code c> | ||
| - | /* Nimetus: | + | /* Nimetus: |
| - | | + | Example |
| - | L9110 mootori juhtmooduli näitel. | + | |
| */ | */ | ||
| - | // Mootori viikude määramine juhtmooduli juhtimiseks | + | // Set pins for driver inputs |
| - | // Mootori liikumissuund sõltub ka mootori ühendamise polaarsusest | + | const int left_A |
| - | const int vasak_A | + | const int left_B |
| - | const int vasak_B | + | const int right_A |
| - | const int parem_A | + | const int right_B |
| - | const int parem_B | + | |
| void setup() | void setup() | ||
| { | { | ||
| - | // Mootori juhtviikude väljundiks seadistamine | + | // Set driver control pins as output |
| - | pinMode(vasak_A,OUTPUT); | + | pinMode(left_A,OUTPUT); |
| - | pinMode(vasak_B,OUTPUT); | + | pinMode(left_B,OUTPUT); |
| - | pinMode(parem_A,OUTPUT); | + | pinMode(right_A,OUTPUT); |
| - | pinMode(parem_B,OUTPUT); | + | pinMode(right_B,OUTPUT); |
| - | | + | |
| - | delay(2000); | + | delay(2000); |
| } | } | ||
| void loop() | void loop() | ||
| { | { | ||
| - | | + | |
| - | delay(2000); | + | delay(2000); |
| - | | + | |
| - | delay(2000); | + | delay(2000); |
| - | | + | |
| - | delay(2000); | + | delay(2000); |
| - | | + | |
| - | delay(2000); | + | delay(2000); |
| - | | + | |
| - | delay(2000); | + | delay(2000); |
| } | } | ||
| - | // Funktsioon mootori liikumissuuna ja kiiruse määramiseks | + | // This function sets the motors speed and directions |
| - | void mootorid(int vasak, int parem) | + | void motors(int left, int right) |
| { | { | ||
| - | // Vasak mootor | + | // Left motor |
| - | if(vasak > 0 && | + | if(left > 0 && |
| - | { // Vasak mootor otse | + | { // Left motor CW |
| - | analogWrite(vasak_A,vasak); | + | analogWrite(left_A,left); |
| - | digitalWrite(vasak_B,LOW); | + | digitalWrite(left_B,LOW); |
| } | } | ||
| - | else if(vasak < 0 && | + | else if(left < 0 && |
| - | { // Vasak mootor tagurpidi | + | { // Left motor CCW |
| - | analogWrite(vasak_A,255+vasak); | + | analogWrite(left_A, 255+left); |
| - | digitalWrite(vasak_B,HIGH); | + | digitalWrite(left_B,HIGH); |
| } | } | ||
| else | else | ||
| - | { // Vasak mootor seisma | + | { // Left motor STOP |
| - | digitalWrite(vasak_A,LOW); | + | digitalWrite(left_A,LOW); |
| - | digitalWrite(vasak_B,LOW); | + | digitalWrite(left_B,LOW); |
| } | } | ||
| - | // Parem mootor | + | // Right motor |
| - | if(parem > 0 && | + | if(right > 0 && |
| - | { // Parem mootor otse | + | { // Right motor CW |
| - | analogWrite(parem_A,parem); | + | analogWrite(right_A,right); |
| - | digitalWrite(parem_B,LOW); | + | digitalWrite(right_B,LOW); |
| } | } | ||
| - | else if(parem < 0 && | + | else if(right < 0 && |
| - | { // Parem mootor tagurpidi | + | { // Right motor CCW |
| - | analogWrite(parem_A,255+parem); | + | analogWrite(right_A,255+right); |
| - | digitalWrite(parem_B,HIGH); | + | digitalWrite(right_B,HIGH); |
| } | } | ||
| else | else | ||
| - | { // Parem mootor seisma | + | { // Right motor STOP |
| - | digitalWrite(parem_A,LOW); | + | digitalWrite(right_A,LOW); |
| - | digitalWrite(parem_B,LOW); | + | digitalWrite(right_B,LOW); |
| } | } | ||
| } | } | ||
| </ | </ | ||
| - | ===== Harjutused | + | ===== Exercises |
| - | ==== Harjutus | + | ==== Exercise |
| - | Modifitseerida näiteprogrammi nii, et robot sõidab kaheksa kujulist trajektoori. | + | Modify exampe so that robot drives number eight shape. |
| ==== Harjutus #5.2 ==== | ==== Harjutus #5.2 ==== | ||
| - | Modifitseerida näiteprogrammi nii, et robot teeb iseseisvalt paralleelparkimist ette määratud kohta. | + | Make robot parallel park itself. |