7.1 Robootika – Katse Mootori kasutamine

Töö kirjeldus:

Mootori keeramine

Skeem:

Kood:

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 
 
 } 
 
} 

Töö kirjeldus:

Mootori keeramine

Skeem:

Kood:

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 Robootika Katse Kauguse mõõtmise anduri kasutamine

Süsteemi Ülevaade:
Kauguse mõõtmise anduri abil saame mõõta objekti kaugust ja kuvada selle väärtuse seriaalmonitooril. See võimaldab luua aluse, mis võib reageerida erinevatele kaugusmõõtmistele.

Skeem:

Kood 1.0:

#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);
 
}

Kood 2.0:

#define ECHO_PIN 8
 
#define TRIG_PIN 7
 
void setup() {
 
  pinMode(ECHO_PIN, INPUT);
 
  pinMode(TRIG_PIN, OUTPUT);
 
  Serial.begin(960);
 
}
 
void loop() {
 
  Serial.println(measure()); 
 
}
 
int measure()
 
{
 
  digitalWrite(TRIG_PIN,HIGH);
 
  digitalWrite(TRIG_PIN,LOW);
 
  int distance=pulseIn(ECHO_PIN, HIGH,15000)/50;
 
  return constrain(distance,1,300);
 
}

7.3 Katse lihtne parkimissüsteem

Süsteemi Ülevaade:
Lihtne parkimissüsteem, mis kasutab kaugusandurit ja mootoreid, et juhendada sõidukit. Kui objekt on liiga lähedal, lülitatakse mootor välja ja aktiveeritakse LED ja häälsignaal.

Skeem:

Kood:

#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 või Prügikast. Töö paarides.

Töö kirjeldus:

Robootika – Süsteem töö on selline, liikumisandur (notsu pank) tuvastab liikumise ja avab servomootori abil mündipesa. See pöörleb 180 kraadi ja avab sel viisil notsu panga kringi. Kui kaugus on suurem kui 20 cm, naaseb servomootor algasendisse 0 kraadi.

Motori Kasutamine

Kasutatud komponendid:

  • kaugusandur
  • Servo
  • Takisti (9tk)

Skeem:

Skeem sisaldab kaugusanduri ja servomootori ühendusi Arduino plaatide külge. Kaugusanduri TRIG ja ECHO pinnd ühendatakse vastavalt Arduino digitaalsete väljundite ja sisendite külge.

Kood:

#include <Servo.h>
 
#define ECHO_PIN 9
#define TRIG_PIN 8
int ServoPin = 11;
Servo servo;
 
void setup()
{
  pinMode(ECHO_PIN, INPUT);
  pinMode(TRIG_PIN, OUTPUT); 
  servo.attach(ServoPin); 
  Serial.begin(9600);
  servo.write(0); 
}
 
void loop()
{
  digitalWrite(TRIG_PIN, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(TRIG_PIN, LOW);
  int distance = pulseIn(ECHO_PIN, HIGH) / 58; 
 
  if (distance < 50)
  {
    servo.write(180); 
    delay(5000);
    servo.write(0);
    delay(5000); // Ждем еще 5 секунд
  }
  else if (distance > 50)
  {
    servo.write(0); // Если расстояние больше 20 см, поворачиваем сервомотор в исходное положение (0 градусов)
  }
}

Video:

Projekti video näitab, kuidas süsteem töötab ja illustreerib avamise protsessi.

https://drive.google.com/drive/u/0/folders/1q0O4R97KnzTNurpSHmaj7G9Bc_DKST5P

Uued funktsioonid:

servo.attach() — Ühendab servo mootori antud piniga.

pulseIn() – Loeb pulssi (kas kõrge või madal) pin.

Servo.write() – Kirjutab servo väärtuse, kontrollides võlli vastavalt.

Kokkuvõte

Need projektid näitavad, kuidas kasutada erinevaid andureid ja mootoreid, et luua funktsionaalseid roboteid ja automaatika lahendusi. Iga projekt toob esile erinevaid komponente ja nende funktsionaalsust, aidates mõista, kuidas elektroonika ja programmeerimine töötavad koos. Kui sul on küsimusi või vajad abi, küsi julgelt!