Differences

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

Link to this comparison view

Next revision
Previous revision
et:arduino [2015/12/10 10:07] – tekitatud raivo.sellet:arduino [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 6: Line 6:
  
 {{:koolitused:i_p_arduino_koolirobootikas_2015.pdf|Koolitusmaterjal - Loeng}} {{:koolitused:i_p_arduino_koolirobootikas_2015.pdf|Koolitusmaterjal - Loeng}}
- 
  
 English: English:
 {{:koolitused:c_robotics.pdf|Robotics and Didactics}}    {{:koolitused:c2_arduino.pdf|Arduino programming}} {{:koolitused:c_robotics.pdf|Robotics and Didactics}}    {{:koolitused:c2_arduino.pdf|Arduino programming}}
 */ */
 +====== Viited ======
 +
 +[[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 analoog andur]]
  
 ====== Näide 1 Digitaalsed I/O ====== ====== Näide 1 Digitaalsed I/O ======
Line 37: Line 40:
 void loop(){ void loop(){
   NupuOlek = digitalRead(nupp); // salvestame muutujasse nupu hetke väärtuse   NupuOlek = digitalRead(nupp); // salvestame muutujasse nupu hetke väärtuse
-  if (NupuOlek == HIGH) { // Kui nupu olek on kõrge (+5 V)  +  if (NupuOlek == LOW) { // Kui nupu on alla vajutatud 
-    digitalWrite(LED, LOW); // kustutame LED-i +    digitalWrite(LED, HIGH); // süütame LED-i
   }    } 
-  else { // vastasel juhul (Maa)  +  else { // vastasel juhul  
-    digitalWrite(LED, HIGH); // süütame LED-i +    digitalWrite(LED, LOW); //  kustutame LED-i 
   }   }
 } }
Line 75: Line 78:
  
 Modifitseerida näiteprogrammi nii, et nupule vajutades hakkab LED konstantselt vilkuma 1 sekundilise intervalliga ja teine nupule vajutus katkestab vilkumise. 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 ====== ====== Näide #2 Analoog sisendid ======
Line 92: Line 94:
 const int nivoo = 512;  const int nivoo = 512; 
  
-int pote_sisend = A1; // määrame potentsiomeetri sisendviigu +int pote_sisend = A0; // määrame potentsiomeetri sisendviigu 
-int led = A5; // määrame LED ühendusviigu+int led = 13; // määrame LED ühendusviigu
 int pote = 0; // muutuja potentsiomeetri väärtuse salvestamiseks int pote = 0; // muutuja potentsiomeetri väärtuse salvestamiseks
  
Line 121: Line 123:
 */ */
  
-int pote_sisend = A1; // määrame potentsiomeetri sisendviigu +int pote_sisend = A0; // määrame potentsiomeetri sisendviigu 
-int led = A5; // määrame LED ühendusviigu +int led = 13; // määrame LED ühendusviigu 
 int pote = 0; // muutuja potentsiomeetri väärtuse salvestamiseks int pote = 0; // muutuja potentsiomeetri väärtuse salvestamiseks
  
Line 139: Line 141:
 ===== Harjutus #2 ===== ===== Harjutus #2 =====
  
-Modifitseerida näiteprogrammi nii, et potentsiomeetriga määratakse LED-i heledus, kasutades selleks delay funktsioone.+Modifitseerida näiteprogrammi nii, et potentsiomeetriga määratakse LED-i heledus, kasutades selleks delayMicroseconds() funktsioone.
  
 ====== Näide #3 LCD ====== ====== Näide #3 LCD ======
 +
 +Ühendada Arduino plaadiga LCD laiendusplaat. Selleks esmalt eemaldada USB kaabel ja ühendada lahti kõik muud ühendused, mis ette jäävad.
  
 ===== Näide #3.1 LCD kasutamine ===== ===== Näide #3.1 LCD kasutamine =====
Line 210: Line 214:
 </code> </code>
  
 +
 +===== Harjutus #3.1 =====
 +Koostada programm, mis trükib potentsiomeetri väärtuse rea algusesse. Vajutades nupule vahetatakse rida ja jooksev väärtus kirjutatakse uuele reale. Vajutades uuesti nuppu vahetatakse aktiivse kirjutamise rida tagasi.
  
 ====== Näide 4 Andurid ja LCD ====== ====== Näide 4 Andurid ja LCD ======
Line 238: Line 245:
 // 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; // määrame temperatuurianduri (termistori) sisendviigu
  
 void setup() { void setup() {
Line 297: Line 304:
 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); //Sharp analoog kaugusandur 
-  int DigitalSensorValue = digitalRead(10);+  int DigitalSensorValue = digitalRead(A3); //Digtaalne lähedusandur
      
   Serial.println(AnalogSensorValue); // Print out the analog value   Serial.println(AnalogSensorValue); // Print out the analog value
Line 310: Line 317:
  
 ===== 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 ületamisel käivitatakse täiturmehhanism (milleks on LED).\\ 
 +**Lisaülesanne:**  
 +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 sellestkui palju nivootemperatuuri ületati (1 kraad: heledus 25 %, 2 kraadi: heledus 50 %, 3 kraadi: heledus 75 % ja 5 kraadi: heledus 10+Modifitseerida kaugusandurite lugemise programmi nii, et andurite info kuvatakse LCD ekraanile ja ühikuteks on sentimeetrid (+-5cm täpsus). Kui pole võimalust mõõtevahendit kasutadasiis kasutada anduri andmelehe graafikut.
  
 ====== Näide #5 Mootor ====== ====== Näide #5 Mootor ======
 +
 +Servomootorite kasutamiseks eemaldada Arduino pealt LCD laiendusplaat. Selleks esmalt ühendada lahti USB kaabel ja andurid ning seejärel ettevaatlikult tõmmata kaks plaati lahti.
  
 ===== Näide #5.1 Servomootor ===== ===== Näide #5.1 Servomootor =====
Line 368: Line 379:
  
 ===== 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).
  
  
Line 440: Line 451:
  
 Protokollis tähistab „x“ kohaliku seadme numbrit, mille annab juhendaja igale tiimile erineva. Protokollis tähistab „x“ kohaliku seadme numbrit, mille annab juhendaja igale tiimile erineva.
 +
 +
 +===== Lihtne roboti navigatsioon =====
 +
 +<code c>
 +#include <Servo.h> 
 +Servo right_motor,left_motor;  // create servo object to control a servo 
 + 
 +void setup() 
 +
 +  // Viktoriiniküsimus - mida see plokk teeb?
 +  digitalWrite(9, HIGH); // lülitame sisemised pullup takistid sisse
 +  while (digitalRead(9)==1){}; 
 +  
 +  right_motor.attach(11);  // Attaches the servo on pin 11 
 +  left_motor.attach(12);  // Attaches the servo on pin 12
 +
 + 
 +void loop() 
 +
 + 
 +  // Compare it with reference
 +  if (digitalRead(10)==0) { // If TRUE
 +     left_motor.write(0);  // Reverse one motor
 +     delay(750); // Wait until turn is enough
 +   }
 +    right_motor.write(0);    // Drive forward
 +    left_motor.write(180);   // Drive forward
 +
 +
 +
 +</code>
et/arduino.1449742070.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