Posted in

Teema 7

Mootorid ja H-sild L293D

Skeem:

Komponendid:

  • Arduino Uno
  • Arendusplaat
  • 9V Patarei
  • L293D
  • Nupp
  • 10 kΩ takisti
  • Mootor

Töö protsess:

Paneb mootori pöörlema ühes suunas, kui lüliti on sisse lülitatud, ja teises suunas, kui lüliti on välja lülitatud. Määrab esmalt lüliti ja mootori juhtimisviigud, seejärel aktiveerib mootori ja kontrollib pidevalt lüliti olekut.

Uuendatud

Skeem:

Uued komponendid:

  • Nupp
  • Potentsiomeeter
  • 10 kΩ takisti

Töö protsess:

See uuendatud skeem juhib mootorit kahe lüliti ja potentsiomeetriga. Esimene lüliti määrab mootori pöörlemissuuna. Teine lüliti lülitab mootori sisse või välja; kui see on sisse lülitatud, siis potentsiomeeter reguleerib mootori kiirust. Kui teine lüliti on väljas, siis mootor seisab.

Ultraheli andur

Skeem:

Komponendid:

  • Arduino Uno
  • Ultrasonic Distance Sensor

Töö protsess:

Mõõdab kaugust ultrahelianduriga. See saadab välja helisignaali, mõõdab aega, kuni kaja tagasi jõuab, ja arvutab selle põhjal kauguse objektini. Tulemus saadetakse arvutisse.

Lihtne parkimissüsteem

Skeem:

Komponendid:

  • Arduino Uno
  • Ultrasonic Distance Sensor
  • Mootor
  • LED
  • Piezo
  • 2 x 220 Ω takisti

Töö protsess:

Mõõdab ultrahelianduriga kaugust. Kui objekt on kaugel (üle 50 cm), siis mootor töötab, aga LED ja summer on välja lülitatud. Kui objekt on lähedal (50 cm või vähem), siis mootor peatub, LED süttib ja summer hakkab helisema. Kaugus saadetakse ka arvutisse.

L298N mootori draiver

Skeem:

Komponendid:

  • Arduino Uno
  • L298N
  • 2 x Mootor
  • LED
  • 9V Patarei

Töö protsess:

Juhib kahte mootorit. Esiteks paneb see mõlemad mootorid ühes suunas pöörlema, suurendades järk-järgult nende kiirust, seejärel peatab need. Pärast lühikest pausi paneb see mootorid vastupidises suunas pöörlema, taas kiirust järk-järgult suurendades, peatab need ja ootab pikemalt, enne kui tsükkel kordub. Kiiruse reguleerimiseks kasutatakse analogWrite funktsiooni ja suuna muutmiseks digitalWrite käske mootori juhtviikudele.

Ülesanne 1

Töö kirjeldus:

Loob seadme mis tuvastab ultrahelianduriga münti kontrollib servomootoriga kaane liikumist ja näitab RGB LEDiga olekut. LCD kuvab müntide arvu ja viimase mündi sisestamise aega.

Kasutatud komponendid:

  • Arduino Uno
  • Arendusplaat
  • 3 x 220 Ω takisti
  • Servo mootor
  • LCD Ekraan
  • Ultrasonic Distance Sensor
  • RGB LED

Töö protsess:

Põhitsükkel jälgib ultraheliandurit. Kui tuvastatakse objekt (eeldatavasti münt) avatakse kaas (LED muutub vastavalt) oodatakse mündi eemaldamist ja siis sulgetakse kaas (LED muutub tagasi). Mündi loendurit suurendatakse ja viimase sisestamise aeg salvestatakse. LCD ekraanil uuendatakse müntide arvu ja viimase sisestamise aega kuvades vajadusel ka hoiatust pikast ootamisest.

Skeem:

Kood:

#include <Servo.h>
#include <LiquidCrystal.h>

const int trigPin = 12, echoPin = 11;
const int servoPin = 13;
const int redPin = 6, greenPin = 4, bluePin = 5;
LiquidCrystal lcd(8, 9, 0, 1, 2, 3);
Servo lid;

unsigned long lastInsert = 0;
int coinCount = 0;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);

  lid.attach(servoPin);
  closeLid();           // alguses kaan suletud → LED punane

  lcd.begin(16, 2);
  lcd.print("Tere tulemast!");
  delay(1000);
  lcd.clear();
  lastInsert = millis();
}

void loop() {
  int dist = measureDistance();
  if (dist < 20) {
    openLid();
    waitForRemoval();
    closeLid();

    coinCount++;
    lastInsert = millis();

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Aitah muundi eest!");
    lcd.setCursor(0, 1);
    lcd.print("Mundid: ");
    lcd.print(coinCount);
    delay(1500);
    lcd.clear();
  }

  // uuendame ka ülejäänud ekraani infot
  lcd.setCursor(0, 0);
  lcd.print("Mundid: ");
  lcd.print(coinCount);
  lcd.setCursor(0, 1);
  unsigned long dt = (millis() - lastInsert) / 1000;
  if (dt > 120) {
    lcd.print("Ootan kaua... :(");
  } else {
    lcd.print("Viimati: ");
    lcd.print(dt);
    lcd.print("s");
  }
}

// Ultraheli kauguse mõõt
int measureDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long d = pulseIn(echoPin, HIGH);
  return d / 58;
}

// Avab kaane: sinine → roheline
void openLid() {
  setColor(0, 0, 255);   // sinine (liigub)
  lid.write(90);
  delay(500);            // oota, kuni servo jõuab
  setColor(0, 255, 0);   // roheline (avatu)
}

// Sulgeb kaane: sinine → punane
void closeLid() {
  setColor(0, 0, 255);   // sinine (liigub)
  lid.write(0);
  delay(500);
  setColor(255, 0, 0);   // punane (suletu)
}

void waitForRemoval() {
  while (measureDistance() < 25) {
    delay(50);
  }
}

// LED-i värvi seadmine
void setColor(int r, int g, int b) {
  analogWrite(redPin, r);
  analogWrite(greenPin, g);
  analogWrite(bluePin, b);
}

Video:

Uued funktsioonid:

pulseIn() — Mõõdab pulsi kestust (kui kaua viik on kõrge või madal).

delayMicroseconds() — Tekitab täpselt määratud aja viivituse mikrosekundites.

Ülesanne 2

Ülesanne 3

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *