Teema 7: MOOTOR ja KAUGUSEMÕÕTMISE ANDUR

7.1 Katse Mootori 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 

 } 

} 
int switchPin = 2; // lüliti 1 

int switchPin2 = 1; // lüliti 2 

int potPin = A0; // potentsiomeeter 

int motor1Pin1 = 3; // viik 2 (L293D) 

int motor1Pin2 = 4; // viik 7 (L293D) 

int enablePin = 9; // viik 1(L293D) 

 void setup() { 

 // sisendid 

 pinMode(switchPin, INPUT); 

 pinMode(switchPin2, INPUT); 

 //väljundid 

 pinMode(motor1Pin1, OUTPUT); 

 pinMode(motor1Pin2, OUTPUT); 

 pinMode(enablePin, OUTPUT); 

} 

 void loop() { 

 //mootori kiirus 

 int motorSpeed = analogRead(potPin); 

 //aktiveeri mootor 

 if (digitalRead(switchPin2) == HIGH)

{ 

 analogWrite(enablePin, motorSpeed); 

 } 

else 

{ analogWrite(enablePin, 0); } 

 // 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.2 Katse Kauguse mõõtmise anduri kasutamine

#define ECHO_PIN 8

#define TRIG_PIN 7

void setup() {

  pinMode(ECHO_PIN, INPUT);

  pinMode(TRIG_PIN, OUTPUT);

  Serial.begin(9600);

}

void loop() {

  digitalWrite(TRIG_PIN,HIGH);

  digitalWrite(TRIG_PIN,LOW);

  int distance=pulseIn(ECHO_PIN, HIGH)/50;

  Serial.println(distance);

}

7.3 Lihtne parkimissüsteem

code:

#define ECHO_PIN 7
#define TRIG_PIN 8
int motorPin1=3;
int distance=1;
int LedPin=13;
int duration;
const int buzzerPin = 9;
void setup() {
  pinMode(ECHO_PIN, INPUT);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(motorPin1,OUTPUT);
  pinMode(LedPin,OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  Serial.begin(9600);
}
void loop() {
  digitalWrite(TRIG_PIN,LOW);
  delay(200);
  digitalWrite(TRIG_PIN,HIGH);
  delay(200);
  digitalWrite(TRIG_PIN,LOW);
  duration = pulseIn(ECHO_PIN, HIGH);
  distance=duration/58;
  Serial.println(distance);
  if (distance>50)
  {
      analogWrite(motorPin1,100);
      digitalWrite(LedPin,0);
    noTone(buzzerPin);     
      delay(1000);}  
  else
  {
    analogWrite(motorPin1,0);
      digitalWrite(LedPin,250);
       tone(buzzerPin, 1000);
  }
}

Ülesanne 7.1 Rahakarp

Koostis:

  1. Ultraheli kaugusandur, 
  2. Servo,
  3. ARDUINO UNO plaat
  4. Paber või papp,
  5. 9 juhtmed

Eesmärk: Loo automatiseeritud hoiupõrsasprojekt

Kirjeldus: Tänu liikumisandurile tuvastab hoiupõrsas liikumise ja avab servomootori abil mündipesa. Näiteks teeb ta suu lahti või ulatab käe.

skeem:

code:

#include <Servo.h>

#define ECHO_PIN 9
#define TRIG_PIN 8
int ServoPin = 11;
Servo servo;

void setup()
{
  pinMode(ECHO_PIN, INPUT); // Устанавливаем режим входа для ECHO_PIN
  pinMode(TRIG_PIN, OUTPUT); // Устанавливаем режим выхода для TRIG_PIN
  servo.attach(ServoPin); // Подключаем сервомотор к пину ServoPin
  Serial.begin(9600); // Инициализируем последовательную связь с скоростью 9600 бит/сек
  servo.write(0); // Устанавливаем сервомотор в исходное положение (0 градусов)
}

void loop()
{
  digitalWrite(TRIG_PIN, HIGH); // Посылаем импульс на TRIG_PIN
  delayMicroseconds(10); // Задержка 10 микросекунд
  digitalWrite(TRIG_PIN, LOW); // Завершаем импульс на TRIG_PIN

  int distance = pulseIn(ECHO_PIN, HIGH) / 58; // Измеряем расстояние в сантиметрах, используя длительность импульса на ECHO_PIN и деление на 58

  if (distance < 50)
  {
    servo.write(180); // Если расстояние меньше 50 см, поворачиваем сервомотор на 180 градусов
    delay(5000); // Ждем 5 секунд
    servo.write(0); // Возвращаем сервомотор в исходное положение (0 градусов)
    delay(5000); // Ждем еще 5 секунд
  }
  else if (distance > 50)
  {
    servo.write(0); // Если расстояние больше 50 см, поворачиваем сервомотор в исходное положение (0 градусов)
  }
}

Video

Kasutage liikumisandurit:

Alarmid
Kaamerad
Uksed
Parkla

Kasutanud funktsioonid:

  1. pinMode() — Määrab pinile töörežiimi (sisend või väljund) antud pinile.
  2. servo.attach() — Ühendab servo mootori antud piniga.
  3. Serial.begin() — Algatab järjestikuse suhtluse kiirusega 9600 bitti sekundis.