Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:arduino [2015/12/10 12:06]
raivo.sell
en:arduino [2018/12/27 12:53] (current)
Line 12: Line 12:
 */ */
  
-====== Näide 1 Digitaalsed I/O ====== 
  
-===== Näide ​1.1 Nupule vajutades süttib ​LED =====+====== References ====== 
 + 
 +[[http://​itead-europe.com/​pm/​platform/​shield/​1602%20lcd%20shield/​SCH_IM120417018_Arduino1602LCDShield.pdf|LCD Shield datasheet]]\\ 
 +[[http://​www.sharpsma.com/​webfm_send/​1489|sharp 10-80cm analog distance sensor]] 
 + 
 +====== Example 1 Digital I/O ====== 
 + 
 +===== Example ​1.1 Push down button to light up LED =====
  
 <code c> <code c>
-/* + 
-Nimetus: Näide #1.1 Digitaalsed sisend-väljundid +// Constants
-Kirjeldus: Programm demonstreerib nupu ja LED-i kasutamist +
-Autor: Raivo Sell +
-Kuupäev: 15.01.2013 +
-*/ +
-// Konstandid+
 const int nupp = A0; // Viik kuhu on ühendatud nupp const int nupp = A0; // Viik kuhu on ühendatud nupp
 const int LED = 13; // Viik kuhu on ühendatud nupp roheline LED  const int LED = 13; // Viik kuhu on ühendatud nupp roheline LED 
-// Globaalsed muutujad +// Global variables 
-int NupuOlek = 0; // Nupu oleku muutuja+int NupuOlek = 0; // Button state 
  
 void setup() {  void setup() { 
-  pinMode(LED,​ OUTPUT); // algväärtustame ​LED viigu väljundiks ​ +  pinMode(LED,​ OUTPUT); // define ​LED pin as output 
-  pinMode(nupp,​ INPUT); // algväärtustame nupu viigu sisendiks ​ +  pinMode(nupp,​ INPUT); // define button pin as input 
-  digitalWrite(nupp,​ HIGH); // lülitame sisemised pullup takistid sisse+  digitalWrite(nupp,​ HIGH); // turn on internal pull-up resistor on button pin
 } }
  
 void loop(){ void loop(){
-  NupuOlek = digitalRead(nupp);​ // salvestame muutujasse nupu hetke väärtuse +  NupuOlek = digitalRead(nupp);​ // read current button state to variable 
-  if (NupuOlek == HIGH) { // Kui nupu olek on kõrge ​(+5 V)  +  if (NupuOlek == HIGH) { // if button state is high (+5 V)  
-    digitalWrite(LED,​ LOW); // kustutame ​LED-i +    digitalWrite(LED,​ LOW); // turn LED off
   }    } 
-  else { // vastasel juhul (Maa)  +  else { // if button state is not high (GND)  
-    digitalWrite(LED,​ HIGH); // süütame LED-i +    digitalWrite(LED,​ HIGH); // turn led on
   }   }
 } }
 </​code>​ </​code>​
  
-===== Näide ​1.2 Nupule vajutades süttib ​LED 1 sekundiks ​=====+===== Example ​1.2 On button push LED turns of for second ​=====
 <code c> <code c>
-// Algus identne näitega ​#1.1+// First part of code copy from example ​#1.1
 void loop(){ void loop(){
-  if (digitalRead(nupp) == LOW) { // Kui nupu olek on madal  +  if (digitalRead(nupp) == LOW) { // if button state is high (+5V) 
-    digitalWrite(LED,​ HIGH); // süütame ​LED-i  +    digitalWrite(LED,​ HIGH); // turn on LED  
-    delay(1000);​ // ootame ​sekundi ​(1000 millisekundit)+    delay(1000);​ // wait second ​(1000 milliseconds)
   }    } 
-  digitalWrite(LED,​ LOW); // kustutame ​LED-i +  digitalWrite(LED,​ LOW); // turn LED off
 } }
 </​code>​ </​code>​
  
-===== Näide ​1.3 LED süttib nupu vabastamisel ​=====+===== Example ​1.3 LED turns on on button release ​=====
 <code c> <code c>
-// Algus identne näitega ​#1.1+// First part of code copy from example ​#1.1
 void loop(){ void loop(){
-  if (digitalRead(nupp) == LOW) { // Nupule vajutus ​ +  if (digitalRead(nupp) == LOW) { // if button pressed ​ 
-    while (digitalRead(nupp) == LOW){} // Ootame nupu lahtilaskmist +    while (digitalRead(nupp) == LOW){} // wait for button release 
-    digitalWrite(LED,​ HIGH); // süütame ​LED-i +    digitalWrite(LED,​ HIGH); // turn on LED
   }    } 
 } }
 </​code>​ </​code>​
  
-===== Harjutus ​#1.1 =====+===== Task #1.1 =====
  
-Modifitseerida näiteprogrammi nii, et nupule vajutades vilgub LED (LCD laiendusplaadi korral võib kasutada taustavalguse LED-e) kolm korda. +Modify example program so that LED blinks three times. 
-===== Harjutus ​#1.2 =====+/*Modifitseerida näiteprogrammi nii, et nupule vajutades vilgub LED (LCD laiendusplaadi korral võib kasutada taustavalguse LED-e) kolm korda.*/ 
 +===== Task #1.2 =====
  
-Modifitseerida näiteprogrammi nii, et nupule vajutades hakkab LED konstantselt vilkuma 1 sekundilise intervalliga ja teine nupule vajutus katkestab vilkumise. +Modify example program so that on button press LED starts to blink with 1 second intervals. On second button press led stops blinking. 
-0 %).+/*Modifitseerida näiteprogrammi nii, et nupule vajutades hakkab LED konstantselt vilkuma 1 sekundilise intervalliga ja teine nupule vajutus katkestab vilkumise. 
 +0 %).*/
  
-====== ​Näide ​#2 Analoog sisendid ​======+====== ​Example ​#2 Analog inputs ​======
  
-===== Näide ​#2.1 Potentsiomeetri ​ max nivoo ületamisel süttib ​LED =====+===== Example ​#2.1 When exceeding potentiometer threshold value the LED turns on =====
  
  
 <code c> <code c>
-/* 
-Nimetus: Näide #2.1 Analoog sisend ​ 
-Kirjeldus: Programm demonstreerib analoogsisendi kasutamist 
-Autor: Raivo Sell 
-*/ 
  
-// määrame nivoo, millest kõrgemal väärtusel //​süüdatakse ​LED+// Set threshold value at which the LED turns on
 const int nivoo = 512;  const int nivoo = 512; 
  
-int pote_sisend = A1; // määrame potentsiomeetri sisendviigu +int pote_sisend = A0; // set potentiometer input pin 
-int led = A5; // määrame ​LED ühendusviigu +int led = 13; // set LED pin 
-int pote = 0; // muutuja potentsiomeetri väärtuse salvestamiseks+int pote = 0; // integer variable to hold potentiometer value
  
 void setup() { void setup() {
-  pinMode(led,​ OUTPUT); // algväärtustame ​LED viigu väljundiks ​+  pinMode(led,​ OUTPUT); // set LED pin to output
 } }
  
 void loop() { void loop() {
-  pote = analogRead(pote_sisend);​ // loeme analoogsisendi väärtuse +  pote = analogRead(pote_sisend);​ // read Analog input value 
-  // kui väärtus ​on suurem nivoost, süütame ​LED-i +  // if value is greater than threshold then turn on LED
   if (pote>​nivoo) digitalWrite(led,​ HIGH);   if (pote>​nivoo) digitalWrite(led,​ HIGH);
-  else digitalWrite(led,​ LOW); // vastasel korral kustutame ​LED-i+  else digitalWrite(led,​ LOW); // other cases turn LED off
 } }
 </​code>​ </​code>​
  
-===== Näide ​#2.2 LED-i vilkumise sagedus sõltub potentsiomeetri sisendist ​=====+===== Example ​#2.2 LED blinking speed depends on potentiometer value =====
  
  
 <code c> <code c>
-/* 
-Nimetus: Näide #2.2 Analoog sisendi teisendamine ajaks 
-Kirjeldus: Programm demonstreerib analoogsisendi kasutamist 
-Autor: David Cuartielles 
-Täiendused:​ Tom Igoe 
-Kohandused: Raivo Sell 
-OriginaalURL:​ http://​arduino.cc/​en/​Tutorial/​AnalogInput 
-*/ 
  
-int pote_sisend = A1; // määrame potentsiomeetri sisendviigu +int pote_sisend = A0; // set potentiometer pin 
-int led = A5; // määrame ​LED ühendusviigu ​ +int led = 13; // set LED pin 
-int pote = 0; // muutuja potentsiomeetri väärtuse salvestamiseks+int pote = 0; // integer variable to hold potentiometer value
  
 void setup() { void setup() {
-  pinMode(led,​ OUTPUT); // algväärtustame ​LED viigu väljundiks+  pinMode(led,​ OUTPUT); // define ​LED pin as output
 } }
 void loop() { void loop() {
-  pote = analogRead(pote_sisend);​ // loeme anduri väärtuse ​ +  pote = analogRead(pote_sisend);​ // read potentiometer value and write into variable 
-  digitalWrite(led,​ HIGH); // kustutame ​LED-i  +  digitalWrite(led,​ HIGH); // turn off LED 
-  delay(pote);​ // tekitame viite <​sensorValue> ​millisekundit ​ +  delay(pote);​ // generate delay <​sensorValue> ​milliseconds ​ 
-  digitalWrite(led,​ LOW); // süütame ​LED-i  +  digitalWrite(led,​ LOW); // turn on LED 
-  delay(pote);​ // tekitame viite <​sensorValue> ​millisekundit+  delay(pote);​ // generate delay <​sensorValue> ​milliseconds
 } }
 </​code>​ </​code>​
  
-===== Harjutus ​#2 =====+===== Task #2 =====
  
-Modifitseerida näiteprogrammi nii, et potentsiomeetriga määratakse LED-i heledus, kasutades selleks delay funktsioone.+Modify example program so that its possible to change LED brifgtness with potentiometer. Use delay functions. 
 +/*Modifitseerida näiteprogrammi nii, et potentsiomeetriga määratakse LED-i heledus, kasutades selleks delay funktsioone.*/
  
-====== ​Näide ​#3 LCD ======+====== ​Example ​#3 LCD ======
  
-===== Näide ​#3.1 LCD kasutamine ​=====+Connect LCD shield to Arduino board. Before attaching remove all connections from the board. 
 + 
 +===== Example ​#3.1 LCD using =====
  
  
 <code c> <code c>
-/* 
-Nimetus: Näide #3.1 LCD kasutamine 
-Kirjeldus:​Kasutab LiquidCrystal.h teeki ja ITEAD Studio 2x16 teksti laiendusplaati 
-Autor: Tom Igoe  
-Modifikatsioon:​ Raivo Sell 
-Kuupäev: 4.06.2014 
-Versioon: 1.0 
-*/ 
  
-#include <​LiquidCrystal.h>​ // Kaasame vajaliku teegi+#include <​LiquidCrystal.h>​ // include needed libraries
  
-// Initsialiseerime ​LCD koos vastavate viikude ühendamisega+// Initialize ​LCD
 LiquidCrystal lcd(8, 9, 4, 5, 6, 7); LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  
 void setup() { void setup() {
-  lcd.begin(16,​ 2); //Määrame ​LCD read ja veerud +  lcd.begin(16,​ 2); // set LCD cursor column and row 
-  lcd.print("​Tere Tallinn!"​);​ // Trükime tervitusteksti+  lcd.print("​Tere Tallinn!"​);​ // Print text on LCD
 } }
  
 void loop() { void loop() {
   ​   ​
-  lcd.setCursor(0,​ 1); //Viime kursori esimesele reale esimesse positsiooni ​(1. rida on indeksiga 0)+  lcd.setCursor(0,​ 1); //set cursor position to first row and column 0 (1. rida on indeksiga 0)
   ​   ​
-  lcd.print(millis()/​1000);​ //Trükime loenduri väärtuse+  lcd.print(millis()/​1000);​ // Print sensor value to LCD
   ​   ​
 } }
 </​code>​ </​code>​
  
-===== Näide ​#3.2 LCD kasutamine analoogsisendiga ​=====+===== Example ​#3.2 LCD and analog inputs ​=====
  
 <code c> <code c>
-/* 
-Nimetus: Näide #3.2 LCD kasutamine analoogsisendiga 
-Kirjeldus: ​ 
-          Kasutab LiquidCrystal.h teeki ja ITEAD Studio 2x16 teksti laiendusplaati 
-Autor: Tom Igoe  
-Modifikatsioon:​ Raivo Sell 
-Kuupäev: 4.06.2014 
-Versioon: 1.0 
-*/ 
  
-#include <​LiquidCrystal.h>​ // Kaasame vajaliku teegi+#include <​LiquidCrystal.h>​ // include needed library
  
-// Initsialiseerime ​LCD koos vastavate viikude ühendamisega+// Initialize ​LCD
 LiquidCrystal lcd(8, 9, 4, 5, 6, 7); LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
-int pote_sisend = A1; // määrame potentsiomeetri sisendviigu+int pote_sisend = A1; // set potentiometer pin
  
 void setup() { void setup() {
-  lcd.begin(16,​ 2); //Määrame ​LCD read ja veerud +  lcd.begin(16,​ 2); // set LCD column and row 
-  lcd.print("​Potentsiomeeter"​);​ // Trükime tervitusteksti+  lcd.print("​Potentsiomeeter"​);​ // Print out sensor name on LCD
 } }
  
 void loop() { void loop() {
   ​   ​
-  lcd.setCursor(0,​ 1); //Viime kursori esimesele reale esimesse positsiooni ​(1. rida on indeksiga 0) +  lcd.setCursor(0,​ 1); //set cursor position first row and column 0 (1. rida on indeksiga 0) 
-  lcd.print(analogRead(pote_sisend));​ //Trükime analoogsisendi väärtuse +  lcd.print(analogRead(pote_sisend));​ //Print out potentiometer value to LCD 
-  lcd.print(" ​   "); //Trükime tühikud, et vana väärtus ei jääks segama+  lcd.print(" ​   "); //Print out empty spaces ​
   delay (100);  ​   delay (100);  ​
 } }
Line 210: Line 186:
 </​code>​ </​code>​
  
 +===== Task #3.1 =====
  
-====== Näide 4 Andurid ja LCD ======+Make a program that on button press changes ​LCD row. Potentiometer value has to be printed only on the new row.  
 +/*Koostada programm, mis võimaldab nupuvajutusega vahetada LCD rida, kuhu trükitakse potentsiomeetri väärtus.*/​
  
-===== Näide ​#4.1 Temperatuuri andur koos matemaatika teegiga ​=====+ 
 + 
 +====== Example 4 Sensors and LCD ====== 
 + 
 +===== Example ​#4.1 Temperature sensor with math library ​=====
  
  
Line 238: Line 220:
 // Initsialiseerime LCD koos vastavate viikude ühendamisega // Initsialiseerime LCD koos vastavate viikude ühendamisega
 LiquidCrystal lcd(8, 9, 4, 5, 6, 7); LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
-int andur = A4; // määrame potentsiomeetri sisendviigu+int andur = A1; // set thermistor input pin
  
 void setup() { void setup() {
Line 297: Line 279:
 void loop() ​ void loop() ​
  
-  // Read the input on analog pin and digital pin 10: +  // Read the input on analog pin and 3 
-  int AnalogSensorValue = analogRead(A0); +  int AnalogSensorValue = analogRead(A2); 
-  int DigitalSensorValue = digitalRead(10);+  int DigitalSensorValue = digitalRead(A3);
   ​   ​
   Serial.println(AnalogSensorValue);​ // Print out the analog value   Serial.println(AnalogSensorValue);​ // Print out the analog value
Line 311: Line 293:
 ===== Harjutus #4.1 ===== ===== Harjutus #4.1 =====
 Modifitseerida programmi nii, et potentsiomeetriga määratakse temperatuuri nivoo, mis salvestatakse nupuga programmi mällu ja selle nivoo hilisemal ületamisel käivitatakse täiturmehhanism (milleks on LED). Modifitseerida programmi nii, et potentsiomeetriga määratakse temperatuuri nivoo, mis salvestatakse nupuga programmi mällu ja selle nivoo hilisemal ületamisel käivitatakse täiturmehhanism (milleks on LED).
 +**Extra:**
 +Kombineerida LED-i heleduse programm ja eelnev temperatuuri juhtimise programm, kus LED-i heledus sõltub sellest, kui palju nivootemperatuuri ületati (1 kraad: heledus 25 %, 2 kraadi: heledus 50 %, 3 kraadi: heledus 75 % ja 5 kraadi: heledus 10
  
 ===== Harjutus #4.2 ===== ===== Harjutus #4.2 =====
-Kombineerida LED-i heleduse programm ja eelnev temperatuuri juhtimise programm, kus LED-i heledus sõltub sellest, kui palju nivootemperatuuri ületati (1 kraad: heledus 25 %, 2 kraadi: heledus 50 %, 3 kraadi: heledus 75 % ja 5 kraadi: heledus 10+Modify distance sensor example so that it would print values on the LCD in centimeters (+-5cm accuracy). If no measureing tool is available then use the sensor datasheet graph.
  
 ====== Näide #5 Mootor ====== ====== Näide #5 Mootor ======
 +
 +Disconnect the LCD shield before using motors. Before disconnecting remove all connections from shield and Arduino board. ​
  
 ===== Näide #5.1 Servomootor ===== ===== Näide #5.1 Servomootor =====
Line 368: Line 354:
  
 ===== Harjutus #5.1 ===== ===== Harjutus #5.1 =====
-Luua programm, mis võimaldab servomootori positsiooni muuta vastavalt ​nuppudega seadistatud suurusele.+Luua programm, mis võimaldab servomootori positsiooni muuta vastavalt ​analoog kaugusanduri väärtusele (kasutada map funktsiooni).
  
 ===== Harjutus #5.2 ===== ===== Harjutus #5.2 =====
-Luua programm, mis servomootori baasil ehitatud radariga ja fotoanduriga ​leiaks ruumist ​kõige eredama ​punkti. +Luua programm, mis servomootori baasil ehitatud radariga ja analoog kaugusanduriga ​leiaks ruumist ​lähima ​punkti ​(objekti otsimine tühjast ruumist).
  
 ====== Näide 6 Kommunikatsioon ====== ====== Näide 6 Kommunikatsioon ======
en/arduino.1449741994.txt.gz · Last modified: 2015/12/10 12:06 by raivo.sell
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