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 [2015/12/10 10:00] raivo.sellen:arduino [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 12: Line 12:
 */ */
  
-====== Näide 1 Digitaalsed sisend/väljundid ====== 
  
-===== 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 209: Line 185:
  
 </code> </code>
 +
 +===== Task #3.1 =====
 +
 +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 Andurid ja LCD ======+====== Example Sensors and LCD ======
  
-===== Näide #4.1 Temperatuuri andur koos matemaatika teegiga =====+===== 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 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 #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 =====
  
 <code c> <code c>
Line 338: Line 325:
 </code> </code>
  
-====== Näide #5.2 Potentsiomeetriga juhitav servomootor ======+===== Näide #5.2 Potentsiomeetriga juhitav servomootor =====
  
 <code c> <code c>
Line 366: Line 353:
 </code> </code>
  
 +===== Harjutus #5.1 =====
 +Luua programm, mis võimaldab servomootori positsiooni muuta vastavalt analoog kaugusanduri väärtusele (kasutada map funktsiooni).
 +
 +===== Harjutus #5.2 =====
 +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 ======
Line 374: Line 366:
 <code c> <code c>
 /* /*
-Nimetus: Näide #4.1 Jadaliides+Nimetus: Näide #6.1 Jadaliides
 */ */
 #include <math.h> #include <math.h>
Line 415: Line 407:
 </code> </code>
  
-===== Harjutus #4.1 =====+===== Harjutus #=====
  
-Luua programm, mis võimaldab servomootori positsiooni muuta vastavalt nuppudega seadistatud suurusele. +Luua programm, mis jadaliidesest saadetud teksti kirjutaks LCD ekraanileMärk „+“ vahetab rida ning märk „-“ kustutab kogu ekraani.
-===== Harjutus #4.2 =====+
  
-Luua programm, mis servomootori baasil ehitatud radariga ja fotoanduriga leiaks ruumist kõige eredama punkti. 
-===== Harjutus #5 ===== 
- 
-Luua programm, mis jadaliidesest saadetud teksti kirjutaks LCD ekraanile. Märk „+“ vahetab rida ning märk „-“ kustutab kogu ekraani. 
  
 ====== Praktiline projekt #1 ====== ====== Praktiline projekt #1 ======
en/arduino.1449741639.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