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 09:17] – 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 ========= | ========= TTU Summer School programming ========= | ||
| - | [[https:// | ||
| ====== Project 1 Controlling LED with button | ====== Project 1 Controlling LED with button | ||
| Line 16: | Line 15: | ||
| */ | */ | ||
| - | /* 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 | ||
| { | { | ||
| Line 52: | Line 51: | ||
| </ | </ | ||
| - | ===== Näide | + | ===== Example |
| <code c> | <code c> | ||
| Line 59: | Line 58: | ||
| */ | */ | ||
| - | // 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> | ||
| Line 94: | Line 93: | ||
| */ | */ | ||
| - | // 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 133: | Line 131: | ||
| Modify example so that on button press LED starts to blink with constant interval. Second press ends the blinking. | Modify example so that on button press LED starts to blink with constant interval. Second press ends the blinking. | ||
| - | ~~PB~~ | + | |
| ====== Project 2 Controlling LED with potentiometer | ====== Project 2 Controlling LED with potentiometer | ||
| Line 145: | Line 144: | ||
| */ | */ | ||
| - | // 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 187: | Line 185: | ||
| */ | */ | ||
| - | // 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 200: | 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); |
| } | } | ||
| </ | </ | ||
| Line 223: | Line 221: | ||
| Example #2.3 | Example #2.3 | ||
| */ | */ | ||
| - | // 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 236: | 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); |
| } | } | ||
| </ | </ | ||
| Line 270: | Line 267: | ||
| Example #3.1 | Example #3.1 | ||
| */ | */ | ||
| - | // 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 297: | Line 293: | ||
| - | ===== Example #3.2 Custom characters | + | ===== Example #3.2 Custom characters on LCD ===== |
| <code c> | <code c> | ||
| Line 303: | Line 299: | ||
| Example #3.2 | Example #3.2 | ||
| */ | */ | ||
| - | // 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 327: | 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 */ | + | |
| } | } | ||
| </ | </ | ||
| Line 348: | Line 340: | ||
| <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 |
| } | } | ||
| } | } | ||
| - | // Funktsioon võtab analoogsisendi väärtuse ja võrdleb olemasolevate väärtustega. | + | // Function read analog input value and compares it with values of button states |
| // 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 |
| - | | + | // |
| + | | ||
| } | } | ||
| </ | </ | ||
| Line 425: | Line 417: | ||
| Make a small animation with custom characters. | Make a small animation with custom characters. | ||
| Custom character code generator [[https:// | Custom character code generator [[https:// | ||
| + | |||
| Line 439: | Line 432: | ||
| */ | */ | ||
| - | // 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 519: | Line 506: | ||
| Example #5.1 | Example #5.1 | ||
| */ | */ | ||
| - | // 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 541: | 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); |
| } | } | ||
| } | } | ||
| Line 593: | Line 579: | ||
| Example #5.2 | Example #5.2 | ||
| */ | */ | ||
| - | // 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); |
| } | } | ||
| } | } | ||
| Line 671: | Line 656: | ||
| ==== Harjutus #5.2 ==== | ==== Harjutus #5.2 ==== | ||
| Make robot parallel park itself. | Make robot parallel park itself. | ||
| - | |||
| - | |||
| - | ====== Project 6 Servo motor combine with distance sensors | ||
| - | |||
| - | {{: | ||
| - | |||
| - | ===== Example #6.1 Servo motor and PWM ===== | ||
| - | Theory: [[https:// | ||
| - | |||
| - | <code c> | ||
| - | |||
| - | /* | ||
| - | Example #6.1 | ||
| - | */ | ||
| - | |||
| - | // Vajalike teekide kaasamine | ||
| - | #include < | ||
| - | |||
| - | // Servo objekti tekitamine nimega mootor | ||
| - | Servo mootor; | ||
| - | |||
| - | // Seadmete ühendusviikude määramine | ||
| - | const int pote = A1; | ||
| - | const int servo = 3; | ||
| - | |||
| - | void setup() | ||
| - | { | ||
| - | // Servo objekti sidumine kindla Arduino viiguga | ||
| - | mootor.attach(servo); | ||
| - | } | ||
| - | |||
| - | void loop() | ||
| - | { | ||
| - | /* Muutuja tekitamine ja map funktsiooni kasutamine, | ||
| - | et väärtused sobivasse vahemikku teisendada */ | ||
| - | int servoAsend = map(analogRead(pote), | ||
| - | | ||
| - | /* Servomootorile positsiooni andmine vahemikus 0-180 | ||
| - | (üldiselt vastab väärtus mootori pöördenurga kraadidele) */ | ||
| - | mootor.write(servoAsend); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Example #6.2 Servo motor and distance sensor ===== | ||
| - | |||
| - | <code c> | ||
| - | /* | ||
| - | Example #6.2 | ||
| - | */ | ||
| - | |||
| - | // Kõikide vajalike teekide lisamine | ||
| - | #include < | ||
| - | #include < | ||
| - | |||
| - | // Servo ja ultrahelianduri ühendusviikude määramine | ||
| - | #define MOOTOR 3 | ||
| - | #define TRIG A3 | ||
| - | #define ECHO A4 | ||
| - | |||
| - | // Servo objekti tekitamine nimega sensM | ||
| - | Servo sensM; | ||
| - | |||
| - | // Anduri objekti tekitamine nimega sonar | ||
| - | NewPing sonar(TRIG, ECHO, 200); | ||
| - | |||
| - | void setup() | ||
| - | { | ||
| - | // Servo objekti ja ühendusviigu sidumine | ||
| - | sensM.attach(MOOTOR); | ||
| - | | ||
| - | // Jadaliidese tavakiirusel käivitamine (9600 baudi) | ||
| - | Serial.begin(9600); | ||
| - | } | ||
| - | |||
| - | void loop() | ||
| - | { | ||
| - | |||
| - | // Jadaliidesesse selgitava teksti saatmine | ||
| - | Serial.print(" | ||
| - | | ||
| - | // Tsükkel, mis iga 10 kraadise servo liikumise järel teostab kauguse mõõtmise | ||
| - | for (int i = 0; i <= 180; i += 10) | ||
| - | { | ||
| - | // Servo hoova liigutamine positsiooni i | ||
| - | sensM.write(i); | ||
| - | | ||
| - | // Viide, et servo jõuaks saavutada ette antud positsiooni enne uut mõõtmist | ||
| - | delay(250); | ||
| - | | ||
| - | // Uus kaugus mõõtmine ja tulemuse jadapordi kirjutamine | ||
| - | Serial.print(sonar.ping_cm()); | ||
| - | Serial.print(", | ||
| - | } | ||
| - | |||
| - | // Servo algpositsiooni liigutamine | ||
| - | sensM.write(0); | ||
| - | | ||
| - | // Viide, et servo jõuaks tagasi algpositsiooni | ||
| - | delay(1000); | ||
| - | | ||
| - | // Reavahetuse tekitamine jadapordis | ||
| - | Serial.println("" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Exercises ===== | ||
| - | ==== Exercise 6.1 ==== | ||
| - | Modify the example so that servo motor tries to be towards a close by object. | ||
| - | |||
| - | ==== Exercise 6.2 ==== | ||
| - | Modify the example so that it returns the minimum and maximum distances and at what angles they were taken. Write data to serial port. | ||
| - | |||