This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
en:arduino [2015/12/10 09:58] – raivo.sell | en:arduino [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 12: | Line 12: | ||
*/ | */ | ||
- | ====== Näide 1 Digitaalsed sisend/ | ||
- | ===== Näide | + | ====== References ====== |
+ | |||
+ | [[http:// | ||
+ | [[http:// | ||
+ | |||
+ | ====== Example 1 Digital I/O ====== | ||
+ | |||
+ | ===== Example | ||
<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, | + | pinMode(LED, |
- | pinMode(nupp, | + | pinMode(nupp, |
- | digitalWrite(nupp, | + | digitalWrite(nupp, |
} | } | ||
void loop(){ | void loop(){ | ||
- | NupuOlek = digitalRead(nupp); | + | NupuOlek = digitalRead(nupp); |
- | if (NupuOlek == HIGH) { // Kui nupu olek on kõrge | + | if (NupuOlek == HIGH) { // if button state is high (+5 V) |
- | digitalWrite(LED, | + | digitalWrite(LED, |
} | } | ||
- | else { // vastasel juhul (Maa) | + | else { // if button state is not high (GND) |
- | digitalWrite(LED, | + | digitalWrite(LED, |
} | } | ||
} | } | ||
</ | </ | ||
- | ===== Näide | + | ===== Example |
<code c> | <code c> | ||
- | // Algus identne näitega | + | // First part of code copy from example |
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, | + | digitalWrite(LED, |
- | delay(1000); | + | delay(1000); |
} | } | ||
- | digitalWrite(LED, | + | digitalWrite(LED, |
} | } | ||
</ | </ | ||
- | ===== Näide | + | ===== Example |
<code c> | <code c> | ||
- | // Algus identne näitega | + | // First part of code copy from example |
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, | + | digitalWrite(LED, |
} | } | ||
} | } | ||
</ | </ | ||
- | ===== Harjutus | + | ===== 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 | + | /*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 | + | ===== Example |
<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 // | + | // 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 | + | 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, | + | pinMode(led, |
} | } | ||
void loop() { | void loop() { | ||
- | pote = analogRead(pote_sisend); | + | pote = analogRead(pote_sisend); |
- | // kui väärtus | + | // if value is greater than threshold then turn on LED |
if (pote> | if (pote> | ||
- | else digitalWrite(led, | + | else digitalWrite(led, |
} | } | ||
</ | </ | ||
- | ===== Näide | + | ===== Example |
<code c> | <code c> | ||
- | /* | ||
- | Nimetus: Näide #2.2 Analoog sisendi teisendamine ajaks | ||
- | Kirjeldus: Programm demonstreerib analoogsisendi kasutamist | ||
- | Autor: David Cuartielles | ||
- | Täiendused: | ||
- | Kohandused: Raivo Sell | ||
- | OriginaalURL: | ||
- | */ | ||
- | int pote_sisend = A1; // määrame potentsiomeetri sisendviigu | + | int pote_sisend = A0; // set potentiometer pin |
- | int led = A5; // määrame | + | 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, | + | pinMode(led, |
} | } | ||
void loop() { | void loop() { | ||
- | pote = analogRead(pote_sisend); | + | pote = analogRead(pote_sisend); |
- | digitalWrite(led, | + | digitalWrite(led, |
- | delay(pote); | + | delay(pote); |
- | digitalWrite(led, | + | digitalWrite(led, |
- | delay(pote); | + | delay(pote); |
} | } | ||
</ | </ | ||
- | ===== Harjutus | + | ===== 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 | + | Connect LCD shield to Arduino board. Before attaching remove all connections from the board. |
+ | |||
+ | ===== Example | ||
<code c> | <code c> | ||
- | /* | ||
- | Nimetus: Näide #3.1 LCD kasutamine | ||
- | Kirjeldus: | ||
- | Autor: Tom Igoe | ||
- | Modifikatsioon: | ||
- | Kuupäev: 4.06.2014 | ||
- | Versioon: 1.0 | ||
- | */ | ||
- | #include < | + | #include < |
- | // Initsialiseerime | + | // Initialize |
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | LiquidCrystal lcd(8, 9, 4, 5, 6, 7); | ||
void setup() { | void setup() { | ||
- | lcd.begin(16, | + | lcd.begin(16, |
- | lcd.print(" | + | lcd.print(" |
} | } | ||
void loop() { | void loop() { | ||
| | ||
- | lcd.setCursor(0, | + | lcd.setCursor(0, |
| | ||
- | lcd.print(millis()/ | + | lcd.print(millis()/ |
| | ||
} | } | ||
</ | </ | ||
- | ===== Näide | + | ===== Example |
<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: | ||
- | Kuupäev: 4.06.2014 | ||
- | Versioon: 1.0 | ||
- | */ | ||
- | #include < | + | #include < |
- | // Initsialiseerime | + | // Initialize |
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, | + | lcd.begin(16, |
- | lcd.print(" | + | lcd.print(" |
} | } | ||
void loop() { | void loop() { | ||
| | ||
- | lcd.setCursor(0, | + | lcd.setCursor(0, |
- | lcd.print(analogRead(pote_sisend)); | + | lcd.print(analogRead(pote_sisend)); |
- | lcd.print(" | + | lcd.print(" |
delay (100); | delay (100); | ||
} | } | ||
Line 209: | Line 185: | ||
</ | </ | ||
+ | |||
+ | ===== 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 | + | ===== Example |
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 0 and digital pin 10: | + | // Read the input on analog pin 2 and 3 |
- | int AnalogSensorValue = analogRead(A0); | + | int AnalogSensorValue = analogRead(A2); |
- | int DigitalSensorValue = digitalRead(10); | + | int DigitalSensorValue = digitalRead(A3); |
| | ||
Serial.println(AnalogSensorValue); | Serial.println(AnalogSensorValue); | ||
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 Servomootor | + | Disconnect the LCD shield before using motors. Before disconnecting remove all connections from shield and Arduino board. |
+ | |||
+ | ===== Näide #5.1 Servomootor ===== | ||
<code c> | <code c> | ||
Line 338: | Line 325: | ||
</ | </ | ||
- | ====== IF statement with sensor and motor ====== | + | ===== Näide #5.2 Potentsiomeetriga juhitav servomootor |
<code c> | <code c> | ||
#include < | #include < | ||
Line 365: | Line 353: | ||
</ | </ | ||
+ | ===== 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 < | #include < | ||
Line 415: | Line 407: | ||
</ | </ | ||
- | ===== Harjutus #4.1 ===== | + | ===== Harjutus #6 ===== |
- | Luua programm, mis võimaldab servomootori positsiooni muuta vastavalt nuppudega seadistatud suurusele. | + | Luua programm, mis jadaliidesest saadetud teksti kirjutaks LCD ekraanile. Mä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 ====== |