This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:arduino:motors:project2 [2017/04/17 09:02] – Somepub | et:arduino:motors:project2 [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ~~PB~~ | + | < |
| ====== Projekt 6 Servomootor UH anduriga | ====== Projekt 6 Servomootor UH anduriga | ||
| - | Ühendada | + | Selles projektis tuleb ühendada |
| * Servomootor - D3 | * Servomootor - D3 | ||
| * Potentsiomeeter - A1 | * Potentsiomeeter - A1 | ||
| - | * Ultraheli | + | * Ultraheli |
| {{: | {{: | ||
| + | |||
| ===== Näide #6.1 Servomootor ja PWM signaal ===== | ===== Näide #6.1 Servomootor ja PWM signaal ===== | ||
| - | Servomootori juhtimine toimib ainult PWM signaaliga. Üldjuhul on servomootori liikumisvabadus piiratud 180 kraadi peale, kuid esineb ka püsivalt pöörlevaid (360 kraadi) servosid. Tavapärase servo puhul juhitakse PWM töötsükliga servo hoova positsiooni (nt. 0-180 kraadi). Püsivalt pöörleva servo puhul juhitakse pöörlemise kiirust. | + | Antud näiteprogrammis kasutame mikro servomootorit, |
| - | Programmi töö kujutab endast servomootori juhtimiseks vajalike seadistuste tegemist ja seejärel potentsiomeetri asendi järgi selle hoova liigutamist. Arduino analoogsisendi väärtused on vahemikus 0-1023 aga servo juhtimise funktsioon nõuab väärtusi vahemikus 0-180. Üks võimalus on analoogsisendi tulemus jagada läbi sobiva arvuga, et saada maksimaalne tulemus 180. Praktilisem lahendus on kasutada Arduino funktsiooni // | + | Programmi töö kujutab endast servomootori juhtimiseks vajalike seadistuste tegemist ja seejärel potentsiomeetri asendi järgi selle hoova liigutamist. Arduino analoogsisendi väärtused on vahemikus 0-1023 aga servo juhtimise funktsioon nõuab väärtusi vahemikus 0-180. Üks võimalus on analoogsisendi tulemus jagada läbi sobiva arvuga, et saada maksimaalne tulemus 180. Praktilisem lahendus on kasutada Arduino |
| - | Arduino //map// funktsiooni kohta saab lisaks lugeda siit: [[https:// | + | |
| + | // | ||
| + | |||
| + | Antud funktsioon võtab sisendiks esialgsed miinimum ja maksimum väärtused ning konverteerib selle muutumispiirkonna kasutaja poolt määratud muutumispiirkonnaks. Antud juhul 0-1023 teisendame vahemikuks 0-180. Arduino //map// funktsiooni kohta saab lisaks lugeda siit: [[https:// | ||
| <code c> | <code c> | ||
| Line 33: | Line 38: | ||
| void setup() | void setup() | ||
| { | { | ||
| - | // Servo objekti sidumine kindla viiguga | + | // Servo objekti sidumine kindla |
| mootor.attach(servo); | mootor.attach(servo); | ||
| } | } | ||
| + | |||
| void loop() | void loop() | ||
| { | { | ||
| Line 48: | Line 54: | ||
| </ | </ | ||
| + | < | ||
| ===== Näide #6.2 Servomootor ja kaugusandur ===== | ===== Näide #6.2 Servomootor ja kaugusandur ===== | ||
| - | Järgnevas näites | + | Järgnevas näites |
| - | Mõõtmiste sooritamisel tuleb jälgida, et mootor ei liiguks | + | |
| - | ~~PB~~ | + | Mõõtmiste sooritamisel tuleb jälgida, et mõõtmise hetkel |
| <code c> | <code c> | ||
| /* | /* | ||
| - | Nimetus: Näide #6.2 Servomootor | + | Nimetus: Näide #6.2 Radar |
| Kirjeldus: Servomootor ja kaugusandur | Kirjeldus: Servomootor ja kaugusandur | ||
| */ | */ | ||
| Line 63: | Line 70: | ||
| #include < | #include < | ||
| - | // Servo ühendusviikude | + | // Servo ja ultrahelianduri |
| - | #define MOOTOR 3 | + | #define MOOTOR 3 |
| #define TRIG A3 | #define TRIG A3 | ||
| #define ECHO A4 | #define ECHO A4 | ||
| Line 71: | Line 78: | ||
| Servo sensM; | Servo sensM; | ||
| - | // Anduri objekti tekitamine nimega sonar | + | // Anduri objekti tekitamine nimega sonar |
| - | NewPing sonar(TRIG, ECHO, 200); | + | NewPing sonar(TRIG, ECHO, 200); |
| - | void setup() | + | void setup() |
| { | { | ||
| // Servo objekti ja ühendusviigu sidumine | // Servo objekti ja ühendusviigu sidumine | ||
| Line 86: | Line 93: | ||
| { | { | ||
| + | // Jadaliidesesse selgitava teksti saatmine | ||
| Serial.print(" | Serial.print(" | ||
| - | // Tsükkel, mis teeb iga 10 kraadise servo liikumise järel | + | |
| + | | ||
| for (int i = 0; i <= 180; i += 10) | for (int i = 0; i <= 180; i += 10) | ||
| { | { | ||
| - | // Servo hoova positsiooni | + | // Servo hoova liigutamine |
| sensM.write(i); | sensM.write(i); | ||
| | | ||
| - | /* Viide, et servo jõuaks saavutada ette antud | + | // Viide, et servo jõuaks saavutada ette antud positsiooni enne uut mõõtmist |
| - | | + | |
| delay(250); | delay(250); | ||
| | | ||
| - | // Uue mõõtmise võtmine | + | // Uus kaugus mõõtmine |
| Serial.print(sonar.ping_cm()); | Serial.print(sonar.ping_cm()); | ||
| Serial.print(", | Serial.print(", | ||
| } | } | ||
| - | | + | |
| + | | ||
| sensM.write(0); | sensM.write(0); | ||
| | | ||
| Line 111: | Line 120: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| ===== Harjutused ===== | ===== Harjutused ===== | ||
| ==== Harjutus 6.1 ==== | ==== Harjutus 6.1 ==== | ||
| Line 116: | Line 126: | ||
| ==== Harjutus 6.2 ==== | ==== Harjutus 6.2 ==== | ||
| - | Modifitseerida näiteprogrammi nii, et pärast igat skanneerimistsüklit | + | Modifitseerida näiteprogrammi nii, et pärast igat skaneerimistsüklit |