Praktika 7 Mootor ja kaugusemõõtmise andur
7.1 Katse Mootori kasutamine
Eesmärk
Eelmises projektis kasutasime transistori, et kontrollida mootorit, millega suutsime kontrollida vaid mootori kiirust. Selles projektis võtame kasutusele H-silla, et saaksime kontrollida mootori pöörlemissuunda. Kuna tegemist on suure sammuga robotiehitusele, siis lisame skeemi lüliti, mis paneb mootori tööle, lüliti mis muudab pöörlemissuunda ja muuttakisti mootori kiiruse muutmiseks.

7.2 Katse Kauguse mõõtmise anduri kasutamine
-------------------------------------------------------------------------------------------------------------
int switchPin = 2; // lüliti 1
int motor1Pin1 = 3; // viik 2 (L293D)
int motor1Pin2 = 4; // viik 7 (L293D)
int enablePin = 9; // viik 1(L293D)
void setup() {
// sisendid
pinMode(switchPin, INPUT);
//väljundid
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
// aktiveeri mootor1
digitalWrite(enablePin, HIGH);
}
void loop() {
// kui lüliti on HIGH, siis liiguta mootorit ühes suunas:
if (digitalRead(switchPin) == HIGH)
{
digitalWrite(motor1Pin1, LOW); // viik 2 (L293D) LOW
digitalWrite(motor1Pin2, HIGH); // viik 7 (L293D) HIGH
}
// kui lüliti on LOW, siis liiguta mootorit teises suunas:
else
{ digitalWrite(motor1Pin1, HIGH); // viik 2 (L293D) HIGH
digitalWrite(motor1Pin2, LOW); // viik 7 (L293D) LOW
}
}
Ultrahelianduri HC-SR04 ühendamine Arduinoga

-------------------------------------------------------------------------------------------------------------
int switchPin = 2; // lüliti 1
int motor1Pin1 = 3; // viik 2 (L293D)
int motor1Pin2 = 4; // viik 7 (L293D)
int enablePin = 9; // viik 1(L293D)
void setup() {
// sisendid
pinMode(switchPin, INPUT);
//väljundid
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
// aktiveeri mootor1
digitalWrite(enablePin, HIGH);
}
void loop() {
// kui lüliti on HIGH, siis liiguta mootorit ühes suunas:
if (digitalRead(switchPin) == HIGH)
{
digitalWrite(motor1Pin1, LOW); // viik 2 (L293D) LOW
digitalWrite(motor1Pin2, HIGH); // viik 7 (L293D) HIGH
}
// kui lüliti on LOW, siis liiguta mootorit teises suunas:
else
{ digitalWrite(motor1Pin1, HIGH); // viik 2 (L293D) HIGH
digitalWrite(motor1Pin2, LOW); // viik 7 (L293D) LOW
}
}
7.3 Katse Lihtne parkimissüsteem
Ultraheli andur, Mootor, LED, Buzzer

#define ECHO_PIN 7 // Ultrahelianduri vastuvõtja pin
#define TRIG_PIN 8 // Ultrahelianduri saatja pin
int motorPin1 = 3; // Mootori juhtimise pin
int distance = 1; // Kauguse muutuja
int LedPin = 13; // LEDi pin
int duration; // Signaali kestuse muutuja
const int buzzerPin = 9; // Summeri (buzzer) pin
void setup() {
pinMode(ECHO_PIN, INPUT); // Vastuvõtja sisendina
pinMode(TRIG_PIN, OUTPUT); // Saatja väljundina
pinMode(motorPin1, OUTPUT); // Mootori pin väljundina
pinMode(LedPin, OUTPUT); // LEDi pin väljundina
pinMode(buzzerPin, OUTPUT); // Summeri pin väljundina
Serial.begin(9600); // Seriaalühenduse algus
}
void loop() {
digitalWrite(TRIG_PIN, LOW); // Lülita saatja välja
delay(200);
digitalWrite(TRIG_PIN, HIGH); // Lülita saatja sisse
delay(200);
digitalWrite(TRIG_PIN, LOW); // Lülita saatja välja
duration = pulseIn(ECHO_PIN, HIGH); // Mõõda tagastusaeg
distance = duration / 58; // Arvuta kaugus cm-des
Serial.println(distance); // Väljasta kaugus
if (distance > 50) { // Kui kaugus on üle 50 cm
analogWrite(motorPin1, 100); // Käivita mootor
digitalWrite(LedPin, 0); // LED kustub
noTone(buzzerPin); // Summer vaikib
delay(1000);
} else { // Kui objekt on lähemal
analogWrite(motorPin1, 0); // Mootor seiskub
digitalWrite(LedPin, 250); // LED süttib
tone(buzzerPin, 1000); // Summer teeb heli
}
}