Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:arduino:examples [2017/07/25 10:22] kaupo.raiden:arduino:examples [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 15: Line 15:
 */ */
  
-/* Konstandid */ +/* Constants */ 
-// Viik kuhu on ühendatud nupp +// Set button pin 
-const int nupp = A0; +const int button = A0; 
  
-// Viik kuhu on ühendatud LED+// 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 = 0; +int buttonState = 0; 
  
 void setup()  void setup() 
  
-  // LED viigu väljundi seadistamine +  // Set LED pin to output
   pinMode(led, OUTPUT);    pinMode(led, OUTPUT); 
-  // Nupu viigu sisendi seadistamine ja sisemise "pull-up" takisti aktiveermine +  // Set button pin to input with internal pull-up activated 
-  pinMode(nupp, INPUT_PULLUP); +  pinMode(button, INPUT_PULLUP); 
 } }
  
 void loop() void loop()
 { {
-  // Nupu muutuja hetkeväärtuse salvestamine +  // Get the curren state of button pin 
-  nupuOlek = digitalRead(nupp);  +  buttonState = digitalRead(button);  
-  // Kui nupp on alla vajutatud, siis seadistame LED viigu kõrgeks ehk LED süttib +  // If button is pressed then turn on LED 
-  if (nupuOlek == LOW) +  if (buttonState == LOW) 
   {    { 
     digitalWrite(led, HIGH);     digitalWrite(led, HIGH);
   }    } 
-  // Muul juhul seadistame LED viigu madalaks ehk LED ei põle+  // All other cases turn LED off
   else    else 
   {    { 
Line 51: Line 51:
 </code> </code>
  
-===== Näide #1.2 Short push on the button makes LED light up for 1 second =====+===== Example #1.2 Short push on the button makes LED light up for 1 second =====
  
 <code c> <code c>
Line 58: Line 58:
 */ */
  
-// Algus identne näitega #1.1 (kommenteeritud koodi vaata sealt) +// Setup is same with example #1.1 
-const int nupp = A0; +const int button = A0; 
 const int led = 13;  const int led = 13; 
  
-int nupuOlek = 0; +int buttonState = 0; 
  
 void setup()  void setup() 
  
   pinMode(led, OUTPUT);    pinMode(led, OUTPUT); 
-  pinMode(nupp, INPUT_PULLUP); +  pinMode(button, INPUT_PULLUP); 
 } }
  
 void loop() void loop()
 { {
-  // Nupu muutuja hetkeväärtuse salvestamine +  //  Get the curren state of button pin 
-  nupuOlek = digitalRead(nupp); +  buttonState = digitalRead(button); 
      
-  /* 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 second 
-     programm seisab sekund ja pärast seda seatakse viik tagasi madalaks */ +  if (buttonState == LOW) 
-  if (nupuOlek == LOW) +
   {    { 
     digitalWrite(led, HIGH);     digitalWrite(led, HIGH);
     delay(1000); // 1000 millisekundit ehk 1 sekund     delay(1000); // 1000 millisekundit ehk 1 sekund
-  } +  } 
 +  // Turn LED off
   digitalWrite(led, LOW);   digitalWrite(led, LOW);
 } }
 </code> </code>
  
-===== Näide #1.3 Nupule vajutades muudab LED oma olekut =====+===== Example #1.3 Short push on the button changes LED state =====
  
 <code c> <code c>
Line 93: Line 93:
 */ */
  
-// Algus identne näitega #1.1 (kommenteeritud koodi vaata sealt) +// Setup is same with example #1.1 
-const int nupp = A0; +const int button = A0; 
 const int led = 13;  const int led = 13; 
  
-int nupuOlek = 0; +int buttonState = 0; 
  
 void setup()  void setup() 
  
   pinMode(led, OUTPUT);    pinMode(led, OUTPUT); 
-  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) 
     {     {
-   // Lüliti kontaktide värelemise (debounce) efekti mõju vähendamiseks väike viide+   // Debounce effect eliminator delay
     delay(50);      delay(50); 
-    while (digitalRead(nupp) == LOW) +    while (digitalRead(button) == LOW) 
-     //Tsükkel hoiab programmi kinni kuni nupu viigu olek muutub kõrgeks+     
      }      }
-    /* LED viigu olek inverteeritakse ehk seatakse + // Invert LED current state
-       vastupidiseks kasutades hetkeväärtust */+
     digitalWrite(led, !digitalRead(led));      digitalWrite(led, !digitalRead(led)); 
          
-   // Lüliti kontaktide värelemise (debounce) efekti mõju vähendamiseks väike viide+   // Debounce effect eliminator delay
     delay(50);      delay(50); 
     }     }
Line 132: 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 144: Line 144:
 */ */
  
-// Viik kuhu on ühendatud potentsiomeeter +// Set potentiometer pin 
-const int pote = A1; +const int pot = A1; 
  
-// Viik kuhu on ühendatud LED+// 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 = 0; +int potState = 0; 
    
 void setup() void setup()
 { {
-  /* Mikrokontrolleri viigud on tavaolekus sisendid ja seega ei pea +  // Set LED pin to output 
-  potentsiomeetri sisendit eraldi seadistama *+  pinMode(led, OUTPUT);
-  pinMode(led, OUTPUT); // Seadistame LED viigu väljundiks+
 } }
  
 void loop()  void loop() 
 { {
-  // Viigu muutuja hetkeväärtuse salvestamine +  // Get digital value of potentiometer 
-  poteOlek = digitalRead(pote); +  potState = digitalRead(pot);
      
-  // Kui sisendviik on kõrge, siis seame LED viigu kõrgeks +  // When potentiometer digital value is logical "true" then turn on LED 
-  if(poteOlek > 0)+  if(potState > 0)
   {   {
     digitalWrite(led, HIGH);     digitalWrite(led, HIGH);
   }   }
-  // Muul juhul seame led viigu madalaks+  // All other cases set LED off
   else   else
   {   {
Line 186: Line 185:
 */ */
  
-// Algus identne näitega #2.1 (kommenteeritud koodi vaata sealt) +// Setup is same with example #2.1 
-const int pote = A1; +const int pot = A1; 
 const int led = 13;  const int led = 13; 
  
-int poteOlek = 0; +int potState = 0; 
    
 void setup() void setup()
Line 199: Line 198:
 void loop()  void loop() 
 { {
-  // Potentsiomeetri muutuja hetkeväärtuse salvestamine  +  // Get analog value of potentiometer 
-  poteOlek = analogRead(pote); +  potState = analogRead(pot); 
      
-  // LED viigu oleku kõrgeks seadmine+  // Turn LED on
   digitalWrite(led, HIGH);    digitalWrite(led, HIGH); 
      
-  // 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, LOW);    digitalWrite(led, LOW); 
      
-  // 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); 
 } }
 </code> </code>
Line 222: Line 221:
 Example #2.3 Example #2.3
 */ */
-// Algus identne näitega #2.1 (kommenteeritud koodi vaata sealt)+// Setup is same with example #2.1
  
-const int pote = A1; +const int pot = A1; 
 const int led = 13;  const int led = 13; 
-int poteOlek = 0; +int potState = 0; 
    
 void setup() void setup()
Line 235: Line 234:
 void loop()  void loop() 
 { {
-  // Potentsiomeetri muutuja hetkeväärtuse salvestamine +  // Get analog value of potentiometer 
-  poteOlek = analogRead(pote); +  potState = analogRead(pot); 
      
-/* Kui potentsiomeetri väärtus on suurem kui 0, siis seame LED viigu kõrgeks, +  // When potentiometer value is greater than then set LED on halt program for short period 
-   seejärel programm ootab potentsiomeetri väärtusega võrdse arvu mikrosekundeid */ +  if (potState > 0) 
-  if (poteOlek > 0) +
   {   {
     digitalWrite(led, HIGH);     digitalWrite(led, HIGH);
-    delayMicroseconds(poteOlek); +    delayMicroseconds(potState); 
   }   }
      
-  // Seame LED viigu madalasse olekusse+  // Turn LED off
   digitalWrite(led, LOW);    digitalWrite(led, LOW); 
      
-  // Programm ootab ülejäänud arvu mikrosekundeid perioodist  +  // Halt program for short period 
-  delayMicroseconds(1023 - poteOlek); +  delayMicroseconds(1023 - potState); 
 } }
 </code> </code>
Line 269: Line 267:
 Example #3.1 Example #3.1
 */ */
-// Vajaliku teegi kaasamine+// Include LCD library
 #include <LiquidCrystal.h>  #include <LiquidCrystal.h> 
  
-// LCD objekti tekitamine ja ühendusviikude määramine.  +// Create LCD object and set hardware connection pins
-// 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 size
   lcd.begin(16, 2);    lcd.begin(16, 2); 
      
-  // Ekraani tervitusteksti kuvamine +  // Print out welcome message 
-  lcd.print("Tere Tallinn!"); +  lcd.print("Hello World!"); 
 } }
  
 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, 1);    lcd.setCursor(0, 1); 
      
-  // Ekraani loenduri väärtuse kuvamine+  // Print out program working time in seconds
   lcd.print(millis()/1000);    lcd.print(millis()/1000); 
 } }
Line 296: Line 293:
  
  
-===== Example #3.2 Custom characters writing on LCD =====+===== Example #3.2 Custom characters on LCD =====
  
 <code c> <code c>
Line 302: Line 299:
 Example #3.2 Example #3.2
 */ */
-// Vajaliku teegi kaasamine+
 #include <LiquidCrystal.h> #include <LiquidCrystal.h>
-  +
-// 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+  // Array to generate new character
-   "0b" numbrite ees ütleb kompilaatorile, et tegemist on kahendsüsteemis arvuga. +  // "0b" in front of the number tells the compiler that it's a binary number
-   Kahendsüsteemi arvude kasutamisel tekib parem arusaam +
-   kuvatavate pikslite asukohtadest. */+
 byte customChar[8] =  byte customChar[8] = 
 { {
Line 326: Line 320:
 void setup() void setup()
 { {
-  // Tekitab uue erikujulise tähemärgi draiveri mällu kohale 0+  // Load new character to LCD memory position "0"
   lcd.createChar(0, customChar);    lcd.createChar(0, customChar); 
      
-  // LCD ridade ja veergude määramine vastavalt riistvarale+  // Define LCD size
   lcd.begin(16, 2);    lcd.begin(16, 2); 
    
-  //  Draiveri mälus kohal 0 oleva erikujulise tähemärgi kuvamine ekraanile +  // 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 */+
 } }
 </code> </code>
Line 347: Line 340:
 <code c> <code c>
 /* /*
-Nimetus: Näide #3.3 +Nimetus: Example #3.3 
-Kirjeldus: LCD laiendusplaadi nuppude lugemine+Kirjeldus: Reading LCD shield buttons
 */ */
-// Vajaliku teegi kaasamine+
 #include <LiquidCrystal.h> #include <LiquidCrystal.h>
  
-// 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 = 0; +const int RIGHT = 0; 
-const int nuppUP    = 1; +const int UP    = 1; 
-const int nuppDOWN  = 2; +const int DOWN  = 2; 
-const int nuppLEFT  = 3; +const int LEFT  = 3; 
-const int nuppSELECT = 4; +const int SELECT = 4; 
-const int nuppNONE  = 5;+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 size
   lcd.begin(16, 2);    lcd.begin(16, 2); 
      
-  // Ekraani info kuvamine+  // Print explaining text
   lcd.print("ADC: ");   lcd.print("ADC: ");
      
-  // 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 *+  pressedButton checkButtons(); 
-  vajutatudNupp kontrolliNuppe(); +
      
-  // Kontrollib kas mõni nupp on alla vajutatud  +  // Check if there is a pressed button 
-  if(vajutatudNupp nuppNONE)+  if(pressedButton NONE)
   {   {
-    lcd.clear(); // Puhastab ekraani ja liigutab kursori tagasi algasendisse+    lcd.clear(); // Clear LCD
          
-    lcd.print("ADC: "); // Teksti kuvamine ekraanil+    lcd.print("ADC: "); // Print out explaining text
          
-    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()
 { {
- // Salvestab muutujasse analoogväärtuse viigult A0 + // Get analog input value 
- nupuSisend = analogRead(A0); + buttonValue = analogRead(A0); 
- if (nupuSisend < 50)   return nuppRIGHT+  
- if (nupuSisend < 195)  return nuppUP+ if (buttonValue < 50)   return RIGHT
- if (nupuSisend < 380)  return nuppDOWN+ if (buttonValue < 195)  return UP
- if (nupuSisend < 555)  return nuppLEFT+ if (buttonValue < 380)  return DOWN
- if (nupuSisend < 790)  return nuppSELECT+ if (buttonValue < 555)  return LEFT
- // Kui ühtegi nuppu pole vajutatud, siis tagastatakse "nuppNONE" + if (buttonValue < 790)  return SELECT
- return nuppNONE;+ // If no button state matches then return NONE 
 + return NONE;
 } }
 </code> </code>
Line 424: Line 417:
 Make a small animation with custom characters. Make a small animation with custom characters.
 Custom character code generator [[https://omerk.github.io/lcdchargen/|]] Custom character code generator [[https://omerk.github.io/lcdchargen/|]]
 +
  
  
Line 438: Line 432:
 */ */
    
-// Vajalike teekide kaasamine +// Include libraries
-// LCD ekraani funktsioone sisaldav teek+
 #include <LiquidCrystal.h>  #include <LiquidCrystal.h> 
-// Ultrahelianduri funktsioone sisaldav teek 
 #include <NewPing.h>  #include <NewPing.h> 
    
-// Andurite ühendusviikude määramine +// Set pins for sensors 
-const int ultraheliKaugusandur_TRIGGER = A2; +const int US_TRIGGER = A2; 
-const int ultraheliKaugusandur_ECHO = A3; +const int US_ECHO = A3; 
-const int infrapunaLahedusandur = A4;+const int IR = A4;
    
-/* Globaalsed muutujad ja konstandid */ +/* Global variables and constants */ 
-const int ultraheliKaugusandur_maksimumKaugus = 200; +const int maxDistance = 200; 
-int ultraheliKaugusinfrapunaNaebObjekti+int distanceproximity
-  + 
-// LCD objekti tekitamine ja ühendusviikude määramine+// Create LCD object and define connection pins
 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_TRIGGERultraheliKaugusandur_ECHO, +NewPing sonar(US_TRIGGERUS_ECHO,maxDistance);
-ultraheliKaugusandur_maksimumKaugus);+
    
 void setup()  void setup() 
 { {
-  // LCD ridade ja veergude määramine vastavalt riistvarale+  //Define LCD size
   lcd.begin(16, 2);    lcd.begin(16, 2); 
    
-  // Selgitavate tekstide kuvamine ekraanil +  // Print out explaining text 
-  lcd.print("Kaugus:");+  lcd.print("Dist:");
   lcd.setCursor(0, 1);   lcd.setCursor(0, 1);
-  lcd.print("Naeb:");+  lcd.print("Object:");
 } }
 void loop()  void loop() 
 { {
-  // Ultrahelianduriga kaguse mõõtmine sentimeetrites ja muutujasse salvestamine +  // Get distance in centimeters 
-  ultraheliKaugus = sonar.ping_cm();+  distance = sonar.ping_cm();
    
-  // Lähedusanduri väärtuse lugemine ja muutujasse salvestamine +  // Get proximity of object 
-  infrapunaNaebObjekti = digitalRead(infrapunaLahedusandur); +  proximity = digitalRead(IR); 
    
-  // Kursori esimesele reale ja tähemärgile 9 nihutamine+  // Set cursor to first line 10th character
   lcd.setCursor(9, 0);   lcd.setCursor(9, 0);
    
-  // Ekraani kaugusanduri mõõdetud kauguse kuvamine +  // EPrint out distance 
-  lcd.print(ultraheliKaugus); +  lcd.print(distance); 
    
-  /* Trükime üle järgnevad kolm tähemärki tühikutega, +// 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, 1);    lcd.setCursor(9, 1); 
    
-  // Kui infrapunalähedusanduri väljund on kõrgesiis kirjuta ekraanile "ei+  // when infrared sensor does not see anything print out "no"otherwise print out "yes". 
-  if(infrapunaNaebObjekti == 1) lcd.print("ei "); +  if(proximity == 1) lcd.print("no ");  
 +  else lcd.print("yes"); 
    
-  // Kui infrapunalähedusanduri väljund on madal, siis kirjuta ekraanile "jah" +  // Halt program to get stable view of LCD 
-  else lcd.print("jah");  +
-  +
-  // Väike viide, et tekst ekraanil oleks loetavam+
   delay(500);    delay(500); 
 } }
Line 518: 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 = 10; // driver pin A-1A 
-const int vasak_A = 10; // juhtmooduli viik A-1A +const int left_B = 12; // driver pin A-1B 
-const int vasak_B = 12; // juhtmooduli viik A-1B +const int right_A = 11; // driver pin B-1A 
-const int parem_A = 11; // juhtmooduli viik B-1A +const int right_B = 13; // driver pin B-2A
-const int parem_B = 13; // juhtmooduli viik B-2A+
    
 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);
  
-  mootorid(0,0); // Mootori algne peatamine +  motors(0,0); // stop motors 
-  delay(2000); // Viide, et robot laua pealt kohe plehku ei paneks+  delay(2000); // halt program for safety purposes 2 seconds
 } }
  
Line 540: Line 527:
 { {
      
-  mootorid(1,1); // Robot sõidab otse +  motors(1,1); // robot goes forward 
-  delay(2000); // Viide - robot säilitab viite pikkuse liikumise+  delay(2000); // halt program for 2 seconds
      
-  mootorid(-1,1); // Robot keerab vasakule +  motors(-1,1); // robot turns left 
-  delay(500);  // Viide - robot säilitab viite pikkuse liikumise+  delay(500);  // halt program for 500 milliseconds
 } }
  
-// 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 592: 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 = 10; // driver pin A-1A 
-const int vasak_A = 10; // juhtmooduli viik A-1A +const int left_B = 12; // driver pin A-1B 
-const int vasak_B = 12; // juhtmooduli viik A-1B +const int right_A = 11; // driver pin B-1A 
-const int parem_A = 11; // juhtmooduli viik B-1A +const int right_B = 13; // driver pin B-2B
-const int parem_B = 13; // juhtmooduli viik B-2B+
    
 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);
  
-  mootorid(0,0); // Mootori algne peatamine +  motors(0,0); // Stop motors 
-  delay(2000); // Viide, et robot laua pealt kohe plehku ei paneks+  delay(2000); // Delay for safety purposes
 } }
 void loop() void loop()
  {  {
-  mootorid(100,100); // Robot sõidab otse aeglaselt +  motors(100,100); // go fwd 
-  delay(2000); // Viide - robot säilitab viite pikkuse liikumise +  delay(2000); 
-  mootorid(100,255); // Robot keerab sujuvalt vasakule +  motors(100,255); // turn left 
-  delay(2000); // Viide - robot säilitab viite pikkuse liikumise +  delay(2000);  
-  mootorid(-255,-255); // Robot tagurdab kiiresti +  motors(-255,-255); // go back 
-  delay(2000); // Viide - robot säilitab viite pikkuse liikumise +  delay(2000); 
-  mootorid(-255,-100); // Robot tagurdab sujuvalt paremale +  motors(-255,-100); // go backward while turning right 
-  delay(2000); // Viide - robot säilitab viite pikkuse liikumise +  delay(2000);  
-  mootorid(150,-150); // Robot keerab kohapeal paremale +  motors(150,-150); // turn on spot 
-  delay(2000); // Viide - robot säilitab viite pikkuse liikumise+  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 && vasak <= 255) +  if(left > 0 && left <= 255) 
-  { // 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 && vasak >= -255) +  else if(left < 0 && left >= -255) 
-  { // 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 && parem <= 255) +  if(right > 0 && right <= 255) 
-  { // 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 && parem >= -255) +  else if(right < 0 && right >= -255) 
-  { // 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 670: 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  ====== 
- 
-{{:et:arduino:motors:projekt6.jpg?600|}} 
- 
-===== Example #6.1 Servo motor and PWM ===== 
-Theory: [[https://www.arduino.cc/en/Reference/Map|]] 
- 
-<code c> 
- 
-/* 
-Example #6.1 
-*/ 
- 
-// Vajalike teekide kaasamine 
-#include <Servo.h>  
-  
-// 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),0,1023,0,180); 
-   
- /* Servomootorile positsiooni andmine vahemikus 0-180 
-    (üldiselt vastab väärtus mootori pöördenurga kraadidele) */ 
-  mootor.write(servoAsend); 
-} 
-</code> 
- 
-===== Example #6.2 Servo motor and distance sensor ===== 
- 
-<code c> 
-/* 
-Example #6.2 
-*/ 
- 
-// Kõikide vajalike teekide lisamine 
-#include <Servo.h> 
-#include <NewPing.h> 
- 
-// 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("Kaugus: "); 
-   
-  // 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("");  
-} 
-</code> 
- 
-===== 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. 
- 
  
en/arduino/examples.1500978122.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0